内容简介
《企业级编程与控制理论》包含四个部分和一个附录。第Ⅰ部分“基础篇”讲述了为什么需要反馈控制,反馈系统和企业级编程的关系,系统的动态特性,控制器,识别输入输出信号灯。第Ⅱ部分“实践篇”回顾了理论,介绍了测量传递韩澍,PID控制调整,实现以及通用的反馈架构。第Ⅲ部分“案例研究篇”包含控制系统模拟、高速缓存命中率、广告推送、扩展服务器、队列控制、冷却风扇速度、控制游戏引擎的内存消耗等内容。第Ⅳ部分再次回到理论,帮助读者建立实践与理论的联系,掌握控制理论在企业级编程中的实际应用。
《企业级编程与控制理论》适合具有一定编程基础并关注性能提升的读者阅读。
前言
这本书的主题是关于反馈控制技术的,但是没有多少编程人员(包括其他有关人员)了解这方面的知识。这是很遗憾的,因为反馈控制技术最初的产生是为了解决软件工程师们很熟悉的问题,特别是与企业系统打交道的工程师们需要了解。反馈控制是一种技术,旨在确保大型复杂系统能够稳定地运行,甚至在有外部干扰的情况下也不会受到影响,确保有效地使用有限的资源。
如果你正在寻找这样一种系统:当数据中心的数据流量出现大的跳跃时,需要增加服务器的数量,而在这个突发事件过去之后需要减少服务器的数量,那么这本书将为你提供很好的解决方案。
什么是反馈?
反馈的原理是不断地对系统的实际行为与期望行为进行比较,如果实际行为不同于期望的行为,就需要采取纠正措施来减少偏差,将系统带回到理想状态。只要该系统还在运行,反馈过程就会不断地重复下去。
反馈控制一个很有用的功能就是不需要对被控制的系统有太多的了解。当系统出现偏差时,只要我们知道哪个方向可以调回系统,就可以建立一个反馈循环。因此,反馈是一种控制大型的、复杂的、不透明系统的最有效的技术。
另外,反馈系统具有自我调节的功能,甚至有外部干扰出现时也不受影响。由于系统的行为总是处于监视和调整中,所以,反馈系统会自动对操作状态中出现的变化进行响应。所以,当流量拥挤时,系统不需要设置专门的设施来激活额外的服务器:反馈控制器会通知负荷增加,并且增加服务器的数量直到满足所需的服务质量要求。同样,一旦流量峰值过后,控制器会根据负荷减少程度,相应地再次减少服务器的数量。
但是我们也要小心,因为太大的控制调整或者在时机不当的调整,都会造成“过量”的控制干扰。这样的控制非但不能减少期望行为和实际行为之间的偏差,反而造成以相反方向的偏差来代替现有方向的偏差。在最坏的情况下,这些偏差的幅度会逐步增长,直到系统出现错误,甚至崩溃!
为了避免出现这样的后果,控制理论制定出一种专门的实验来分析系统的行为。从这些实验中得到的结果可以用于设计和调整循环控制,使得这些循环操作更安全,同时将准确稳定地跟踪参考值。
为什么写这本书?
反馈控制在电子学、工业流程和车辆工程领域的应用有很长的成功历史,但它的应用不限于此。反馈是自我调节的,所以即使条件意外改变,它也能够保证系统运作正常。反馈只要求对受控流程有个基本的了解,因此它可以应用在复杂和不透明的系统状况下,例如企业环境下的那些典型系统。
在这本书里,我们将研究如何把反馈原理应用到几个软件工程问题上,例如,高速缓存的最佳容量、服务器群的管理、等待队列或高速缓存的控制等。所有这些例子都向我们展示了一点,在不断变化的条件下,反馈可以帮助我们有效地使用稀缺或昂贵的资源。
然而,把反馈原理应用到计算机系统会遇到与传统应用领域不同的问题。描述计算机系统行为的规则比起现实世界系统的规则限制要少得多,所以我们会更多依赖于实际测量和现象学描述,而较少地依赖于理论分析(你会发现工业流程应用反馈方法时有着相似的情况)。同时比起物理组件来,计算机系统提供了大量控制信号,我们有更大的自由度选择最佳控制信号,当然必须了解有关的限制和折中。我们将特别关注这些问题。
由于在软件系统设计理念中很少有人讨论反馈控制,我希望人们能够意识到,反馈控制在这个方面会有很多的潜力,事实上,软件工程师通常遇到的许多问题,都可以在反馈控制上找到正确的解决方案。
如何阅读这本书?
外行人学习反馈相关理论可能会有些困难。教科书和科技文章使用了专门的术语和从现有应用领域选出的例子,这些内容有的时候掩盖了基本的概念。出现在典型反馈应用领域的问题不一定是编程人员最感兴趣的问题。同时也应该知道,许多有关反馈控制的教科书最关心底层控制理论的数学推演,而很少关注概念开发或具体实现。
这本书采用了不同的方法。理论研究可能很重要,很精彩,但不是本书的重点,我已经把这部分内容放在本书后面的第Ⅴ部分中。第Ⅰ部分简单介绍了反馈控制、系统动态和控制器设计。第Ⅱ部分描述了实现和调节控制器的大量实用技术,同时讨论了一些反馈循环“设计模型”的例子。第Ⅲ部分搜集了一组典型案例的研究,来介绍如何使用反馈方法解决计算机系统的专门问题。在每一个案例分析中,详细讨论了许多不同的方法及其折中方案。
案例研究是这本书的重头戏。我建议从第Ⅰ部分开始阅读,熟悉基本的反馈概念。然后看一下案例研究,如果需要其他的信息可以跳到第Ⅱ部分(实践篇)和第Ⅳ部分(理论篇),案例研究的顺序大体上是按照复杂度的增加来排列的。
所有案例研究都实现了计算机模拟,在这本书的互联网站上可以找到这些程序。这些程序有意写得简单和直接,以便可以容易地扩展和修改程序。动手尝试模拟代码是最好的学习方法,发现闭环系统有时会出现的神奇表现,从而真正意识到这种反馈技术确实很酷!
使用本书的约定
本书使用了下列的印刷约定。
斜体字符
代表新的术语、URL、电子邮件地址、文件名以及文件的扩展名。
固定宽度字符
用于程序列表或者段落中的程序元素,例如变量、函数名、数据库、数据类型、环境变量、语句和关键词。
黑体固定宽度字符
表明用户应该输入的命令或其他文字。
斜体固定宽度字符
展示临时文字,它需要替换为用户提供的数值,或者被上下文确定的数值。
这个图标表示小经验、建议或一般说明。
这个图标表示注意或警告。
使用代码示例
这本书的目的是帮助你完成任务的。一般情况下,如果这本书有代码例子,你可以在你的程序和文档中使用该代码。除非重新产生本书的大部分代码,否则不需要联系我们以获得使用权。例如,写的程序使用了这本书的几段代码,不需要获得使用权。销售或者分发有O’Reilly书中例子的CD-ROM是需要申请使用权的。在回答问题时提到这本书或引用代码的例子是不需要批准的。把这本书例子中的大部分代码集成到产品文档中是需要申请使用权的。
我们建议但不要求标明著作权。著作权通常包括标题、作者、出版商和ISBN。例如,“Feedback Control for Computer Systems by Philipp K. Janert(O’Reilly). Copyright 2014 Philipp K. Janert, 978-1-449-36169-3”。
如果感到你使用代码例子的方式不属于正常的使用范围,或者不符合前面提到的使用权规定,请联系我们,电子邮箱地址是 permissions@oreilly.com。
Safari在线
Safari在线(www.safaribooksonline.com)是一家按需服务的数字图书馆,以图书的方式或者视频的方式提供世界技术和商业领域里顶级作者所写的专业内容。
技术专业人士、软件开发人员、互联网设计者、商业和创新专业人士使用Safari在线作为主要的资源,进行研究、解决问题、学习和认证培训。
Safari在线为机构、政府部门和个人提供了一系列产品组合和价格方案。用户可以完全搜索数据库,访问上千种书籍、培训视频和出版前的手稿,内容来自许多出版机构O’Reilly Media,Prentice Hall Professional,Addision-Wesley Professional,Microsoft Press,Sams,Que,Peachpit Press,Focal Press,Cisco Press,John Wiley & Sons,Syngress,Morgan Kaufmann,IBM Redbooks,Packt,Adobe Press,FT Press,Apress,Manning,New Riders,McGraw-Hill,Jones & Bartlett,Course Technology等。有关Safari在线的更多信息,可以访问我们的网站。
如何联系我们?
请把你对本书的意见和疑问发给出版社:
美国:
O’Reilly Media, Inc.
1005 Gravenstein Highway North
Sebastopol, CA 95472
中国:
北京市西城区西直门南大街2号成铭大厦C座807室(100035)
奥莱利技术咨询(北京)有限公司
我们还有一个服务于本书的网站。那里有示例的列表以及未来版本的计划。点击http://bit.ly/feedback-control了解这些信息。
评论或是询问这本书技术相关的问题,请发送邮件到bookquestions@oreilly.com。
关于本书、课程、会议以及新闻,请访问我们的网站:http://www.oreilly.com
在FaceBook上找到我们:http://facebook.com/oreilly
在Twitter上关注我们:http://twitter.com/oreillymedia
在YouTube上观看我们:http://www.youtube.com/oreillymedia
目录
第Ⅰ部分 基础篇
第1章 为什么需要反馈 3
实际的例子 4
希望最好的情况 5
建立控制 7
累加偏差 7
小结 8
模拟程序 9
第2章 反馈系统 13
系统和信号 14
跟踪误差和矫正行动 15
稳定性、性能和准确性 16
设定值 18
不确定性和变化 19
反馈和前馈 19
反馈和企业系统 20
模拟代码 20
第3章 系统动态特性 23
滞后和延迟 23
强制反应和自然反应 25
瞬时响应和稳态响应 25
物理世界和虚拟世界的动态特性 26
动态特性和记忆 27
反馈循环的滞后和延迟的重要性 28
避免延迟 29
理论和实践 30
模拟代码 30
第4章 控制器 33
方框图 34
开关控制 34
比例控制 35
为什么比例控制还不够 35
积分控制 36
积分控制改变动态特性 37
积分控制可以产生恒定的偏移量 37
微分控制 38
微分控制的问题 39
三项PID控制器 39
模拟代码 40
第5章 识别输入输出信号 41
控制的输入和输出 41
输入/输出关系的方向性 42
例子 43
热控制1:加热 43
高速缓存 45
服务器扩展 46
通过动态标价控制供需关系 48
热控制2:冷却 50
选择控制信号的标准 51
用于控制输入 51
用于控制输出 51
关于多维系统的注释 52
第6章 回顾和展望 55
反馈概念 55
迭代 55
过程知识 55
避免不稳定性 56
设定值 56
控制,不是最优化 56
第Ⅱ部分 实践篇
第7章 理论预习 59
频率表示 59
传递函数 59
方框图代数 60
PID控制器 60
传递函数的极点 61
过程模型 62
第8章 测量传递函数 63
静态输入/输出关系:过程特征 63
实际考虑 64
阶梯输入的动态反应:过程反应曲线 65
实践方面 66
过程模型 66
自我调节过程 67
累积过程 68
带有振荡的自我调节过程 70
非最小相位系统 71
系统识别的其他方法 72
第9章 PID 控制调整 73
调整的目的 73
控制器参数变化的一般影响 75
齐格勒·尼科尔斯调整方法 76
半分析调整方法 77
实践方面 78
仔细研究控制器调整公式 79
第10章 实现问题 81
执行器饱和与积分器暂停 81
防止积分器暂停 82
设定值变化和积分器预加载 82
平滑微分项影响 83
选择抽样间隔 83
PID控制器的替代形式 84
增量形式 85
误差反馈与输出反馈 85
通用线性数字控制器 86
非线性控制器 87
误差平方和间隙控制器 87
模拟浮点输出 88
分类输出 88
第11章 通用反馈架构 91
改变运行条件:增益调度 92
轻度非线性系统的增益调度 93
强干扰:前馈 93
快-慢动态特性:嵌套或“级联”控制 94
具有延迟的系统:史密斯预报器 95
第Ⅲ部分 案例研究篇
第12章 通过模拟探索控制系统 99
案例研究 99
建模时间 100
控制时间 101
模拟时间 101
模拟框架 102
组件 103
对象和系统 103
控制器 103
执行器和过滤器 105
标准循环的便利函数 106
产生图形输出 108
第13章 案例研究:高速缓存命中率 109
定义组件 109
制造缺陷引起的缓存失效 111
测量系统特性 112
控制器调整 114
模拟代码 116
第14章 案例研究:广告推送 121
场景 121
测量系统特性 122
建立控制 123
改进性能 124
类型变换 127
累计目标 127
增益时间调度 128
积分器的预加载 128
周末效应 128
模拟代码 128
第15章 案例研究:扩展服务器 131
场景 131
测量和调节 132
用非标准控制器达到100% 133
处理延迟 136
模拟代码 137
第16章 案例研究:等待队列的控制 141
队列和缓存的机理 141
结构 142
设置和调整 142
救援情况的微分控制 145
控制器替代方案 146
模拟代码 147
第17章 案例研究:冷却风扇速度 149
场景 149
模型 149
调整和服役 151
封闭回路性能 152
模拟代码 153
第18章 案例研究:控制游戏引擎内存消耗 157
场景 157
问题分析 158
架构选择 159
非传统循环结构 159
具有对数的传统循环 159
结果 161
模拟代码 162
第19章 案例研究的总结 165
简单的控制器,简单的循环 165
测量和调整 165
保持控制 166
处理噪音 166
第Ⅳ部分 理论篇
第20章 传递函数 171
微分方程 171
拉普拉斯变换 171
拉普拉斯变换的属性 173
用拉普拉斯变换解微分方程 174
工作的例子 174
传递函数 175
工作的例子:阶梯响应 176
工作的例子:斜坡输入 177
谐波振荡器 177
如果不知道微分方程? 178
第21章 方框图代数和反馈公式 179
组合系统 179
反馈方程 180
反馈方程的另一种推导 182
方框图代数 182
传递函数方法的限制和重要性 183
第22章 PID 控制器 185
PID控制器的传递函数 185
PID控制器的典型形式 186
通用控制器 186
重新审视比例控制的稳定偏差 187
工作的例子 188
第23章 极点和零点 189
传递函数的结构 189
极点和零点的影响 190
特殊情况和其他细节 191
极点位置和响应模型 193
主导极点 193
极点的配置 195
如何处理延迟 195
第24章 根轨迹技术 197
造根轨迹图 197
根轨迹或埃文斯规则 198
角度和幅度标准 200
实际问题 201
例子 201
P控制器的简单滞后 202
PI控制器的简单滞后 203
第25章 频率响应和波特图 207
频率响应 207
物理世界中的频率响应 207
传递函数的频率响应 208
工作的例子 209
波特图 210
边缘稳定性标准 212
其他图形技术 213
第26章 本书主题拓展 215
离散时间建模和z变换 215
状态-空间方法 216
稳健控制 218
优化控制 219
数学控制理论 220
附 录
附录A 词汇表 223
附录B 用Gnuplot绘制图形 233
附录C 复数 237
附录D 深入阅读 241