用户指南
RISKOptimizer
Microsoft Excel 的模拟
最优化程序
第 5.7 版
2010 年 7 月
Palisade Corporation
798 Cascadilla St.
Ithaca, NY 14850
USA
+1-607-277-8000
+1-607-277-8001(传真)
http://www.palisade.com(网站)
sales@palisade.com(电子邮件)
版权通告
版权所有 © 2010, Palisade Corporation 。
商标确认
Microsoft、 Excel 和 Windows 是 Microsoft Corporation 的注册商标。
IBM 是 International Business Machines, Inc. 的注册商标。
Palisade、 RISKOptimizer、 TopRank、 BestFit 和 RISKview 是 Palisade Corporation 的
注册商标。
RISK 是 Tonka Corporation 分部 Parker Brothers 的商标,须获得许可才能使用。
目录
第一章:简介 1
简介.......................................................................................................3
安装说明................................................................................................9
第二章:背景知识 13
什么是 RISKOptimizer ? ...................................................................15
传统最优化与模拟最优化 ....................................................................21
第三章:RISKOptimizer 分步介绍 27
简介.....................................................................................................29
RISKOptimizer 教程 ..........................................................................31
第四章:应用示例 51
简介.....................................................................................................53
预算分配..............................................................................................55
能力规划..............................................................................................57
课程安排程序 ......................................................................................59
期货对冲..............................................................................................61
加工车间日程安排 ...............................................................................63
投资组合平衡 ......................................................................................65
投资组合..............................................................................................67
目录 i
投资组合风险......................................................................................69
推销员问题 .........................................................................................71
收益管理 .............................................................................................73
第五章:RISKOptimizer 参考指南 75
模型定义命令......................................................................................77
“最优化设置 ”命令 — “常规 ”选项卡............................................. 97
“最优化设置 ”命令 — “运行时间 ”选项卡...................................... 99
“最优化设置 ”命令 — “视图 ”选项卡...........................................103
“最优化设置 ”命令 — “宏 ”选项卡...............................................105
“开始最优化 ”命令.........................................................................107
“实用工具 ”命令.............................................................................109
RISKOptimizer 观察器 ....................................................................113
第六章:最优化 123
简介 .................................................................................................. 125
最优化方法 .......................................................................................125
有关登山算法....................................................................................127
Excel Solver.................................................................................... 129
问题类型 ...........................................................................................131
第七章:遗传算法 135
简介 .................................................................................................. 137
历史 .................................................................................................. 137
生物示例 ...........................................................................................139
ii
数字示例............................................................................................141
第八章:模拟和风险分析 145
简介...................................................................................................147
什么是风险? ....................................................................................147
在 RISKOptimizer 中为不确定因素建立模型 ...................................151
使用模拟方法分析模型......................................................................153
第九章:RISKOptimizer 附加说明 155
添加约束条件 ....................................................................................157
提高速度............................................................................................165
如何执行 RISKOptimizer 的最优化..................................................167
附录 A :RISKOptimizer 自动化 169
VBA ..................................................................................................169
附录 B :故障排除/ 问与答 171
故障排除/ 问与答................................................................................171
附录 C :其他资源 173
其他学习资源 ....................................................................................173
词汇 179
索引 185
目录 iii
iv
第一章:简介
简介.......................................................................................................3
为什么需要 RISKOptimizer ?................................................................3
传统最优化问题............................................................................3
不确定模型的最优化 ....................................................................4
建立不确定因素的模型 ................................................................4
使用模拟方法最优化 ....................................................................4
模拟结果........................................................................................5
使用 RISKOptimizer 的自定义应用程序 .....................................5
使用 RISKOptimizer 模拟最优化的实际应用 .........................5
开始之前 .....................................................................................................6
软件包内装物品..........................................................................................6
本版本简介..................................................................................................6
在您的操作环境中使用..............................................................................6
如果需要获得帮助......................................................................................6
打电话之前....................................................................................7
与 Palisade 联系...........................................................................7
学生版............................................................................................8
RISKOptimizer 系统要求........................................................................8
安装说明................................................................................................9
一般安装说明..............................................................................................9
从计算机上移除 RISKOptimizer ..............................................9
DecisionTools Suite.................................................................................9
设置 RISKOptimizer 图标或快捷方式.................................................10
启动时的宏安全警告消息........................................................................10
其他有关 RISKOptimizer 的信息.........................................................11
RISKOptimizer Readme .........................................................11
RISKOptimizer 教程 ................................................................11
学习 RISKOptimizer..............................................................................11
第一章:简介 1
2
简介
RISKOptimizer 将模拟和最优化功能进行了结合,可以对包含不确定因
素的模型进行最优化。通过应用功能强大的基于遗传算法的最优化方法
和蒙特卡罗模拟,RISKOptimizer 能够找到标准线性和非线性优化程序
“无法解决”问题的优化解法。RISKOptimizer 结合了 @RISK 的模拟
技术、Palisade 的风险分析插件,以及 Palisade 基于遗传算法的求解
程序 Evolver 。熟悉 @RISK 以及 Evolver 或 Excel 内建 Solver 的用户
应当能够轻松使用 RISKOptimizer 。
传统最优化问题
您正在阅读的《RISKOptimizer 用户指南
介、RISKOptimizer 工作原理以及 RISKOptimizer 的独特遗传算法和
模拟技术的几个应用示例。本套手册也可以用作完整索引的参考指南,
其中包含有关每种 RISKOptimizer 功能的说明和实例。
》提供 RISKOptimizer 简
为什么需要 RISKOptimizer ?
RISKOptimizer 使一系列新问题的最优化成为可能。当问题包含的变量
在您的控制范围之外,并且其值未知时,您可以使用 RISKOptimizer
查找优化解法。在模型中输入不确定因素的可能值范围时,目前使用的
诸如 Solver (一款 Excel 随附的线性和非线性优化程序)和 Evolver
(一款由 Palisade Corporation 开发的基于遗传算法的优化程序)之类
的优化程序无法找到优化解法。
使用 Solver 或 Evolver 进行分析且基于 Excel 的传统最优化问题包括:
• 您希望最小化或最大化的输出项或“目标”单元格
• 您能够控制其值的一组输入项或“可调整单元格”
• 一组需要符合的约束条件,此类约束条件通常使用诸如 COSTS<100
或 A11>=0 之类的表达式指定。
在 Solver 或 Evolver 内进行最优化的过程中,可调整单元格在您指定
的整个允许范围内变化。针对每组可能的可调整单元格值重新计算模
型,并且会生成一个新的目标单元格值。最优化完成后,会找到一个优
化解法(或可调整单元格值的组合)。此解法是生成目标单元格最佳
(即最小或最大)值,同时符合您输入的约束条件的可调整单元格值的
组合。
第一章:简介 3
不确定模型的最
优化
但是,如果模型含有不确定因素,Solver 和 Evolver 均无法生成优化解
法。过去,很多最优化模型只是忽略不确定因素,使模型不切实际,但
却可以进行优化。如果使用模拟方法尝试寻找优化值,则会采用“强
力”方法,用迭代方法搜索可能的可调整单元格值。这涉及运行初始模
拟、更改一个或多个值、重新运行模拟,并重复该过程,直至找到看似
是优化的解法。这是一个冗长的过程,通常如何更改从一次模拟到另一
次模拟的值也不清楚。
RISKOptimizer 可以包括模型中的不确定因素,并生成考虑不确定因素
的可靠优化解法。RISKOptimizer 利用模拟(通过 @RISK)处理模型
中存在的不确定因素,并使用遗传算法(通过 Evolver )生成可调整单
元格生成的值。这种“模拟最优化”的结果是可调整单元格值的组合,
该组合将目标单元格模拟结果的统计量最小化或最大化。例如,您可能
希望确定将目标单元格概率分布平均值最大化或标准差最小化的可调整
单元格值的组合。
建立不确定因素
的模型
使用模拟方法最
优化
为了建立不确定因素的模型,RISKOptimizer 允许您使用 @RISK 中提
供的任何概率分布函数描述任何电子表格元素的可能值。例如,电子表
格单元格中的值 10 可以用 @RISK 函数 =RiskNormal(10,2) 取代。此函
数表示该单元格的可能值用平均值 10 和标准差 2 的概率分布表示。如
同在 @RISK 中一样,可以使用诸如 RiskCorrmat 和 DepC 之类的 @RISK
函数使概率分布相关。
在进行最优化时,RISKOptimizer 为基于遗传算法的优化程序生成的每
种可能的试验解法运行完整模拟。在试验解法模拟的每次迭代中,对电
子表格中的概率分布函数进行抽样,并生成新的目标单元格值。在模拟
结束时,试验解法的结果是您希望最小化或最大化的目标单元格分布的
统计量。然后,该值返回给优化程序,遗传算法使用该值生成新的和更
好的试验解法。对于每种新的试验解法,系统会运行另一次模拟,并生
成目标统计量的另一个值。
如同在传统优化程序中一样,可以在 RISKOptimizer 中输入需要符合
的约束条件。您可以在模拟的每次迭代时(“迭代”约束条件)或在每
次模拟结束时(“模拟”约束条件)检查约束条件。迭代约束条件是典
型的传统 Solver 或 Evolver 样式的约束条件,例如 A11>1000 。模拟约
束条件是引用您指定的模型中任何单元格模拟结果分布统计量的约束条
件。典型的模拟约束条件可以是“A11
A11 的模拟结果分布平均值必须大于 1000。如同在 Evolver 中一样,
约束条件必须是严格约束条件或宽松约束条件,违反约束条件会导致试
验解法被拒绝。
的平均值
> 1000 ”或者单元格
4 简介
在运行大量模拟时,RISKOptimizer 会使用两种重要的技术,以便最小
化运行时间,并尽快生成优化解法。首先,RISKOptimizer 使用收敛监
控方法确定何时已经运行足够数量的迭代(但不得过多)。这样可以确
保目标单元格概率分布生成的统计量的稳定性,以及来自约束条件引用
输出分布的任何统计量的稳定性。其次,RISKOptimizer 使用 Evolver
的遗传算子尽快生成接近优化解法的试验解法。
模拟结果
使用
RISKOptimizer
自定义应用程序
使用
RISKOptimizer
模拟最优化的实
际应用
RISKOptimizer 随附一组模拟统计函数,可以用于直接在您的电子表格
中返回模拟结果。例如,RiskMean(
布的平均值直接返回工作表单元格或公式。此外,当您希望获得
RISKOptimizer 找到的最佳模型解法的详细图像和统计量时,在
RISKOptimizer 中建立的任何模型可以直接在 Palisade Corporation 为
Excel 设计的风险分析和模拟插件 @RISK 中进行模拟。由于
RISKOptimizer 的模拟基于 @RISK,因此在 @RISK 中进行模拟不需要
更改 RISKOptimizer 模型。
RISKOptimizer 随附一套建立使用 RISKOptimizer 功能的自定义应用
程序的完整宏语言。 RISKOptimizer 的自定义函数可以在 Visual Basic
的
for Applications (VBA) 中用于设置和运行最优化,并显示最优化的结
果。有关该编程接口的更多信息,请参见可以通过 RISKOptimizer“帮
助”菜单获取的 RISKOptimizer Developer Kit 帮助文档。
最优化不确定模型的功能可以帮助解决很多以前“无法优化的”问题。
通常,任何含有不确定因素的模型均可以通过模拟和最优化组合进行优
化,其中包括:
♦ 为具有不确定市场条件的新产品选择最佳产量和能力水平
♦ 确定具有不确定需求的最佳库存水平
♦ 将风险降至最低的资产组合配置
♦ 为产品市场具有不同的地理分布且需求水平不确定的工厂确定最佳
产品组合
单元格引用
) 将输入单元格模拟分
♦ 确定对冲买卖中期权购买的最佳水平
♦ 相同的产品按照不同的价格在不同的限制条件下进行销售的收益管理
♦ 具有不确定任务时间的日程安排
第一章:简介 5
开始之前
在安装和开始使用 RISKOptimizer 之前,请确保您的 RISKOptimizer
软件包包括所有要求的物品,并确定您的计算机是否符合适当用途的最
低要求。
软件包内装物品
RISKOptimizer 与 @RISK 正式版和 DecisionTools Suite 正式版一起提
供。除了随 Excel @RISK 正式版提供的 @RISK for Excel 文件外,
@RISK 正式版 CD-ROM 还包含 RISKOptimizer Excel 插件、几个
RISKOptimizer 示例以及完整索引的 RISKOptimizer 在线帮助系统。
DecisionTools Suite 正式版包括以上所有项目,以及附加应用程序。
本版本简介
本 RISKOptimizer 版本可以作为 Microsoft Excel 2000 或更高版本的
32 位程序安装。
在您的操作环境中使用
本《用户指南》假设您掌握了 Windows 操作系统和 Excel 的一般知
识。特别是以下知识:
♦
熟悉自己的计算机和鼠标的用法。
♦
熟悉图标、单击、双击、菜单、窗口、命令和目标等术语。
♦
理解目录结构和文件命名之类的基本概念。
如果需要获得帮助
我们向拥有有效维护计划的所有 RISKOptimizer 注册用户免费提供技
术支持,或按照每次事件收取服务费。要确保您是 RISKOptimizer 的
注册用户,请在以下网站注册:
http://www.palisade.com/support/register.asp 。
如果通过电话与我们联系,请准备好您的序列号和《用户指南》。如果您
坐在计算机前并作好准备,这将有助于我们为您提供更好的技术支持。
6 简介
打电话之前
在与技术支持部联系之前,请检查以下核对清单:
•
是否已经查阅了在线帮助?
•
是否已经查阅本《用户指南》,并查看了联机多媒体教程?
是否已经阅读
•
有关
RISKOptimizer
•
是否是能够始终重复出现的问题?是否是能够在另一台计算机或不
README.WRI
同型号的计算机上重复出现的问题?
•
是否已经在互联网上查阅了我们的网站?我们的网址为:
http://www.palisade.com
文件?该文件包含可能未纳入手册的
的最新信息。
。我们的网站还在“技术支持”部分中
提供最新常见问题解答(可搜索的技术支持问答数据库)和
RISKOptimizer
RISKOptimizer
补丁。我们建议您定期访问我们的网站,了解有关
以及其他
Palisade
软件的最新信息。
与 Palisade 联系
Palisade Corporation 欢迎您提出有关 RISKOptimizer 的问题、评论意
见或建议。请用以下任何一种方法与我们的技术支持部人员联系:
请发送电子邮件至
•
•
请在美国东部时间上午
+1-607-277-8000
•
请发送传真至
•
请寄邮件至:
Technical Support
Palisade Corporation
798 Cascadilla St.
Ithaca, NY 14850
USA
如果您希望与 Palisade 欧洲分部联系:
•
请发送电子邮件至
•
请致电
•
请发送传真至
•
请寄邮件至:
Palisade Europe
31 The Green
West Drayton
Middlesex
UB7 7PN
United Kingdom
+44 1895 425050
support@palisade.com。
9
点至下午
5
点(星期一至星期五)致电
,并按照提示接通技术支持部。
+1-607-277-8001。
support@palisade-europe.com。
(英国)。
+44 1895 425051
(英国)。
第一章:简介 7
如果您希望与 Palisade 亚太分部联系:
•
请发送电子邮件至
•
请致电
•
请发送传真至
•
请寄邮件至:
Palisade Asia-Pacific Pty Limited
Suite 404, L4,
20 Loftus Street
Sydney NSW 2000
AUSTRALIA
无论您用何种方法与我们联系,请提供产品名称、版本和序列号。请在
Excel 的 RISKOptimizer 菜单上选择“帮助”命令,查找确切的版本。
+61 2 9929 9799
support@palisade.com.au。
(澳大利亚)。
+61 2 9954 3882
(澳大利亚)。
学生版
不为 RISKOptimizer 学生版提供技术支持。如果需要获得帮助,我们
建议您采取以下替代方法:
向您的教授或助教咨询。
♦
♦
登录以下网站查找常见问题的回答:
♦
通过电子邮件或传真与我们的技术支持部联系。
http://www.palisade.com。
RISKOptimizer 系统要求
RISKOptimizer 系统要求包括:
•
配备硬盘的
• Microsoft Windows 2000 SP4
• Microsoft Excel 2000
Pentium
个人计算机或速度更快的个人计算机。
或更高版本。
或更高版本。
8 简介
安装说明
RISKOptimizer 是 Microsoft Excel 的插件程序。通过在 Excel 菜单栏
上添加命令,RISKOptimizer 可以增强电子表格程序的功能。
一般安装说明
安装程序会将 RISKOptimizer 系统文件复制到您指定的硬盘目录中
去。要在 Windows 2000 或更高版本的系统上运行安装程序:
将
1)
@RISK
的
CD-ROM
正式版或
驱动器中
DecisionTools Suite
正式版的
CD-ROM
插入您
从计算机上移除
RISKOptimizer
依次单击“开始”按钮、“设置”和“控制面板”
2)
双击“添加/删除程序”图标
3)
在“安装/卸载”选项卡上,单击“安装”按钮
4)
5)
按照屏幕上显示的“安装”说明进行安装
如果您在安装 RISKOptimizer 时遇到问题,请确认尝试安装 RISKOptimizer
的驱动器是否有足够的空间。释放足够的空间后,尝试重新运行安装
程序。
如果您希望从计算机上移除 RISKOptimizer(以及@RISK 正式版或
DecisionTools Suite 正式版),请使用控制面板的“添加/删除程序”
实用程序,并选择 @RISK 或 DecisionTools Suite 条目。
DecisionTools Suite
RISKOptimizer 可以与 Palisade Corporation 提供的一套风险与决策分
析产品 DecisionTools Suite 配合使用。RISKOptimizer 的默认安装程
序会将 RISKOptimizer 放入“Program Files\Palisade ”主目录的一个
子目录内。这与通常将 Excel 安装至“Microsoft Office ”目录的一个子
目录非常相似。
“Program Files\Palisade ”目录的一个子目录将成为 RISKOptimizer
目录(默认名称为 RISKOptimizer5 )。该目录包含 RISKOptimizer 插
件程序文件 (RISKOPT.XLA) 、模型示例以及运行 RISKOptimizer 所需
的其他文件。“Program Files\Palisade ”的另一个子目录是“SYSTEM ”
目录,该目录包含 DecisionTools Suite 中的每个程序所需的文件,包
括普通帮助文件和程序库。
第一章:简介 9
设置 RISKOptimizer 图标或快捷方式
在 Windows 中,安装程序会自动在任务栏的“程序”菜单中创建
RISKOptimizer 命令。但是,如果在安装过程中出现问题,或者希望以
后再以手动方式设置,请遵循以下说明:
单击“开始”按钮,然后将光标指向“设置”。
1)
2)
单击“任务栏”,然后单击“开始菜单”选项卡。
3)
单击“添加”,然后单击“浏览”。
4)
找到
RISKOPT.EXE
单击“下一步”,然后双击您希望显示程序的菜单。
5)
6)
键入名称“
RISKOptimizer
文件,并双击此文件。
”,然后单击“完成”。
启动时的宏安全警告消息
Microsoft Office 提供几种不同的安全设置,以防不受欢迎的或恶意的
宏在 Office 应用程序中运行。除非使用最低安全设置,否则在每次尝
试载入带有宏的文件时,系统都会显示一条警告消息。为了防止在每次
运行 Palisade 插件时显示此消息,Palisade 以数字方式在所提供的插
件文件中签名。因此,一旦将 Palisade Corporation 指定为受信任的
发布者,您就可以使用任何 Palisade 插件,而不会再显示警告消息。
要进行此操作:
• 在使用 RISKOptimizer 时,如果显示“安全报警”对话框
(例如以下对话框),请单击信任来自此发布者的所有文档。
10 安装说明
其他有关 RISKOptimizer 的信息
用户可在以下来源中查找其他有关 RISKOptimizer 的信息:
RISKOptimizer
Readme
RISKOptimizer
教程
该文件包含 RISKOptimizer 的简单总结,以及有关您的软件最新版本
的任何最新新闻或信息。要查看 Readme 文件,请选择 Windows “开
始”菜单/ “程序”/ “Palisade DecisionTools ”/ “Readmes ”,然后
单击“RISKOptimizer 5.7 – Readme ”。在使用 RISKOptimizer 之前
阅读该文件会有帮助。
RISKOptimizer 联机教程向新用户提供有关 RISKOptimizer 和遗传算
法的简介。观看该演示只需几分钟时间。请参见以下“学习
RISKOptimizer”一节中有关如何访问教程的信息。
学习 RISKOptimizer
熟悉 RISKOptimizer 的最快方法是使用 RISKOptimizer 联机教程,业
界专家会以电影格式引导您观看模型样本。本联机教程是有关
RISKOptimizer 主要功能的多媒体演示。
用户可以通过选择 RISKOptimizer “帮助”菜单的“入门教程”命
令,运行联机教程。
第一章:简介 11
12
第二章:背景知识
什么是 RISKOptimizer ? ...................................................................15
RISKOptimizer 的工作原理?..............................................................16
遗传算法......................................................................................16
概率分布和模拟..........................................................................16
什么是最优化?........................................................................................17
为什么要建立 Excel 模型? ....................................................................18
在 Exce l 模型中为不确定因素建立模型 ...............................................18
采用模拟方法解释不确定因素................................................................19
为什么要使用 RISKOptimizer ?..........................................................19
更准确、更有意义 ......................................................................19
更灵活..........................................................................................19
更便于使用..................................................................................20
传统最优化与模拟最优化 ....................................................................21
传统的电子表格最优化过程....................................................................21
模拟最优化过程........................................................................................22
RISKOptimizer 最优化分步说明..........................................................23
输入概率分布..............................................................................23
输入可调整单元格 ......................................................................24
设置最优化和模拟选项 ..............................................................24
运行最优化..................................................................................25
第二章:背景知识 13
14
什么是 RISKOptimizer ?
RISKOptimizer 软件包向用户提供查找包含不确定因素模型优化解法的
简便方法。简言之,RISKOptimizer 可以确定生成所需模拟输出项的最
佳输入项。您可以使用 RISKOptimizer 查找变量的适当搭配、顺序或
组合,使之生成最高的利润预期值、最低的利润风险(即最小方差)或
用最少量的材料生成最高商品预期值。RISKOptimizer 是一款 Microsoft
Excel 电子表格程序的插件;用户在 Excel 中建立问题的模型,然后调
用 RISKOptimizer 来解决问题。
您必须首先在 Excel 中建立问题的模型,然后在 RISKOptimizer 插件中描述问题。
Excel 为大多数用户创建问题的切合实际的模型提供所需的所有公式、函
数、图形和宏功能。RISKOptimizer
查找解法的接口,并提供查找解法的引擎。将 Excel 与 RISKOptimizer
结合,能够找到几乎所有可模型化问题的优化解法。
第二章:背景知识 15
提供描述模型中的不确定因素和要
RISKOptimizer 的工作原理?
遗传算法
概率分布和模拟
RISKOptimizer 使用一组专有
率分布
RISKOptimizer 使用遗传算法确定您模型的最佳解法。遗传算法模拟达
尔文的自然选择法则,方法是创建一个允许某个问题的数百种可能解法
相互竞争的环境,最后只留下“最适合的”解法。如同生物进化一样,
每个解法可以通过“子孙”解法遗传良好的“基因”,因此整个解法群
体将继续进化为更好的解法。
您可能已经注意到,在遗传算法中使用的术语通常与生物进化中使用的
术语相似。我们会谈到“交叉”功能如何帮助确定查找解法的重点、
“突变”率如何帮助使“基因群”多样化,并且我们会评估整个解法
“群体”或“组织”。要详细了解 RISKOptimizer 遗传算法的工作原
理,请参见第七章 — 遗传算法
RISKOptimizer 使用概率分布和模拟方法处理模型变量中存在的不确定
因素。Palisade Corporation 为 Excel 设计的风险分析插件 @RISK 提供
这些功能。概率分布用于描述模型中不确定因素的可能值范围,并使用
概率分布函数输入,例如 RiskTriang(10,20,30) 。此分布函数表示您的模
型中的一个变量的最小值为 10,最可能值为 20,最大值为 30。然后,通
过模拟生成优化程序生成的每个可能试验解法可能结果的分布。
和
模拟
方法处理模型中存在的不确定因素。
遗传算法
。
搜索问题的优化解法,并使用
概
16 什么是 RISKOptimizer ?
什么是最优化?
最优化是尝试确定可能有多种可能解法问题的最佳解法的过程。大多数
问题涉及众多根据特定公式和约束条件相互作用的变量。例如,一家公
司可能有三家制造厂,每家制造厂制造不同数量的不同商品。根据每家
制造厂生产每种商品的成本、每家制造厂将商品运送至每家商店的成本
和每家制造厂的限制条件,可以在充分满足当地零售店需求的同时,并
且将运输成本降至最低的最优方法是什么?这就是最优化工具设计用来
回答的一种问题。
最优化经常用于确定从特定资源产生最多产量的组合。
在上例中,每种建议的解法都有一份完整的列表,包括将哪家制造厂生
产的哪些商品用什么卡车运送至哪一家零售店的信息。其他最优化问题
的示例包括确定如何产生最高利润、最低成本、拯救最多的生命、电路
中的噪音最低、在一组城市之间最短的路程或广告媒体采购最有效的组
合。最优化问题的一个重要子集涉及日程安排,其目标可以包括在工作
班次中最大程度提高效率或尽量减少在不同时间进行团体会议的日程冲
突。要详细了解最优化,请参见第六章 — 最优化
。
如果一个问题包括不确定因素,则传统的求解程序就无法解决,因为传
统方法没有处理模型中存在的不确定因素的能力。在上例中,如果地方
零售商店的需求量不确定,也就是您不知道每一家商店确切地需要多少
产品,该如何处理?在传统的求解程序中,您需要为每家商店的需求量
假设一个数量。这样才能对模型进行最优化;但是,假设的需求量水平
会使您的模型生成对实际情况不确切的描述。在 RISKOptimizer 中,
您无需假设需求水平。您使用概率分布描述需求量的可能值,然后使用
RISKOptimizer 的内建模拟功能将所有可能的需求量值包括在最优化结
果中。
第二章:背景知识 17
如果使用 RISKOptimizer ,优化程序生成的最佳解法就不是您尝试最优
化的模型中的目标或“目标单元格”的一个最大值或最小值,而是目标
的最大或最小模拟统计量。RISKOptimizer 运行的每次模拟都会为您的
目标生成一种可能的结果分布。分布有多个统计量,例如平均值、标准
差、最小值等。在上例中,您可能希望找到将利润分布平均值最大化或
标准差最小化的输入项组合。
要详细了解模拟,请参见第八章 — 模拟
。
为什么要建立 Excel 模型?
为了提高任何系统的效率,我们必须首先了解系统的行为方式。这就是
我们需要构建系统工作模型的原因。在研究复杂系统时,模型是必要的
抽象概念,但为了使结果可以应用于“真实的世界”,模型不能将变量
之间的因果关系过于简单化。更好的软件和功能日益强大的计算机允许
经济学家构建更切合实际的经济模型,允许科学家改善对化学反应的预
测,并且允许商界人士提高企业模型的灵敏度。
在过去几年内,计算机硬件和软件程序(例如 Microsoft Excel)取得了
巨大的发展,几乎任何拥有个人计算机的人都能为复杂系统创建切合实
际的模型。Excel 的内建函数、宏功能和简洁直观的界面使初学者可以
对复杂的问题建立模型并进行分析。要详细了解模型的构建,请参见第
九章 — RISKOptimizer 附加说明。
在 Exce l 模型中为不确定因素建立模型
变量是您在 Excel 模型中确定为对您的分析十分重要的基本成分。如果
您在建立财务状况的模型,您的变量可能是“销售”、“成本”、“收
入”或“利润”。如果您在建立地质状况的模型,您的变量可能是“至
矿层的深度”、“煤层的厚度”或“多孔性”。每种情况的变量各异,
由您自己确定。
在某些情况下,您可能知道在您的模型时段内您的变量值 — 这些是确
定变量,统计学家称为“确定性”变量。相反,您也可能不知道这些变
量值 — 这些是不确定变量,或“随机”变量。如果您的变量是不确定
变量,则需要描述此类变量的不确定性。这需要通过概率分布的方法来
完成,概率分布赋予变量可能变化的值范围(从最小值到最大值),以
及每个值在该范围内出现的可能性。在 RISKOptimizer 中,不确定变
量和单元格值作为概率分布函数输入,例如:
RiskNormal(100,10)
RiskUniform(20,30)
RiskExpon(A1+A2)
RiskTriang(A3/2.01,A4,A5)
如同任何其他 Excel 函数一样,这些“分布”函数可以放在工作表单元
格和公式中。
18 什么是 RISKOptimizer ?
采用模拟方法解释不确定因素
RISKOptimizer 采用模拟(有时称为“蒙特卡罗模拟”)方法对最优化
过程中生成的每个可能的解法进行风险分析。这种意义上的模拟是指用
一种方法让计算机反复重新计算您的工作表,并生成可能的结果分布,
每次以随机方式选择不同的值组合,获得您的单元格值和公式的概率分
布。事实上,计算机在尝试所有有效的输入变量值组合,以模拟所有可
能的结果。这如同您同时在工作表中运行数百次或数千次假设分析。
在模拟的每次迭代中,对电子表格中的概率分布函数进行抽样,并生成
新的目标单元格值。在模拟结束时,试验解法的结果是您希望最小化或
最大化的目标单元格分布的统计量。然后,该值返回给优化程序,遗传
算法使用该值生成新的和更好的试验解法。对于每种新的试验解法,系
统会运行另一次模拟,并生成目标统计量的另一个值。
为什么要使用 RISKOptimizer ?
当您在处理大量相互作用的变量、尝试确定变量的最佳搭配、适当的顺
序和最佳组合时,您可能会倾向于只做出“有根据的猜测”。很多人认
为除猜测之外的任何类型的模型建立和分析都需要复杂的编程,或令人
困惑的统计或数学算法。一种良好的最优化解法可以节约数百万美元、
数千加仑稀缺燃料、几个月的时间等。现在,功能强大的台式计算机的
价格越来越便宜,并且 Excel 和 RISKOptimizer 之类的软件随手可得,
因此我们就没有理由再猜测解法,或以手工方法尝试多种选择方案,而
浪费宝贵的时间。
更准确、更有意
义
更灵活
第二章:背景知识 19
RISKOptimizer 允许您使用全套 Excel 公式和概率分布来为任何系统创建
更切合实际的模型。在使用 RISKOptimizer 时,您无需因为所使用的算
法无法处理现实世界的复杂问题而“损害”模型的准确性。传统的“婴
儿”求解程序(统计和线性编程工具)强制用户对变量在问题中相互作
用的方式做出假设,从而迫使用户建立过于简单且不切实际的问题模
型。这些求解程序强制用户假设不确定变量值,因为优化程序无法处理
不确定模型成分的可能值。当用户对系统进行简化以使其可以使用这些
求解程序时,生成的解法通常因为过于抽象而没有实际价值。无论您尝
试将模型设计得多么简单,任何涉及大量变量、非线性函数、查找表、
假定陈述、数据库查询或随机元素的问题都无法使用这些方法解决。
有许多求解算法可以解决小型、简单的线性和非线性类型的问题,这些
算法包括登山、婴儿求解程序和其他数学方法。即使作为电子表格的插
件提供,这些一般用途的优化工具只能进行数字优化。对于更大型或更
复杂的问题,您也许能够编写具体的自定义算法,并获得良好的结果,
但可能需要进行很多研发工作。即使如此,每当您的模型变化时,都需
要对生成的程序进行修改。
RISKOptimizer 不仅能够处理数字问题,而且是世界上唯一一种能够解
决大多数组合问题的商用程序。这些是必须将变量打乱(序列改变)或
相互组合的问题。例如,为棒球队选择击球顺序是一个组合问题;这是
一个交换队员在队列中位置的问题。复杂的日程安排问题也是组合问
题。RISKOptimizer 能够解决所有此类型的问题,以及很多任何其他程
序无法解决的问题。RISKOptimizer 的独特
遗传算法和模拟
技术允许对
几乎任何类型的模型进行最优化,包括任何大小和任何复杂性的模型。
更便于使用
尽管 RISKOptimizer 明显具有强大功能和灵活优势,但该程序仍然便
于使用,因为用户完全没有必要理解 Evovler 使用的复杂遗传算法技
术。RISKOptimizer 不关心您问题的“具体细节”;只需要一个能够评
估不同选择方案优良程度的电子表格模型。只需选择包含变量的电子表
格单元格,并告知 RISKOptimizer 需要查找的内容即可。
RISKOptimizer 以智能方式将困难的技术隐藏起来,自动运行分析问题
的“假设分析”过程。
尽管已经开发出许多用于数学编程和模型建立的商用程序,但电子表格
仍然是最受欢迎的程序,每个月的销售量都达到数百万套。由于电子表
格使用直观的行和列格式,因而比其他专用软件包更容易设置和维护。
此外,电子表格与其他程序(例如文字处理程序和数据库)的兼容性更
好,并且比任何其他独立软件包提供更多的内建公式、格式化选项、图
形绘制和宏功能。由于 RISKOptimizer 是 Microsoft Excel 的插件,因
此用户可以使用所有功能和开发工具,方便地为系统建立更切合实际的
模型。
20 什么是 RISKOptimizer ?
传统最优化与模拟最优化
RISKOptimizer 将模拟和最优化功能进行了结合,从而允许对包含不确
定因素的模型进行最优化。此优化程序使用模拟模型连续运行的结果,
指导模拟过程搜索更好、更优化的解法。本节提供有关模拟和最优化如
何在 RISKOptimizer 中配合使用的背景信息。
传统的电子表格最优化过程
使用最优化插件(例如 Solver 或 Evolver )的传统电子表格优化过程会
执行以下步骤:
1) 确定您希望最小化或最大化的输出项或“目标”单元格。
2) 确定一组其值受您控制的输入项或“可调整”单元格,并描述这些
单元格的可能值范围。
3) 一组需要符合的约束条件,此类约束条件通常使用诸如 COSTS<100
或 A11>=0 之类的表达式指定。
4) 运行优化程序,在运行过程中使用可调整单元格的不同可能值连续
多次重新计算电子表格。
5) 在此过程中:
a) 每次重新计算为目标单元格生成一个新“答案”或值。
b) 优化程序使用该新目标单元格值选择要尝试的下一组可调整单
元格值。
c) 再次进行重新计算并提供另一个新答案,优化程序可以利用该
新答案找到可调整单元格的一组新值。
此过程在第 5) 步中反复重复,从而使优化程序越来越接近要查找的优
化解法,即一组最小化或最大化目标单元格值的可调整单元格值。
第二章:背景知识 21
模拟最优化过程
使用 RISKOptimizer 进行模拟最优化与此处描述的传统电子表格最优
化过程的大多数步骤相同。但是,也具有以下不同之处:1) 允许在电子
表格中输入不确定因素,以及 2) 使用模拟,而不是简单的电子表格重
新计算,提供新的目标单元格“答案”,从而为优化程序提供反馈信
息,以便指导优化程序为可调整单元格选择一组新值。
以下是对使用 RISKOptimizer 进行模拟最优化的新过程的描述,与传
统电子表格最优化过程的不同之处使用粗体显示:
1) 使用概率分布函数描述模型中不确定因素的可能值范围。
2) 确定输出项或“目标”单元格,选择您希望最小化或最大化的单元
格的模拟统计量(平均值、标准差等)。
3) 确定一组其值受您控制的输入项或“可调整”单元格,并描述这些
单元格的可能值范围。
4) 一组需要符合的约束条件,此类约束条件通常使用诸如 COSTS<100
或 A11>=0 之类的表达式指定。也可以输入基于模拟统计量的附加
约束条件(例如,A11>1000
5) 运行优化程序,在运行过程中使用可调整单元格的不同可能值在每
次模拟中连续多次对电子表格进行模拟。在此过程中:
a) 每次模拟为目标单元格生成一个新的可能值的分布。您希望最
小化或最大化的统计量根据此分布计算。
b) 优化程序使用该目标单元格的新统计量选择要尝试的下一组可
调整单元格值。
c) 再次进行模拟并提供另一个新的统计量,优化程序可以利用该
统计量找到可调整单元格的一组新值。
的第 95 百分位数)。
此过程在第 5) 步中反复重复,从而使优化程序越来越接近要查找的优化解
法,即一组最小化或最大化目标单元格模拟结果统计量的可调整单元格值。
22 传统最优化与模拟最优化
RISKOptimizer 最优化分步说明
以下是 RISKOptimizer 使用的模拟最优化过程的分步说明:
输入概率分布
RISKOptimizer 使用概率分布描述模型成分中存在的不确定因素。例
如,您可以在您的工作表的一个单元格中输入 RiskUniform(10,20) 。这
表示该单元格值将通过最小值为 10、最大值为 20 的均匀分布生成。该
值范围取代 Excel 要求的一个“固定”值。在传统电子表格最优化过程
中,无法在模型中增加不确定因素,因此不能使用概率分布。
RISKOptimizer 会为优化程序生成的每种输入值的可能组合运行模型模
拟过程。RISKOptimizer 在可能值抽样模拟过程中使用分布函数。模拟
的每次迭代使用从您的工作表每个分布函数中抽样的一组新值。然后,
使用这些值重新计算工作表,并生成新的目标单元格值。
与 Excel 函数一样,分布函数包含两个元素,函数名称和放在括号中的
引数值。以下是一个典型的分布函数:
RiskNormal(100,10)
与 Excel 函数一样,分布函数可以具有引用单元格或表达式的引数。例
如:
RiskTriang(B1,B2*1.5,B3)
在此示例中,单元格值将用三角分布表示,其中最小值来自单元格 B1 ,
最可能值通过用单元格 B2 的数值乘以 1.5 计算,最大值来自单元格 B3 。
与 Excel 函数一样,分布函数也可以用于单元格公式。例如,单元格公
式可以是:
B2: 100+RiskUniform(10,20)+(1.5*RiskNormal(A1,A2))
有关输入概率分布的更多信息,请参见 @ RISK 手册或“帮助”中的参
考资料:分布函数。
确定目标单元格
和统计量
第二章:背景知识 23
在 RISKOptimizer 和传统电子表格最优化过程中,均要确定一个目标单
元格。这是您要尝试将其值最小化或最大化的单元格,或要尝试使其值尽
量接近预设值的单元格。通常,这就是您模型的“结果”
总计等
— 但这可以是电子表格中的任何单元格。该单元格中需要有一个
公式,当您的可调整单元格值变化时,该公式可以返回不同的数值。
在 RISKOptimizer 中,您不是最小化或最大化目标单元格中的实际
值,而是最小化或最大化与目标单元格模拟结果相关的“统计量”。在
优化过程中,RISKOptimizer 将运行连续模拟,每次模拟都有一组不同
的可调整单元格值。每次模拟为目标单元格生成一个可能的结果分布。
例如,您正在查找一组将目标单元格分布的平均值最大化或标准差最小
化的可调整单元格值。
— 利润、模型
在 RISKOptimizer 中,您可以使用更多进行最小化或最大化(
值、标准差、最小值等
相关模拟不只生成一个答案。模拟为目标单元格生成一组完整的可能结
果分布,其中包括最小值、最大值、平均值和标准差等。传统最优化过
程只为优化程序尝试的每种解法生成一个结果 — 新目标单元格值,该
值是最小化或最大化的唯一可能选择。
)的选项,因为对于优化程序尝试的每种解法,
平均
输入可调整单元格
输入约束条件
在传统电子表格最优化和 RISKOptimizer 中,可调整单元格的输入方
法很相似。针对在最优化过程中可以更改的每个单元格输入一个最小可
能值和一个最大可能值。
由于 RISKOptimizer 使用的优化程序是基于 Evolver ,因此 RISKOptimizer
中的可调整单元格输入与 Evolver 中具有相同的选项。这些选项包括突
变率、求解方法和遗传算子。有关输入可调整单元格的更多信息,请参
见第五章:RISKOptimizer 参考资料
与传统电子表格最优化一样,您可以在 RISKOptimizer 中输入必须符
合的严格约束条件。在传统电子表格最优化中,需要针对每种试验解法
检验严格约束条件。如果不符合约束条件,则解法则将丢弃。
在 RISKOptimizer 中,为每种试验解法运行完整的模拟过程。每次模
拟包括一些迭代,或用来自模型概率分布的新样本对电子表格进行的单
独重新计算。可以在以下情况中检测严格约束条件:
♦ 每次模拟的每次迭代(
束条件的值,则模拟将被终止(试验解法将被拒绝),并开始运行
下一个试验解法及其相关模拟。
♦ 在模拟结束时(
的模拟统计量表示;例如,A11
模拟结束时评估该约束条件。与迭代约束条件相反,模拟约束条件
绝对不会在完成之前使模拟终止。
模拟约束条件)
迭代约束条件
中的
“可调整单元格范围”
)。如果迭代生成违反严格约
。此类约束条件用电子表格单元格
的平均值
>1000 。在此示例中,在
一节。
您也可以在 RISKOptimizer 中使用第二种类型的约束条件 —“宽松约束条
件”。宽松约束条件生成的惩罚值在模拟结束时计算。任何计算得出的惩
罚值将增加到要最小化或最大化的目标统计量,或从目标统计量中减去。
有关输入约束条件的更多信息
料中的
设置最优化和模
拟选项
24 传统最优化与模拟最优化
与传统电子表格最优化中一样,RISKOptimizer 中有多个选项可以用于
控制最优化的运行时间。但是,RISKOptimizer 为控制每个试验解法模
拟的运行时间增加了新的选项。
RISKOptimizer 将搜索更好的解法,并且在符合所选的终止选项之前一
直运行。您可以将 RISKOptimizer 设为在指定的分钟数内运行,运行
至生成指定数目的试验解法或直至目标单元格最佳模拟统计量更改为特
定的试验数目。
“约束条件”
一节。
,
请参见第五章:RISKOptimizer 参考资
您还可以指定每次试验解法模拟的运行时间。您可以选择让每次模拟运行
指定次数的迭代,或者选择让 RISKOptimizer 确定何时停止每次模拟。
当您选择让 RISKOptimizer 确定何时停止每次模拟时,RISKOptimizer 会
在为 1) 最优化目标单元格和 2) 模拟约束条件中引用的单元格生成的分布
保持稳定且相关统计量收敛时停止模拟。
运行最优化
当 RISKOptimizer 运行最优化时,使用可调整单元格的不同可能值在
每次模拟中连续多次对电子表格进行模拟。在此过程中:
1) 优化程序为可调整单元格生成一组值。
2) 对电子表格进行模拟,可调整单元格被设为优化程序生成的
值。在模拟的每次迭代中,对电子表格中的所有分布函数进行
抽样,重新计算电子表格,并生成新的目标单元格值。如果在
迭代重新计算后没有符合任何迭代约束条件,则停止模拟,而
优化程序会生成要模拟的新试验解法。
3) 在每次模拟结束时,会生成新的目标单元格可能值的分布。您
希望最小化或最大化的统计量根据此分布计算。如果没有符合
任何模拟约束条件,则试验解法和模拟结果将被丢弃,而优化
程序会生成要模拟的新试验解法。
4) 优化程序使用在模拟中计算得出的目标单元格新统计量选择要
尝试的下一组可调整单元格值。
5) 再次进行模拟并提供另一个新的统计量,优化程序可以利用该
统计量找到可调整单元格的一组新值。
此过程反复重复,从而使优化程序越来越接近要查找的优化解法,即一
组最小化或最大化目标单元格统计量的可调整单元格值。
第二章:背景知识 25
26
第三章:RISKOptimizer 分步介绍
简介.....................................................................................................29
RISKOptimizer 教程 ..........................................................................31
启动 RISKOptimizer..............................................................................31
RISKOptimizer 工具栏 ............................................................31
打开示例模型..............................................................................31
描述模型中的不确定因素........................................................................32
RISKOptimizer “模型”对话框...........................................................34
选择目标单元格的统计量........................................................................35
添加可调整单元格范围............................................................................35
输入可调整单元格的取值范围 ..................................................36
选择求解方法..............................................................................37
约束条件 ...................................................................................................38
迭代和模拟约束条件 ..................................................................38
添加约束条件..............................................................................39
简单值范围和公式约束条件 ......................................................39
其他 RISKOptimizer 选项.....................................................................42
最优化停止条件..........................................................................42
模拟停止条件..............................................................................43
记录模拟数据..............................................................................44
运行最优化................................................................................................45
RISKOptimizer 观察器 ............................................................46
停止最优化..................................................................................47
摘要报表......................................................................................48
将结果放在模型中 ......................................................................49
第三章:RISKOptimizer 分步介绍 27
第三章:RISKOptimizer 分步介绍 28
简介
在本章中,我们将逐步向您介绍 RISKOptimizer 的所有最优化设置。
如果您没有在硬盘中安装 RISKOptimizer ,请在开始本教程之前参见第
一章:安装的安装部分并安装 RISKOptimizer 。
首先,我们将打开预制的电子表格模型,然后将使用概率分布和
RISKOptimizer 对话框定义 RISKOptimizer 中的问题。最后,当
RISKOptimizer 正在查找解法时,我们将检查 RISKOptimizer 的进
度,并研究“RiskOptimizer 观察器”的多个选项中的部分选项。有关
任何特定主题的附加信息,请参见本手册后面的索引或第五章:
RISKOptimizer 参考资料。
注:以下所示屏幕来自
本,则屏幕上显示的窗口可能与图片稍有不同。
通过一个可以准确表示您的问题的模型,开始问题的求解过程。您的模
型必须能够评估一组特定的输入值(可调整单元格),并生成这些输入
项在解决问题方面表现的数字评级(评估或“适应度”函数)。您的模
型还需要包括描述任何不确定因素的可能值范围的概率分布。当
RISKOptimizer 查找解法时,适应度函数的模拟提供反馈信息,告知
RISKOptimizer 每个猜测好或差的程度,从而使 RISKOptimizer 生成
越来越好的猜测。创建问题的模型时,您必须密切关注适应度函数,因
为 RISKOptimizer 将尽一切能力使此单元格的模拟结果最大化(或最
小化)。
Excel 2007
。如果您正在使用
Excel
的其他版
第三章: RISKOptimizer 分步介绍 29
30
RISKOptimizer 教程
启动 RISKOptimizer
RISKOptimizer
工具栏
打开示例模型
您可以选择以下方式启动 RISKOptimizer :1)
RISKOptimizer 图标,或者 2) 在 Windows “开始”菜单的“程序”
条目中依次选择 Palisade DecisionTools
上两种方法均可以启动
加载 RISKOptimizer 后,将会在 Excel 中显示一个新的 RISKOptimizer
工具栏或功能导航栏。此工具栏中包含可以用于指定 RISKOptimizer
设置,以及用于启动、暂停和停止最优化的按钮。
要查看 RISKOptimizer 的功能,您需要查看在安装 RISKOptimizer 时
所安装的示例模型。要进行此操作:
1)
打开“
工作表。
RISKOPTIMIZER5\EXAMPLES
Microsoft Excel 和 RISKOptimizer 。
单击
Windows
和
RISKOptimizer 5.7
”目录中的
AIRLINES.XLS
桌面上的
。以
第三章:RISKOptimizer 分步介绍 31
此示例工作表包含一个收益管理模型,此模型用于确定在某一特定航班
销售的全票价和折扣票价座位的最佳数目。此模型还可以确定可接受的
超过可提供座位的最佳预订数目 — 传统的“超额预订”问题。对于这
一标准最优化问题只有一种解释 — 模型中的部分估计是不确定或“随
机”的。这包括所显示的要登机的实际乘客数,每种票价类别所需的预
订座位数,以及超额预订乘客成本(即有时将提供 100 美元的旅行优惠
券,而有时有必要提供免费的往返机票)。通常,将单点估计用于这些
项目,以允许执行正态最优化。但是,如果您的估计不正确,该如何处
理?结果可能是预定的座位太少,使座位空置,或者超额预订过多座
位。您可以销售过多的折扣票价座位,但这降低了您的利润。您也可以
保留过多的全票价座位,但这会导致飞机上半数座位空置。
RISKOptimizer 将解决这一最优化问题,同时允许您解释您模型中所存
在的不确定因素。
以航班为例,您首先将使用概率分布描述模型中存在的不确定因素。然
后,您将使用 RISKOptimizer 对话框设置您的最优化问题。最后,运
行 RISKOptimizer 以确定全票价座位和折扣票价座位的最佳预订数
目,从而将利润最大化,同时将风险保持在可接受水平之内。
描述模型中的不确定因素
在 RISKOptimizer 中,概率分布用于描述您的模型中的不确定因素的
可能值范围。概率分布指定不确定因素的最小值和最大值,以及最小值
和最大值之间的值的相对概率。
在 RISKOptimizer 中,使用概率分布函数输入概率分布。与标准 Excel
函数一样,您可以在电子表格的单元格和公式中输入这些自定义
RISKOptimizer 函数。例如,函数:
♦ RiskTriang(10,20,30) 指定一个三角分布,其中最小可能值为 10 ,
最可能值为 20 ,而最大值为 30 。
在航班模型中,共有五个不确定因素,每个均通过概率分布描述。第一
个不确定因素是:
♦ “全票价预订需求”(单元格 C8 ),通过概率分布 RiskTriang(3,7,15)
进行描述。此函数指定所需的全票价预订座位的数目可以低至 3,
也可以高达 15 ,而其最可能值为 7 。
32 RISKOptimizer 教程
要输入此概率分布:
1)
选择单元格
C8。
输入公式
2)
采用由
整数。(您不会需要
=ROUND(RiskTriang(3,7,15),0)。Excel ROUND
RiskTriang
函数返回的样本,并将其四舍五入为最接近的
5.65
个预订座位!)
函数只
模型中的其他分布已输入“Airlines.XLS ”工作表中,如下所示。如果
要了解相关情况,可以移动到每个分布所在的单元格进行查看。
♦ “未登机 % — 全票价座位”(单元格 C7 )。此分布由 RiskNormal
(.2,.03) 描述,表示航班中平均有 20% 的全票价预订座位空置。按
平均值为 .2 和标准差为 .03 的正态分布的描述,未登机的实际百分
比将围绕 20% 上下波动。
♦ “未登机 % — 折扣票价预订”(单元格 C11 )。此分布由 RiskNormal
(.1,.01) 描述,表示航班中平均有 10% 的折扣票价预订座位空置。
按平均值为 .1 和标准差为 .01 的正态分布的描述,未登机的实际百
分比将围绕 10% 上下波动。与全票价预订座位相比,显示了更多
的折扣票价预订座位,因为更改折扣票要收取 75 美元的费用,而
全价票可全额退款,并且不收取任何费用。
♦ “折扣票价预订需求”(单元格 C12 ),通过概率分布 RiskTrigen
(12,20,40,10,90)) 进行描述。此函数指定通过三角概率分布描述所需
的折扣票价预定座位的数目,其中第 10
值为 20 ,而第 90
个百分位数为 40 。
♦ “超额预订成本”(单元格 C23 ),通过概率分布 RiskDiscrete
个百分位数为 12 ,最可能
({100,150,200,250},{0.1,0.4,0.4,0.1}) 进行描述。此函数指定每名超额
预订乘客的成本可以是 100 美元、150 美元、200 美元或 250 美
元,因为有时乘客会接受 100 美元的旅行优惠券并自愿离开超额预
订的航班,而其他时候有必要提供更多的补偿。
第三章:RISKOptimizer 分步介绍 33
有关此类问题和其他概率分布的更多信息,请参见 @RISK 手册或“帮
助”中的参考资料:分布函数
在使用概率分布描述模型中输入的不确定因素后,您现在可以使用
RISKOptimizer 对话框设置最优化。
。
RISKOptimizer “模型 ” 对话框
要设置此工作表的 RISKOptimizer 选项:
单击
1)
RISKOptimizer
具栏的最左侧)。
将会显示以下的 RISKOptimizer “模型”对话框:
工具栏上的
RISKOptimizer
模型
图标
(在工
RISKOptimizer “模型”对话框旨在使用户能够以简单明了的方式描述
其问题。在教程示例中,我们要尝试确定应接受的全票价和折扣票价预
定座位的数目,从而使总利润最大化。
34 RISKOptimizer 教程
选择目标单元格的统计量
“Airlines.XLS ”模型的单元格 C27 中的“利润”就是所说的目标单元
格。这是您尝试将模拟统计量最小化或最大化的单元格,或尝试使模拟
统计量尽量接近预设值的单元格。要指定目标单元格的模拟统计量:
将“最优化目标”选项设置为“最大值”。
1)
2)
在“单元格”字段中,输入目标单元格
从下拉“统计量”列表中选择“平均值”,从而选择“平均值”作
3)
为要最大化的模拟统计量。
在 RISKOptimizer 对话框字段中输入单元格引用的方法有两种:1) 使
用鼠标指针单击字段,并在字段中直接输入引用,或者 2) 将光标放置
在选中字段上,然后单击“引用条目”图标,以便用鼠标直接选择工作
表单元格。
$C$27。
添加可调整单元格范围
现在,您必须指定包含数值的单元格的位置,RISKOptimizer 可以调整
这些数值来查找解法。您可以通过
中一次性添加和编辑这些变量。此外,可以在“可调整单元”对话框内
输入的单元格的数目视您正在使用的 RISKOptimizer 版本而定。
单击“可调整单元范围”部分中的“添加”按钮。
1)
在
Excel
中选择
C14
2)
作为要作为可调整单元格添加的单元格。
“可调整单元”对话框
在一个单元块
第三章:RISKOptimizer 分步介绍 35
输入可调整单元
格的取值范围
在大多数情况下,您需要将可调整单元格范围的可能值限制在一个特定
的取值范围内。在 RISKOptimizer 中,将其称为“范围”约束条件。
当选择一组要调整的单元格时,您可以快速输入此取值范围。以航班为
例,此范围内可接受的预订座位的最小可能值为 19,而最大可能值为
30。要输入此范围约束条件:
在“最小值”单元格中输入
1)
2)
在“值”单元格中,从下拉列表中选择“整数”
接下来,输入要调整的另一个单元格:
单击“添加”,以输入另一个可调整单元格。
1)
选择单元格
2)
输入
3)
0
C15。
作为“最小值”,而输入
19
,而在“最大值”单元格中输入
1
作为“最大值”。
30。
36 RISKOptimizer 教程
这可以指定最后的可调整单元格 C15 ,其表示将分配至全票价座位的总
预定座位所占的百分比。
如果此问题中还存在其他变量,我们将继续添加几组可调整单元格。在
RISKOptimizer 中,您可以创建数量不受限制的可调整单元格组。要添
加更多单元格,请再次单击“添加”按钮。
稍后,您可能需要检查可调整单元格或更改其中的一些设置。要执行此
操作,只需在表格中编辑取值范围。您也可以选择一组单元格,然后单
击“删除”按钮将其删除。
选择求解方法
定义可调整单元格时,您可以指定要使用的
求解方法
。不同的求解方法
可以处理不同类型的可调整单元格。设置求解方法以用于可调整单元格
组,而且可以通过单击
“组”
按钮和显示可调整单元设置对话框对其进
行更改。通常,您将使用默认的“菜单”求解方法;在此求解方法中,
每个单元格值可以独立与其他单元格进行更改。由于将其选为默认方
法,因此您无需进行更改。
“菜单”和“顺序”求解方法是最常用的方法,而且可以将其结合使
用,以解决复杂的组合问题。尤其值得一提的是,“菜单”求解方法将
每个变量视为菜单中的基本成分,其通过分别更改每个变量的值来尝试
确定“最佳搭配”。与此相反,“顺序”求解方法在变量之间交换值,
按不同的方式排列初始值以确定“最佳顺序”。
第三章:RISKOptimizer 分步介绍 37
迭代和模拟约束
条件
约束条件
RISKOptimizer 允许您输入约束条件,必须符合这些条件才能使解法有
效。在此示例模型中,必须符合两个附加约束条件,才能使
大预订座位数的一组可能值
已为可调整单元格输入的范围约束条件之外的附加约束条件。这三个约
束条件如下所示:
♦ 利润必须始终大于 0。
♦ 利润模拟结果的标准差必须小于 400。
RISKOptimizer 会针对每次为您的模型生成的可能解法运行模拟。每次
模拟将涉及成百上千次迭代,或对电子表格的重新计算。在每次迭代
中,RISKOptimizer 从模型的每个概率分布中抽样一个值,并使用这些
新抽样的值对模型进行重新计算,然后生成新的目标单元格值。在试验
解法模拟结束时,使用针对每次迭代计算得出的目标单元格值生成目标
单元格的概率分布。
RISKOptimizer 可以在以下情况中检查约束条件:
♦ 在模拟的每次迭代后(“迭代”约束条件)
♦ 在每次模拟结束时(“模拟”约束条件)
和
全票价座位的百分比
有效。这些是除我们
可接受的最
在航班模型中,“利润必须始终大于 0”是迭代约束条件,而“利润模
拟结果的标准差必须小于 400 ”是模拟约束条件。换言之,在模拟的每
次迭代后,RISKOptimizer 将检查以确保利润大于 0;如果没有满足此
条件,此试验解法将被丢弃。如果模拟成功完成(即所有迭代的利润均
大于 0),将会检查利润的概率分布的标准差,以确保其小于 400 ;如
果没有满足此条件,此试验解法将被丢弃。
约束条件显示在 RISKOptimizer “模型”对话框底部的
您可以在 RISKOptimizer 中指定两种类型的约束条件:
♦ 严格。必须符合才能使解法有效的条件(例如,严格迭代约束条件
为 C10<=A4 ;在这种情况下,如果解法为 C10 生成的值比 A4 单
元格的值大,则此解法将会被丢弃)
♦ 宽松。我们希望尽可能符合,但可能会为了大大改进适应度或目
标单元格结果而愿意做出让步的条件。(即宽松约束条件可以是
C10<100。在这种情况下,C10 的值可以超过 100,但是,当此
情况发生时,为目标单元格计算的值将会根据您输入惩罚函数而
减小)。
38 RISKOptimizer 教程
约束条件
部分。
添加约束条件
要添加约束条件:
1)
请单击
按钮。
“约束条件设置”对话框将会显示,您可以在其中输入模型的约束条件。
RISKOptimizer
主对话框的“约束条件”部分的“添加”
简单值范围和公
式约束条件
可以使用
用简单的 <、<= 、> 、>= 或 = 关系输入约束条件。典型的简单值范围
约束条件为 0< A1
值
的运算符。如果使用简单值范围格式的约束条件,您可以只输入一个
“最小”值、一个“最大”值或同时输入二者。
公式约束条件则允许您输入任何有效的 Excel 公式作为约束条件,例如
A19<(1.2*E7)+E8 。对于每种可能解法,RISKOptimizer 将检查输入的
公式估值是 TRUE 还是 FALSE ,以查看解法是否已符合约束条件。如
果您希望将工作表单元格中的布尔公式用作约束条件,只需在“约束条
件设置”对话框的
第三章:RISKOptimizer 分步介绍 39
简单和公式
框中输入 0 ,而在
公式
这两种格式输入约束条件。简单值范围格式允许使
的值
<10 ,其中在
最大值
框中输入 10 。可以从下拉列表框中选择所需
字段中引用此单元格。
单元格范围
框中输入 A1 ,在
最小
要输入航班模型的约束条件,您要指定三个新的严格约束条件。首先,
输入
简单值范围
格式的严格约束条件,即“利润 > 0 ”:
在“描述”框中,输入“利润
1)
2)
在“要约束的范围”框中,输入
在“要约束的范围”框的右侧,选择
3)
清除“最大值”框中的默认值 0。
4)
在“要约束的范围”框的左侧,通过从下拉列表中选择空白来清除
5)
运算符
单击“每次模拟的每一次迭代”,然后单击“确定”。这表示无论
6)
预订座位数是多少,您必须始终确保“利润”大于
> 0
C27。
”。
>
运算符。
0。
7)
单击“确定”以输入此约束条件。
40 RISKOptimizer 教程
现在,输入模拟约束条件:
1)
单击“添加”以再次显示“约束条件设置”对话框。
在“描述”框中,输入“利润标准差
2)
3)
在“要约束的范围”框中,输入
在“要约束的范围”框的右侧,选择
4)
5)
在“最大值”框中,输入
在“要约束的范围”框的左侧,通过从下拉列表中选择空白来清除
6)
运算符
单击“要约束的统计量”下拉列表,然后选择“标准差”。
7)
单击“确定”。
8)
已完成“约束条件”部分的“模型”对话框应如下所示。
400。
<400
C27。
<
”。
运算符。
第三章:RISKOptimizer 分步介绍 41
其他 RISKOptimizer 选项
在最优化过程中,可以使用更新显示、随机数种子、最优化停止条件和
模拟停止条件之类的选项控制 RISKOptimizer 的运行方式。让我们来
指定一些停止条件和更新显示设置。
最优化停止条件
RISKOptimizer 将按照您的要求运行最优化。当处于以下情况时,停止
条件允许 RISKOptimizer 自动停止运行:a)
“试验”,
进之处,
算得出一个错误值
单击
1)
2)
选择“运行时间”选项卡。
b)
已消耗一定数量的时间
d)
已输入的
RISKOptimizer
Excel
。要查看和编辑停止条件:
,c)
公式评估为
工具栏上的“最优化设置”图标。
已检查一定数目的方案或
未在最后
TRUE
n
,或者
个方案中找到改
e)
目标单元格计
42 RISKOptimizer 教程
在“最优化设置”对话框中,您可以选择这些最优化停止条件的任意组
合,或者根本不选择任何停止条件
。如果选择了多个停止条件,当符合
所选的任何一个停止条件时,RISKOptimizer 均将停止运行。如果没有
选择任何停止条件,RISKOptimizer 将会一直运行,除非按
RISKOptimizer 工具栏中的“停止”按钮,以手动方式将其停止运行。
模拟
此选项设置您希望
RISKOptimizer 运
行的“模拟”的数
目。RISKOptimizer
运行一整套变量或
问题的一种可能解
法的模拟。
1)
将分钟数设置为 5,以允许
在已消耗指定
数量的时间后,
RISKOptimizer 将会
停止运行。此数目可
以是分数 (4.25)。
时间
RISKOptimizer
进度
此停止条件是最常用
的条件,因为它跟踪
改进之处,并允许
RISKOptimizer 在改
进比率降低之前保
持运行。例如,我
们已通过了 100 次
模拟,而到目前为
止,尚未在最佳方
案中找到任何改进
之处,此时
RISKOptimizer 将
会停止运行。
运行五分钟。
公式为真
在模拟中,如果
已输入的 Excel
公式评估为 TRUE,
RISKOptimizer 将
会停止运行。
模拟停止条件
RISKOptimizer 针对其生成的每种试验解法运行模型的完整模拟。您可
以使用“模拟停止条件”指定这些模拟中每次模拟的运行时间。您可以
让每次模拟运行固定次数的迭代,或者让 RISKOptimizer 确定何时终
止每次模拟。
迭代
此选项允许您让每次模拟运
行固定次数的迭代。在这种
情况下,RISKOptimizer 将就
RISKOptimizer 生成的每种试
验解法所执行的每次模拟运
行指定数目的迭代(除非由
于不符合某个迭代约束条
件,而使模拟过早停止)。
1)
将迭代次数设置为
行快速模拟。
遇到实际收敛时停止
如果为 1) 最优化目标单元
格和 2) 模拟约束条件中引
用的单元格生成的分布保持
稳定且相关统计量收敛时,
此选项指示 RISKOptimizer
停止每次模拟。通过
选项设置在统计量标记为
“已收敛”时,统计量中
允许存在的变差数量。
500
,以使
如果为 1) 最优化目标单元格
和 2) 拟约束条件中引用的单
元格生成的分布保持稳定,并
且可以在内部进行投影时,此
选项指示 RISKOptimizer 停止
公差
每次模拟。RISKOptimizer 基
于最优化过程中先前已运行模
拟的结果对收敛进行投影。
RISKOptimizer
遇到投影收敛停止
对每种试验解法运
第三章:RISKOptimizer 分步介绍 43
记录模拟数据
RISKOptimizer 可以显示最优化过程中运行的每次模拟的当前描述,包
括计算的目标统计量的值,目标单元格值的模拟分布的基本统计量,使
用的可调整单元格值,以及是否满足约束条件。要在最优化过程中查看
此日志:
1)
单击“查看”选项卡,然后选择“最优化设置”对话框中的“记录
所有模拟”。
44 RISKOptimizer 教程
运行最优化
现在,所有要做的事就是最优化此模型,以确定每种票价类别的最高预
订数目,从而将利润最大化。要进行此操作:
1)
单击“确定”以退出“最优化设置”对话框。
单击“开始最优化”图标
2)
当 RISKOptimizer 开始研究您的问题时,您将在电子表格中看到可调
整单元格的当前最佳值—
分比
。
利润
的最佳平均值以蓝色显示,同时会有一个指向目标单元格的
箭头。
运行期间,“进度”窗口会显示:1) 到目前为止找到的最佳解法,2)
RISKOptimizer 开始最优化时,目标单元格中所选的模拟统计量的初始
值,3) 对您的模型所执行的模拟次数,以及有效模拟次数;即符合所有
约束条件,以及 4) 在最优化过程中已消耗的时间。
在运行期间,您可以随时单击显示 Excel 更新选项图标来查看每次模拟
的屏幕的实时更新。
可接受的预定座位总数和全票价预订座位百
第三章: RISKOptimizer 分步介绍 45
RISKOptimizer
观察器
RISKOptimizer 也可以显示针对每种试验解法所执行的模拟的运行日
志。当 RISKOptimizer 运行时,会在“RISKOptimizer 观察器”中显
示此运行日志。“RISKOptimizer 观察器”在运行时允许您研究和修改
问题的多个方面。要查看模拟执行的运行日志:
1)
请单击“进度”窗口中的“观察器”(放大镜)图标,以显示
“
RISKOptimizer
2)
单击“日志”选项卡。
观察器”
此报表显示针对每种试验解法所运行的模拟的结果。
您要尝试最大化或最小化的目标单元格的统计量的值 — 在此示例中,
为 $C$27 中的“利润”的平均值。
出项最小值和输出项最大值
润”的概率分布。$C$14 和 $C$15 列确定用于可调整单元格的值。
标准差
46 RISKOptimizer 教程
<400 列和
利润
列描述每次模拟计算得出的目标单元格“利
>0 列显示每次模拟是否符合您的约束条件。
输出项平均值、输出项标准差、输
结果
列按模拟显示
利润
停止最优化
五分钟后,RISKOptimizer 将停止最优化。您也可通过以下方式停止最
优化:
单击
1)
RISKOptimizer 观察器 或进度
窗口中的“停止”图标。
当 RISKOptimizer 进程停止时,RISKOptimizer 会显示“停止选项”
选项卡,此选项卡提供以下选择:
当符合“RISKOptimizer 最优化设置”对话框中设置的任何一个停止条
件时,这些相同选项将会自动出现。
第三章:RISKOptimizer 分步介绍 47
摘要报表
RISKOptimizer 可以创建一个最优化摘要报表,其中包含诸如运行日期
和时间、使用的最优化设置、计算的目标单元格的值,以及每个可调整
单元格的值之类的信息。
对于比较连续最优化的结果,此报表将非常有用。
48 RISKOptimizer 教程
将结果放在
模型中
要将航班的十六种任务的新的且已最优化的生产水平组合放在您的工作
表中:
请单击“停止”按钮。
1)
确保将“将显示在工作簿中的可调整单元格值更新到”选项设置为
2)
“最佳”
RISKOptimizer 将会返回到“AIRLINES.XLS ”电子表格,其中包含创
建了最佳解法的所有新变量值。请牢记,最佳解法是“利润”的模拟结
果的平均值,而且这与使用了最佳变量值针对“利润”进行的简单重新
计算后所显示的值不同。最佳平均值显示在蓝色框中,同时会有一个指
向“利润”的箭头。
重要提示:在我们的示例中,尽管您看到
生成的总利润为
RISKOptimizer 也可以确定生成的总得分相同的“可接受的最多预订座
位”与“按照全票价出售的座位百分比”的不同组合。这些差异由
RISKOptimizer 与所有其他问题求解算法之间的重要区别造成:这是
RISKOptimizer 遗传算法引擎的随机性,它使 RISKOptimizer 能够解
决各种不同问题,并找到更佳解法。
第三章:RISKOptimizer 分步介绍 49
2248.96
的解法,但您的结果可能比此结果稍高或稍低。
RISKOptimizer
找到了一个
在您保存已在其上运行过 RISKOptimizer 的任何工作表时(即使在运行
RISKOptimizer 之后“恢复”了工作表中的初始值),RISKOptimizer
对话框中的所有 RISKOptimizer 设置也将随此工作表一起保存。下次
打开此工作表时,所有最近的 RISKOptimizer 设置将会自动加载。所
有其他示例工作表中已预填充了 RISKOptimizer 设置,并准备进行最
优化。
注:如果您要了解已预填充所有最优化设置的航班模型,请打开示例模
型
AIRYIELD.XLS
50 RISKOptimizer 教程
第四章:应用示例
简介.....................................................................................................53
预算分配..............................................................................................55
能力规划..............................................................................................57
课程安排程序 ......................................................................................59
期货对冲..............................................................................................61
加工车间日程安排 ...............................................................................63
投资组合平衡 ......................................................................................65
投资组合..............................................................................................67
投资组合风险 ......................................................................................69
推销员问题..........................................................................................71
收益管理..............................................................................................73
第四章:应用示例 51
52
简介
本章说明如何在各种实际应用中使用 RISKOptimizer 。这些应用示例可
能不包括您希望您的模型拥有的所有功能,但是作为构思来源和模板而
言,它们是最有效的。所有示例均说明了 RISKOptimizer 如何通过依
赖工作表中已存在的关系来查找解法,因此您的工作表务必准确描绘要
尝试解决的问题。
您可以在 RISKOPTIMIZER5 目录的子目录“EXAMPLES ”中找到所
有 Excel 工作表示例。
每个示例均提供所有的 RISKOptimizer 预选择设置,包括目标单元
格、可调整单元格、求解方法和约束条件。在开始优化之前,最好查看
这些对话框设置。通过学习公式和使用不同的 RISKOptimizer 设置,
您可以更好地了解 RISKOptimizer 的使用方式。此外,这些模型也允
许您使用自己的“用户”数据替换样本数据。如果您决定修改或改编这
些示例工作表,您可能希望使用新名字将其保存,以保留初始示例以供
参考。
第四章:应用示例 53
54
预算分配
一位高级管理人员想要确定在公司的不同部门之间分配资金,从而使利润
最大化的最有效的方法。以下是一个业务模型以及其明年的预计利润。此
模型通过检查年度预算和对广告如何影响销售额之类的问题进行假设,然
后估计明年的利润。不确定的估计销售额包括概率分布,以反映可能值的
范围。这是一个简单模型,但是其说明了如何建立任何一个模型,并使用
RISKOptimizer 在模型中添加输入项,以确定最佳输出项。
示例文件:
目标: 在五个部门之间分配年度预算,从而使明年的
求解方法: 预算
相似问题: 向能够以不同的方法或不同的效率使用任何稀
budget.xls
利润最大化。
缺资源(例如劳工、资金、汽油、时间)的实
体分配这些资源。
第四章:应用示例 55
模型工作原理
文件“budget.xls ”针对公司预算对未来的销售额和利润的影响来建立
模型。单元格 C4:C8 (变量)包含将用于这五个部门中每个部门的预算
金额。这些值在单元格 C10 中进行合计,结果就是公司的年度总预
算。此预算由公司制定,并且无法更改。
单元格 F6:F10 根据广告和营销预算计算明年对公司产品的估计需求
量。实际销售额是计算得出的需求量和供应量的最小值。供应量取决于
分配给生产和运营部门的资金。模型中的不确定估计额包括在单元格
F6 至 F10 估计销售额计算使用的概率分布中。
如何解决问题
通过使用“预算”求解方法调整单元格 C4:C8 中的值,从而使单元格
I16 中的利润最大化。如果要防止 RISKOptimizer 尝试负数或不会为部
门预算生成适当解法的数字(例如,全部广告和无生产),请为每个部
门的预算设定每个可调整单元格的独立范围。
“预算”求解方法与“菜单”求解方法的相同之处是尝试确定所选变量
的适当“组合”。但是,当您使用预算方法时,与 RISKOptimizer 开
始最优化之前一样,您需要添加所有变量必须相加为同一个数字的约束
条件。
56 预算分配
能力规划
此模型使用 RISKOptimizer 为一家新工厂选择能力水平,从而使利润
最大化。在此模型中,ZooCo 正在考虑营销一种增进河马健康的新
药。采用了标准模拟模型,生成新药生产的净现值 (NPV) 分布。但
是,还需要确定需要建造的工厂能力。哪种能力水平能够使风险调整后
净现值最大化?
示例文件:
目标: 通过更改工厂能力,将净现值 (NPV) 模拟分布的平均
求解方法: 菜单
相似问题: 结合了传统模拟模型和用户控制决策变量的业务分析。
capacity.xls
值最大化。
第四章:应用示例 57
模型工作原理
在今年年初,有 1,000,000 头河马可能使用单元格 B34 中显示的产品。
每头河马最多每年使用一次这种药物(或竞争对手的药物)。预测河马
数目会以每年平均 5% 的速度增长,并且我们有 95% 的把握,河马的
数目每年会以 3% 到 7% 的速度增长(在单元格 B34 至 F34 中使用概率
分布方法建立模型)。我们不确定第一年的药物使用状况,但最坏的估
计情况是 20% 的河马使用药物,最可能的情况是 40% 的河马使用药
物,最好的情况是 70% 的河马使用药物(在单元格 B35 中使用概率分
布建立模型)。在其后的年份中,我们认为使用我们的药物(或竞争对
手药物)的河马比例将保持不变,但在竞争对手进入市场之后的年份,
我们将因每一家进入市场的竞争对手而损失 20% 的业务。建立一个单
位年度能力的成本为 3.50 美元,运营一个单位能力的成本为 0.30 美元
(无论我们是否利用该能力生产药物)。可建立 100,000-500,000 个单
位的能力水平。
如何解决问题
使用菜单解决方法调整单元格 I26 。使单元格 B45 的模拟平均值最大化。
58 能力规划
课程安排程序
一所大学必须在六个预定义时段内安排 25 门不同的课程。由于课程表
必须在学生注册之前制定,因此每门课的实际注册学生人数不确定。每
节课正好延续一个时段。通常,我们可以使用“分组”求解方法处理此
问题。但是,在安排课程时必须符合几个约束条件。例如,生物课和化
学课不能同时上,以便医学预科学生能够在同一学期同时选修这两门
课。为了符合这些约束条件,我们使用“日程安排”求解方法。“日程
安排”求解方法与“分组”方法相同,只是带有某些任务必须(或不
必)在其他任务之前(或之后或同时)完成的约束条件。
示例文件:
目标: 在 6 个时间段内安排 25 节课,以将无法选课学生人数
求解方法: 日程安排
相似问题: 所有任务具有相同长度,并且可以分配至任何一个离散
classes.xls
的模拟分布的平均值最小化。符合几个针对在某时段安
排某课程的约束条件。
时段的任何日程安排问题。此外,还适用于任何带有将
某些项目分配至特定组约束条件的组合问题。
第四章:应用示例 59
模型工作原理
“classes.xls”文件包含一个必须符合许多约束条件的典型日程安排问
题的模型。每门课程的可能值范围通过在名称为“实际大小”的单元格
范围 D8:D32 中输入的概率分布指定。单元格 C8:C32 将 25 门课安排在
6 个时段。总共只有五间教室,因此需在一个时段内安排五节以上的课
程,这意味着至少有一节课不能安排。
单元格 L20:N28 包含约束条件;约束条件左侧是约束条件的英文说
明。您可以使用数字代码或英语说明作为约束条件。有关日程安排问题
约束条件代码表的详细说明可以在第五章:RISKOptimizer 参考资料
的
“求解方法”一节找到。
通过计算以下两个方面来评估每种可能的时间安排:a) 无法同时上的课
程数目,以及 b) 由于教室容量不够,而无法上课的学生人数。最后一
个约束条件防止 RISKOptimizer 安排同时上所有的大课。如果只有一
节或两节大课在同一时段内开设,则可以使用较大的教室上课。
单元格 J11:M11 使用 Excel 函数 DCOUNT 计算在每个时段内安排的课
程数。右下侧的单元格 J12:M12 计算此时段内无法安排教室的课程数。
在单元格 L13 中合计无法安排教室的所有课程。
如果某一特定课程所需的座位数超出可用的座位数,则单元格 J15:M15
会计算出所缺的座位数,而单元格 L16 会计算出无座位的学生总数。
在单元格 G9 中,将无座位的学生总数与平均课程人数相加,再乘以无
法安排教室的课程数。这样一来,我们就得到一个组合了所有惩罚的单
元格,而且此单元格中的数字越小,则表示日程安排越合理。
如何解决问题
通过更改单元格 C8:C32 ,将单元格 G9 中的
惩罚模拟分布的平均值最小
化。使用“日程安排”求解方法。选择此求解方法时,您将看到几个相
关选项显示在对话框下侧的“选项”部分。将时段数设置为 6,而将约
束条件单元块设置为 L20:N28 。
60 课程安排程序
期货对冲
今天是 2000 年 6 月 8 日,GlassCo 需要在 2000 年 11 月 8 日购买 500,000
加仑民用燃料油。目前燃料油的现货价格为每加仑 0.42 美元。假设油
价是平均值为 .08 和标准偏差为 .30 对数正态随机变量。无风险率为
6%。我们通过购买在 2000 年 12 月 8 日到期的燃料油期货对冲我们未
来的燃料油购买中固有的价格风险。我们应当购买多少期货?
示例文件:
目标: 确定要购买的期货合同的数额,以防止期货购
求解方法: 菜单
相似问题: 目的是将目标标准差最小化的风险最小化模型
oil.xls
买的价格波动。
第四章:应用示例 61
模型工作原理
如何解决问题
此模型通过使用期货合同防止价格波动的方法,尝试确保今后五个月购
买 210,000 加仑民用燃料油的成本尽量在可预测的范围内。此模型中的
不确定因素是未来的燃料油现货价格(单元格 B13 )和未来的燃料油期
货价格(单元格 B15 )。
我们需要做的第一件事是选择一个可调整单元格。在此模型中,我们希
望调整单元格 B12 —
期货合同“长”或已购买的数额
— 以便使单元格
B23 中的总成本标准差最小化。可购买的合同最低数额是 0,最高数额
是 600,000。
62 期货对冲
加工车间日程安排
一间金工车间需要确定安排一组工作日程的最佳方法,这组工作需要分
为不同的步骤,并在不同的机器上完成。每项工作由五项任务组成,并
且所有任务必须按顺序完成。每项任务必须在一台特定的机器上完成,
并且完成所需的时间不确定。共有五项工作和五台机器。
单击工作表顶部的“重画日程表”按钮,系统将会重画显示每项工作任
务安排在什么时间完成的柱形图。
示例文件:
目标: 将单件工作(任务)分配至不同的机器,从而使完成所
求解方法: 顺序
相似问题: 日程安排或项目管理问题
jobshop.xls
有工作的总时间最小化。
第四章:应用示例 63
模型工作原理
完成每项任务的不确定时间通过单元格 E11-E35 中的概率分布描述。单
元格 D5 计算完工时间,或计算从安排的第一项任务开始到安排的最后一
项任务结束,期间所消耗的时间。我们希望将该总时间数最小化。需要
以不同的方式排列单元格 G11:G35 中的变量(任务),从而确定最佳分
配顺序。工作表中的方程式计算出每项任务在所需机器上的完成速度。
如何解决问题
选择一组可调整单元格 G11:G35,并选择“顺序”求解方法。将单元格
D5 中的模拟结果的平均值最小化。
64 加工车间日程安排
投资组合平衡
一位经纪人有一份 80 种不同类型的证券表,这些证券的未来价值不
同,数额不确定。这位经纪人希望将这些证券组合成五种投资组合,从
现在起一年后每种投资组合的总价值将尽量接近。
这是一个称为装箱问题的一般性问题的示例。在货船的货仓内装货,尽
量使各个货仓间的重量均衡,这是另一个示例。如果要将数百万个小项
目装入几个组中(例如,将小麦装入货仓),估计会进行大致相等的分
布,使重量上不存在较大差异。但是,可以采用完全不同的方式装入几
十包不同重量和/ 或大小的货物,而且有效的装货方法可以对以手动方
式确定的平衡进行改进。
示例文件:
目标: 将证券列表拆分为五种不同的投资组合,而且各种投资
求解方法: 分组
portbal.xls
组合彼此间的未来价值应尽量接近。
相似问题: 建立综合能力大致相当的团队。将集装箱装入货船的货
仓内,并且使重量平均分布。
第四章:应用示例 65
模型工作原理
“portbal.xls”针对典型的分组分配建立模型。列 A 包含具体证券的识
别号码,列 B 说明每种证券的类别(工作表“证券”列出每种类别证
券的信息)。列 C、D 和 E 列出每种证券的当前货币价值,以及证券明
年的回报平均值和标准差(按照证券类别确定)。列 F 利用根据使用显
示的平均值和标准偏差得出的概率分布抽样的回报率计算一年后的证券
价值。列 G 将每种证券分配至五种投资组合其中之一。在设置分组或
装箱类问题和使用“分组”求解方法时,您必须确保在开始
RISKOptimizer 之前,每个组 (1-5) 在当前方案中至少表示一次。
单元格 J6:J10 使用“DSUM()”公式计算五种投资组合中每种投资组合
的总价值。因此,例如单元格 J6 使用 DSUM 计算已分配给组
中)的列 B 中的所有值的总和。
单元格 J12 使用“STDEV() ”函数计算总投资组合价值中的标准差。这
就提供了一种衡量各种投资组合总价值接近程度的方法。此图表显示每
种投资组合的总价值,并在目标值上画一条基准线;此基准线显示如果
所有的投资组合价值均相同,每种投资组合所在的位置。
5(列 G
如何解决问题
通过调整单元格 G5:G84 ,将单元格 J12 中的模拟结果的平均值最小
化。使用“分组”方法,并确保 1、2 、3 、4 和 5 每个数值在列 G 中至
少出现一次。
“分组”求解方法告知 RISKOptimizer 将变量排列为 x 组,其中 x 表
示开始最优化时,可调整单元格中的不同值的数目。
66 投资组合平衡
投资组合
一对年轻夫妇拥有许多不同类型的投资资产,并且每项投资都具有各自
的收益、潜在增长和风险。目标是选择使总回报最大化,同时将风险保
持在可接受水平之内的投资组合。
模型工作原理
示例文件:
目标: 根据您的当前风险/回报需求,确定可以使利润最大化的
求解方法: 预算
这是一个尝试在损失风险与投资回报之间达到平衡的典型财务模型。列
B 中所列的每项资产均具有不确定的资本增长率和固定收益。总回报将
资本增长率和收益相加。目标是将总回报最大化,同时将投资组合回报
的标准差保持在 9% 之内。
portmix.xls
最佳投资组合。
如何解决问题
第四章:应用示例 67
单元格 D33 中的总回报反映出总资本增长率与总收益之和。将此单元
格的模拟分布的平均值最大化。输入一个严格模拟约束条件,指定单元
格 D33 的标准差必须小于 .09 。
68
投资组合风险
一位投资者希望确定从几种投资中安排投资组合的最安全的方法。历史
数据显示,投资回报具有相关性。目的是在三种可用投资中分配总投资
组合,以便获得理想的 12% 的回报,同时使投资组合回报的风险或标
准差最小化。
模型工作原理
示例文件:
目标: 将投资组合回报的标准差最小化,同时还要获得理想回报。
求解方法: 预算
相似问题: 任何风险最小化模型。
这三种可用投资的每一种投资都有不确定的回报,使用概率分布在单元
格 E3 至 E5 中建立模型。为了建立这三种投资回报的相关性,采用了
RiskCorrmat 函数,相关矩阵位于 J9:L11。RISKOptimizer 将调整分配
给每种投资的投资组合百分比。采用“预算”求解方法,以确保分配的
总百分比总和始终为 100%。
corrmat.xls
目的是使总投资组合回报标准差最小化,同时满足总回报大于或等于
12% 的约束条件。
如何解决问题
第四章:应用示例 69
将单元格 G6 中的模拟结果标准差最小化。输入一个严格模拟约束条
件,要求单元格 G6 的模拟结果的平均值大于 .12 。
70
推销员问题
一位推销员必须对指定地区的每座城市访问一次。哪条路线可用最短的
旅行时间访问每座城市?这是一个典型的带有一个变化因素的优化问题
— 每个城市之间的旅行时间不确定 — 如果涉及多座城市 (>50),则很
难用传统方法解决的极为困难的问题。
一个类似的问题可以是确定在工厂中完成任务的最佳顺序。例如,与其
他方式相比,在使用了白色颜料后,可能更易于使用黑色颜料。在
顺序
RISKOptimizer 中,这类问题均可以通过
求解方法得到完美解决。
示例文件:
目标: 确定 n 座城市之间旅行时间最短的路线,而且每座城市
求解方法: 顺序
相似问题: 以最快方式规划电路板的钻孔问题。
salesman.xls
应访问一次。
第四章:应用示例 71
模型工作原理
“salesman.xls ”文件通过查找表中城市之间的旅行时间,计算到各个
城市进行旅行的旅行时间。任何两座城市之间的旅行时间均通过概率分
布描述(表中共有 200 种概率分布)。列 A 包含具体城市的识别号
码。列 B 包含这些号码代表的名称(带有“查找”函数)。自上而下
显示的城市顺序(及其号码)代表访问这些城市的顺序。例如,如果您
在单元格 A3 中输入“9 ”,则表示渥太华是第一座要访问的城市。如
果在 A4 中输入“6 ”(哈利法克斯市),则哈利法克斯市将是第二座
要访问的城市。
城市之间的旅行时间在表格中用概率分布表示,从单元格 C25 开始。
这些分布引用从单元格 C48 开始的表格,表格中包含城市间的实际开
车距离。表中距离是对称的(从 A 到 B 的距离与从 B 到 A 的距离相
同)。但是,更切合实际的模型可能包括不对称的距离,表示从一个方
向旅行更加困难(由于收费公路、可用交通工具、逆风和上坡等)。
现在,必须使用函数计算这些城市之间的路线长度。总路线长度将存储
在单元格 G2 中,这是我们希望最优化的单元格。为了达到这一目的,
我们使用“RouteLength ”函数。这是“Salesman.xls ”文件中的自定
义 VBA 函数。
如何解决问题
通过调整单元格 A3:A22 将单元格 G2 中的值最小化。使用“顺序”方
法,并确保在您开始最优化之前,数值 1-20 已经在可调整单元格
(A3:A22) 中。
“顺序”求解方法告知 RISKOptimizer 重新安排所选的变量,并尝试
对现有变量进行不同的排列。
72 推销员问题
收益管理
这是收益管理模型,此模型旨在发现在某一特定航班销售的全票价和折
扣票价座位优化数目。此模型还可以确定可接受的超过可提供座位的最
佳预订数目 — 传统的“超额预订”问题。
示例文件:
目标: 确定要可接受的、使利润最大化和不同票价类
求解方法: 菜单
相似问题: 任何为相同产品提供不同价格的收益管理问题
airyield.xls
别的最高预订数目。
第四章:应用示例 73
模型工作原理
“airyield.xls ”文件是一个说明 RISKOptimizer 用于收益管理的非常
简单的模型。为模型中各种不同的不确定因素指定概率分布,包括“全
票价预订座位需求”(单元格 C8)、“未登机 % — 全票价预订座
位”(单元格 C7)、“未登机 % — 折扣票价预订座位”(单元格
C11)、“折扣票价预订座位需求”(单元格 12)和“超额预订成本”
(单元格 C23)。此航班的毛利是用每种票价类别的预定总收入减去超
额预订航班超额预订乘客成本来进行计算。
如何解决问题
在此模型中,需要调整的变量在单元格 C14 和 C15 中。这些单元格包含
已接受的最大预订数目和将分配至全票价座位的预订百分比。“利润必
须始终 > 0 ”是迭代约束条件,而“利润模拟结果的标准差必须 < 400 ”
是模拟约束条件。目的是使利润的模拟分布的平均值最大化,同时使输
入的约束条件指定的风险最小化。
74
第五章:RISKOptimizer 参考指南
模型定义命令 ......................................................................................77
可调整单元范围........................................................................................79
可调整单元组............................................................................................81
菜单求解方法..............................................................................83
顺序求解方法..............................................................................83
分组求解方法..............................................................................84
预算求解方法..............................................................................85
项目求解方法..............................................................................85
日程安排求解 方法....................................................................86
交叉和突变率..............................................................................87
时间块数和约束单元格 ..............................................................89
优先任务......................................................................................89
运算符..........................................................................................89
约束条件 ...................................................................................................91
添加 — 添加约束条件 ................................................................91
模拟约束条件..............................................................................92
简单和公式约束条件 ..................................................................93
宽松约束条件..............................................................................93
“最优化设置 ”命令 — “常规 ”选项卡 .............................................97
“最优化设置 ”命令 — “运行时间 ”选项卡 ......................................99
最优化运行时间选项 ................................................................100
“模拟运行时间”选项 ............................................................101
“最优化设置 ”命令 — “视图 ”选项卡 ...........................................103
“最优化设置 ”命令 — “宏 ”选项卡 ...............................................105
“开始最优化 ”命令 .........................................................................107
“实用工具 ”命令 .............................................................................109
“应用程序设置”命令..........................................................................109
“约束条件求解器”命令......................................................................110
第五章: RISKOptimizer 参考指南 75
RISKOptimizer 观察器 ....................................................................113
“RISKOptimizer 观察器”— “进度”选项卡 ............................... 113
“RISKOptimizer 观察器”— “摘要”选项卡 ............................... 116
“RISKOptimizer 观察器”— “日志”选项卡 ............................... 117
“RISKOptimizer 观察器”— “群体”选项卡 ............................... 118
“RISKOptimizer 观察器”–“多样性”选项卡 ............................. 119
“RISKOptimizer 观察器”–“停止选项”选项卡 ......................... 120
76
模型定义命令
定义模型的目标、可调整单元格和约束条件
选择 RISKOptimizer “模型定义”命令(或单击 RISKOptimizer 工具
栏上的“模型”图标),“模型”对话框将会显示。
RISKOptimizer “模型”对话框用于指定或描述 RISKOptimizer 的最
优化问题。在开始时,此对话框在每个新的 Excel 工作簿中显示为空
白,但它会在每个工作簿中保存其信息。这意味着再次打开工作表时,
此对话框会以相同方式进行填充。此对话框的每个组件如本节中所述。
“模型”对话框中的选项包括:
• 最优化目标。
的类型。如果选择
的模拟结果的所选统计量的最小可能值的变量值(最小 -1e300 )。
如果选择
能值的变量值(最大 +1e300 )。
第五章:RISKOptimizer 参考指南 77
最大值
RISKOptimizer “模型”对话框。
最优化目标
最小值
,RISKOptimizer 将搜索生成所选统计量的最大可
选项确定 RISKOptimizer 要搜索的答案
,RISKOptimizer 将查找生成目标单元格
如果选择
目标值
,RISKOptimizer 将搜索生成所选统计量的值的变
量值,此值应尽量接近您指定的值。当 RISKOptimizer 找到生成
此结果的解法时,RISKOptimizer 将自动停止运行。例如,如果您
指定 RISKOptimizer 应找到最接近 14 的模拟结果分布平均值,则
RISKOptimizer 可能找到生成诸如 13.7 或 14.5 之类的平均值的方
案。请注意,13.7 比 14.5 更接近 14;RISKOptimizer 不会关注统
计量的值是大于还是小于您指定的值,它只查看与值的接近程度。
• 单元格。单元格或
目标单元格
包含您的模型的输出项。将(通过模
拟)为 RISKOptimizer 生成的每种“试验解法”生成此目标单元
格的可能值的分布(即可调整单元格的可能值的所有组合)。目标
单元格应包含一个与可调整单元格相关的公式(直接或通过一系列
计算)。可以使用标准 Excel 公式(如 SUM() )或用户定义的
VBA 宏函数来生成此公式。通过使用 VBA 宏函数,您可以使
RISKOptimizer 评估非常复杂的模型。
当 RISKOptimizer 搜索一种解法时,它使用目标单元格的模拟结
果的统计量作为评级或“适应度函数”来评估每种可能方案的优良
程度,并确定哪些变量值应继续进行交叉生成,哪些变量值应该
“丢弃”。在生物进化中,“死亡”是确定哪些基因能继续在整个
群体中繁衍的“适应度函数”。在构建模型时,您的目标单元格必
须反映任何特定方案的适应度或“优良程度”,因此在
RISKOptimizer 计算概率时,它能够准确测量其进度。
• 统计量。“统计量”条目,您可在其中指定您要最小化、最大化或
设置为特定值的
目标单元格
的模拟结果的统计量。您可从下拉列表
中选择您要最小化、最大化或设置为特定值的实际统计量。
78 模型定义命令
要选择您要最小化、最大化或设置为特定值的目标单元格的统计量,只
需从已显示的下拉列表中选择所需统计量。如果您要选择目标单元格分
布的百分位数或目标值,只需:
1) 选择
2) 针对
3) 针对
用户可以通过使用 @RISK/RISKOptimizer 统计量函数(如
RiskMean )来选择收集模型内部的统计量。要最优化此类单元格的
值,用户不需要指定要最优化的统计量,因为单元格自身包含此类信
息。在这种情况下,从统计量下拉列表中选择值 选项,告知
RISKOptimizer 在模拟结束时最优化特定单元格的值。例如,如果用户
想要最优化单元格 C5 的平均值,则可以在单元格 C6 中键入
=RiskMean(C5) ,在“模型”对话框中指定 C6 为要最优化的单元格,
然后从“统计量”下拉列表中选择值。这相当于指定 C5 为要最优化的
单元格,并从“统计量”下拉列表中选择“平均值”。
百分位数
百分位数
间的所需“P ”值。要最小化或最大化的值将是与已输入的百分位
数相关的值;即百分位数 (99%) 将使 RISKOptimizer 确定可调整
单元格的值的组合,此组合将最小化或最大化目标单元格的模拟结
果分布的第 99
目标值
化的值将是与已输入的值相关的累积概率;即目标值 (1000) 将使
RISKOptimizer 确定可调整单元格的值的组合,此组合将最小化或
最大化数值 1000 的累积概率(使用目标单元格的模拟结果分布计
算得出)。
(X
针对给定的
(X
针对给定的
个百分位数。
(P
针对给定的
P) 或
目标值
(P
针对给定的
P),在 % 字段中输入介于 0 到 100 之
X),输入所需“X”值。要最小化或最大
X)。
可调整单元范围
可调整单元范围
值的范围,以及输入的有关这些单元格的描述。每组可调整单元格在水
平行中列出。可调整单元组中可以包括一个或多个可调整单元格范围。
“可调整单元组”中的所有单元格范围共享一个公用求解方法、交叉
率、突变率和运算符。
第五章:RISKOptimizer 参考指南 79
表显示每个包含 RISKOptimizer 可以调整的单元格或
由于可调整单元格包含问题的变量,因此您必须至少定义一组可调整单元
格来使用 RISKOptimizer 。大多数问题仅使用一组可调整单元格描述,但
更复杂的问题可能需要同时使用不同的解法进行求解的不同的变量块。此
独特结构允许从多个可调整单元格组中轻松构建极为复杂的问题。
以下选项可以用于输入“可调整单元范围”:
• 添加。通过单击“可调整单元”列表框旁边的“添加”按钮,添加
新的可调整单元格。选择要添加的单元格或单元格范围,然后在可
调整单元范围表中显示一个新行。在此表格中,您可以输入范围内
单元格的最小值和最大值,以及要检验的“值”类型 — 范围内的
整数值,或任意值。
• 最小值和最大值。在您指定可调整单元格的位置后,“最小值和最
大值”条目会设置每个可调整单元格的可接受值的范围。默认情况
下,每个可调整单元格均使用负无穷与正无穷之间的实数(双精度
浮点)值。
范围设置是需要严格执行的约束条件。RISKOptimizer 将不允许任
何变量使用设置范围之外的值。在可以改进 RISKOptimizer 的性
能时,最好为您的变量设置更加具体的范围。例如,对于一个特定
变量,您可能知道数字不能为负,或者 RISKOptimizer 应只使用
50 到 70 之间的值。
范围
• 范围。在
择电子表格中的区域,输入范围名称或键入诸如 Sheet1!A1:B8 之
类的有效 Excel 引用来输入此引用。范围字段可以用于所有求解方
法。但是,对于菜单和预算方法,可以添加
项,以允许输入可调整单元格的范围。
字段中输入要调整的单元格的引用。通过使用鼠标选
最小值、最大值和值
选
注:通过向变量分配紧密范围,您可以限制搜索范围,并加速
RISKOptimizer
太紧密;这可能会妨碍
• 值。“值”条目允许您指定 RISKOptimizer 应将指定范围内的所
有变量视为整数(如 22 ),而不是实数(如 22.395 )。此选项仅适
用于“菜单”和“预算”求解方法。默认设置是将变量视为实数。
如果您的模型使用变量从表格中查找项目(HLOOKUP() 、
VLOOKUP() 、INDEX() 和 OFFSET() 等),请确保打开“整数”设
置。请注意,“整数”设置影响所选范围内的所有
其中一些变量视为实数,而将另一些视为整数,您可以创建两组可调整
单元格,而不是一组,并将一组视为整数,而将另一组视为实数。只需
“添加”一个菜单可调整单元格组,然后将“值”条目设置为“任意
值”。接下来,“添加”另一个单元格范围,此次选择“整数”设置,
并且只选择整数可调整单元格。
80 模型定义命令
收敛解法。但是,请注意不要将变量范围限制得
RISKOptimizer
查找优化解法。
变量。如果您希望将
可调整单元组
每组可调整单元格可以包含多个单元格范围。这允许您构建一个具有
“层次结构”的相关单元格范围的组。在该组中,每个单元格范围均具
有自己的“最小值-最大值”范围约束条件。
“可调整单元组”中的所有单元格范围共享一个公用求解方法、交叉
率、突变率和运算符。这些均在可调整单元组设置对话框中指定。通过
单击可调整单元范围表旁边的组按钮访问此对话框。您可以创建一个在
其中添加可调整单元格范围的新组,或编辑一个现有组的设置。
第五章:RISKOptimizer 参考指南 81
“可调整单元组设置”对话框中的常规选项卡上的选项包括:
• 描述。描述对话框和报表中的可调整单元格范围组。
• 求解方法。选择用于组中每个可调整单元格范围的“求解方法”。
当您选择要由 RISKOptimizer 进行调整的单元格范围时,您也可以指
定在调整这些可调整单元格时要应用的“求解方法”。其实,每种求解
方法都是一个完全不同的遗传算法,具有各自的最优化选择、交叉和突
变例程。每种求解方法以一种不同的方式调整变量的值。
例如,“菜单”求解方法将选中的每个变量视为菜单中的基本成分;每个
变量的值可以独立于其他变量的值进行更改。相反,“顺序”求解方法则
在可调整单元格之间交换值,并对单元格中的初始值重新进行排序。
RISKOptimizer 共有六种求解方法。三种求解方法(菜单、顺序和分
组)使用完全不同的算法。其他三种求解方法是前三种求解方法的
级
,并添加了其他约束条件。
子
以下部分描述每种求解方法的函数。要更好地了解如何使用每种求
解方法,我们建议您研究软件随附的示例文件(请参见第四章:应
用示例)。
82 模型定义命令
菜单求解方法
在各种求解方法中,“菜单”求解方法是最简单且最常用的类型。如果
要调整的一组变量相互之间可以独立改变时,请使用“菜单”求解方
法。将每个变量视为蛋糕中每个基本成分的数量;当您使用“菜单”求
解方法时,您将告知 RISKOptimizer 生成这些变量的数量,以确定最
佳搭配。针对菜单变量的唯一约束条件是设置范围
值),这些值必须处于设置的范围之间。在“可调整单元”对话框的
和
小值
最大值
RISKOptimizer 是否应尝试整数
63.72442)。
字段中设置这些值(例如,1 到 100 ),同时也指明
(1 、 2 、 7 )或实数(1.4230024 、
(最高值和最低
最
以下示例说明在调用 RISKOptimizer 之前位于某个工作表中的一组变量
值,以及在使用“菜单”求解方法后,所生成的两个新方案的可能形式。
一组初始变量值 一组可能菜单值 另一组可能菜单值
23.472 15.344 37.452
145 101 190
9 32.44 7.073
65,664 14,021 93,572
顺序求解方法
“顺序”求解方法是第二常用的求解方法类型,排在“菜单”求解方法
之后。顺序是一组项目的排列,而您在其中尝试确定排列一组特定值的
最佳方式。与要求 RISKOptimizer 生成所选变量的值的“菜单”和
“预算”求解方法不同,“顺序”求解方法要求 RISKOptimizer 使用
模型中的现有值。
一个顺序可以表示要执行的一组任务的顺序。例如,您可能需要确定完
成 1、2、3、4 和 5 五项任务的顺序。“顺序”求解方法将会搅乱这些
值,因此一种方案可能是 3、5、2、4、1。由于 RISKOptimizer 只尝试
初始工作表中的变量值,因此在使用“顺序”求解方法时,不需要为可
调整单元格输入“最小值-最大值”范围。
以下示例说明在调用 RISKOptimizer 之前位于某个工作表中的一组变量
值,以及在使用“顺序”求解方法后,所生成的两个新方案的可能形式。
一组初始变量值 一组可能顺序值 另一组可能顺序值
23.472 145 65,664
145 23.472 9
9 65,664 145
65,664 9 23.472
第五章:RISKOptimizer 参考指南 83
分组求解方法
如果您的问题涉及多个要分为多个组的变量,应使用“分组”求解方
法。RISKOptimizer 创建的不同组的数量将等于开始最优化时在可调整
单元格中显示的唯一值的数量。因此,在您构建您系统的模型时,请确
保每个组至少表示了一次。
例如,假设 50 个单元格的范围包含的值只有 2、3.5 和 17。当您选择
50 个单元格并使用“分组”求解方法调整这些值时,RISKOptimizer
将 50 个单元格中的每个单元格分配到 3 个组(2、3.5 或 17)其中之
一。所有组均至少由一个可调整单元格表示;这与将 50 个变量中的每
个变量投掷到几个“块”中的其中一个的方式一样,而且确保每个块中
至少有一个变量。另一个示例是将 1s、0s 和 -1s 分配到交易系统,以指
明买入、卖出和持仓头寸。与“顺序”求解方法一样,“分组”求解方
法要求 RISKOptimizer 排列现有值,因此没有要定义的“最小-最大”
范围或“整数”选项。
注:当使用“分组”求解方法时,不能将任何单元格设置为空白,除非
您希望其中的一个组显示为
0.0。
如果将“整数”选项设置为“开”且范围设置为从 1 到 3(或存在的组
数)时,您可能注意到使用“分组”求解方法近似于使用“菜单”求解
方法。“菜单”求解方法与“分组”求解方法的差异在于执行搜索的方
式。这两种方法的
选择、突变和交叉
例程不同;“分组”求解方法更关
注所有变量的值,因为其可以将一个组中的一组变量与另一个组中的一
组变量进行交换。
以下示例说明在调用 RISKOptimizer 之前位于某个工作表中的一组变量
值,以及在使用“分组”求解方法后,所生成的两个新方案的可能形式。
一组初始变量值 一组可能分组值 另一组可能分组值
6 6 8
7 6 7
8 8 6
8 7 7
84 模型定义命令
预算求解方法
“预算”求解方法与“菜单”求解方法相似,但不同之处在于所有变量
值的总和必须为一个特定数字。此数字是开始最优化时变量值的总和。
例如,您可能需要确定在几个部门之间分配年度预算的最佳方式。“预
算”求解方法将使用各部门当前值的总和,并将此总和用作要最优化分
配的总预算。以下是使用“预算”求解方法后,可能看似两个新方案的
示例。
一组初始预算值 一组可能预算值 另一组可能预算值
200 93.1 223.5
3.5 30 0
10 100 -67
10 .4 67
将会尝试许多值,但所有值的总和仍为 223.5。
项目求解方法
“项目”求解方法与“顺序”求解方法相似,只是某些项目(任务)必
须位于其他项目之前。您可以在项目管理中使用“项目”求解方法,以
重新排列任务的顺序,但此顺序将始终符合优先约束条件。
如果包含任务顺序的可调整单元格位于一列,而不是一行,则将更容易
处理和理解使用
项目
求解方法建模的问题。这是因为此求解方法预计采
用垂直方式(而非水平方式)来排列优先任务单元格,如果可调整单元
格也呈垂直排列,将会使工作表检查更为容易。
在指定可调整单元格的位置之后,您应在对话框的
优先任务
部分中指定
优先任务单元格的位置。这是一个描述哪些任务必须位于其他任务之后
的单元格表。此求解方法使用此表重新排列方案中变量的顺序,直到符
合优先约束条件。可调整单元格中每项任务的优先任务范围中应包含一
行。从优先任务范围的第一列开始,应在单独的列中列出该行任务所依
据的各任务的识别号码。
第五章:RISKOptimizer 参考指南 85
如何为“项目”求解方法设置引用单元的示例。
优先任务范围应指定为 n 行 m 列,其中 n 为项目(可调整单元格)中
的任务数,而 m 为任何一个任务所具有的最大优先任务数。
以下示例说明在调用 RISKOptimizer 之前位于某个工作表中的一组变
量值,以及在使用具有约束条件(2 必须始终位于 1 之后,而 4 必须始
终位于 2 之后)的项目求解方法后,所生成的两个新方案的可能形式。
一组初始变量值 一组可能项目值 另一组可能项目值
1 1 1
2 3 2
3 2 4
4 4 3
日程安排求解
方法
日程安排类似于分组;它属于任务与时间的分配。每项任务假设为花费
相同的时间,如同学校中同样课时长度的课程。但是,与分组不同,
“日程安排”求解方法的“可调整单元组设置”对话框使您可以直接指
定要使用的时段(组)数。请注意,当您选择“日程安排”方法时,此
对话框的下部将出现几个相关选项。
在
最优化参数
围。此范围可以是任何长度,但必须准确分为三列。可以识别的约束条
件有 8 类:
1)
(与)第
2)
(不与一起)第
3)
(早于)第
4)
(在)第
5)
(不晚于)第
前出现。
6)
(不早于)第
后出现。
7)
(不在)第
8)
(晚于)第
部分中,您将发现其中还提供了可以附加的约束单元格范
1
和第
3
列中的任务必须在同一时段内出现。
1
和第
3
列中的任务不能在同一时段内出现。
1
列中的任务必须在第
1
列中的任务必须在第
1
列中的任务必须与第
1
列中的任务必须与第
1
列中的任务不能在第
1
列中的任务必须在第
3
列中的任务之前出现。
3
列中的时段内出现。
3
列中的任务在同一时间或之
3
列中的任务在同一时间或之
3
列中的时段内出现。
3
列中的任务之后出现。
86 模型定义命令
您可以为约束条件输入数字代码(1 至 8)或说明(
晚于、不在等
)。
(注:RiskOptimizer 的所有语言版本均可以识别为约束条件输入的英
文说明以及其转换形式)。符合问题中指定的所有约束条件。要创建约
束条件,请在您的工作表中找到一个空位置并创建一个表,其中左右列
表示任务,而中间列表示约束条件的类型。数字 1 至 8 表示上面所列的
约束条件的类型。在开始最优化之前,约束条件范围中的单元格内必须
包含约束条件数据。
此任务 约束条件 此任务
5 4 2
12 2 8
2 3 1
7 1 5
6 2 4
9 3 1
以下示例说明在调用 RISKOptimizer 之前位于某个工作表中的一组变
量值,以及在使用“日程安排”求解方法后,所生成的两个新方案可能
形式。
一组初始变量值 一组可能日程安排值 另一组可能日程安排值
1 1 1
2 1 3
3 3 1
1 1 2
2 2 2
3 3 2
交叉和突变率
注:当您选择“日程安排”求解方法时,将始终使用从
(1、2、
3...
),无论可调整单元格中的初始值如何。
当您的问题似乎具有无限可能性时,搜索优化解法所遇到的关键难题之
1
开始的整数
一是决定将重点集中在何处。换言之,应投入多少计算时间来查看“解
法空间”的新领域,以及应投入多少时间来微调群体中已证明效果相当
不错的解法?
遗传算法之所以成功,很大一部分应归功于其本身能够保持这种平衡。
遗传算法的结构允许“繁殖”良好的解法,但也保留了“不太适合的”
组织以保持多样性,并希望隐藏的“基因”可以证明其对最终解法的重
要性。
第五章:RISKOptimizer 参考指南 87
交叉和突变
是两个可以影响搜索范围的参数,而 RISKOptimizer 允许
用户提前以及在进化过程中更改这些参数。这样一来,知识丰富的用户
可以通过确定遗传算法应将其重点集中在何处来帮助完成该算法。在大
多数情况下,不需要调整默认的交叉和突变设置(分别为 .5 和 .1 )。
如果您希望针对您的问题微调此算法、进行比较研究或仅为了试验,此
处对这两个参数进行了简要介绍:
• 交叉。交叉率可以设置在 0.01 和 1.0 之间,它反映了未来的方案或
“组织”将会包含上一代的父组织中信息组合的可能性。经验丰富
的用户可以通过微调 RISKOptimizer 在针对复杂问题方面的性能
来更改此比率。
换言之,0.5 的比率表示子孙组织中约 50% 的变量值来自某个父对
象,而剩余的值来自其他父对象。0.9 的比率表示子孙组织中约
90% 的值将来自第一个父对象,而 10% 来自第二个父对象。交叉
率 1 表示将不会发生交叉,因此将仅评估这些父对象的克隆。
RISKOptimizer 使用的默认比率为 0.5 。在 RISKOptimizer 开始解
决问题后,您可以通过使用“RISKOptimizer 观察器”来更改交叉
率(请参见本章的“RISKOptimizer 观察器”一节)。
• 突变率。突变率可以设置在 0.0 和 1.0 之间,它反映了未来的方案
将会包含某些随机值的可能性。较高的突变率仅表示将更多的突变
或随机的“基因”值引入群体。由于突变发生在交叉之后,因此将
突变率设置为 1(100% 随机值)可以有效阻止交叉产生任何效
果,而 RISKOptimizer 将生成完全随机的方案。
如果优化解法的所有数据均位于群体中的某个位置,则单独的交叉
运算符将足以在最后拼凑解法。突变已证实是生物界中的一种强大
力量,出于许多相同原因,遗传算法中也需要发生突变:保持单个
组织的多样化群体是至关重要的,这样可以防止群体变得过于僵
化,而无法适应动态环境。如同在遗传算法中一样,动物界中通常
是基因突变最终导致产生关键的新功能。
在大多数情况下,不需要调整默认的突变设置,但经验丰富的用户
可通过微调 RISKOptimizer 在针对复杂问题方面的性能来更改此
设置。如果 RISKOptimizer 的群体基本相同,并且没有在过去的
数百次试验中找到新的解法,则用户可能需要提高突变率。典型的
设置变化为 .06 到 .2 。在 RISKOptimizer 开始解决问题后,您可以
通过使用“RISKOptimizer 观察器”来动态更改突变率(请参见本
章后面的“RISKOptimizer
在“突变率”字段的下拉列表中选择
观察器”一节)。
自动
,即可选择自动突变率调
整。自动突变率调整允许 RISKOptimizer 在组织明显“老化”时
自动增加突变率;也就是说,其在整个延长数量的试验中一直保持
不变。对于许多模型,尤其是不知其最佳突变率的模型,选择“自
动”可以更快地获得更好的结果。
88 模型定义命令
时间块数和约束
单元格
优先任务
运算符
有关这些选项的更多信息,请参见本章
方法。
有关这些选项的更多信息,请参见本章
与“菜单”求解方法配合使用时,RISKOptimizer 将包括可选择的遗传
算子。单击“可调整单元组设置”对话框中的运算符选项卡,允许您选
择在为一组可调整单元格生成可能值时使用的特定遗传算子(如启发式
交叉或边界突变)。此外,您还可以使 RISKOptimizer 自动检验所有
可用的运算符,并确定用于您的问题的最佳运算符。
求解方法
求解方法
一节中的
一节中的
日程安排
项目
求解方法。
求解
遗传算法使用遗传算子从当前成员中创建群体的新成员。
RISKOptimizer 采用的两种遗传算子类型为
以确定“基因”(变量)是否将发生随机变化以及如何发生变化。交叉
运算符可以确定群体中的两个成员对如何交换基因来生成“子孙”,这
可能是比其任一“父对象”更好的答案。
第五章:RISKOptimizer 参考指南 89
突变和交叉
。突变运算符可
RISKOptimizer 包括以下专用遗传算子:
♦ 线性运算符 — 旨在解决优化解法位于由约束条件定义的搜索空间边
界的问题。此突变和交叉运算符对极其适合解决线性最优化问题。
♦ 边界突变 — 旨在快速最优化以单调方式影响结果的变量,并且可
以在不违反约束条件的情况下设置为其最大范围。
♦ 柯西突变 — 旨在大多数时候使变量产生较小的变化,但可偶尔产
生较大的变化。
♦ 不均匀突变 — 随着计算的试验的增多,产生的突变将越来越小。
这允许 RISKOptimizer 对答案进行“微调”。
♦ 算术交叉 — 通过采用算术方式结合两个父对象来创建新子孙(与
交换基因相反)。
♦ 启发式交叉 — 使用由父对象生成的值来确定如何生成子孙。沿着
最佳方向搜索并提供局部微调。
根据最优化问题的类型,不同的突变和交叉组合可能会产生比其他更好
的结果。在“可调整单元组设置”对话框的“运算符”选项卡中,如果
使用“菜单”求解方法,则可以选择任意数目的运算符。做出多个选择
时,RISKOptimizer 将检验所选运算符的有效组合,以确定用于您的模
型的最佳运算符。运行之后,
行期间的表现来对其进行排名。对于同一模型的后续运行,仅选择效果
最佳的运算符可以更快、更好地执行最优化。
最优化摘要表
将根据每个选定运算符在运
注:创建多个可调整单元格组时,请检查以确保几个不同的可调整单元
格组中不包含电子表格单元格。每个可调整单元格组应包含唯一的可调
整单元格,因为第一组可调整单元格中的值将被忽略并改写为第二组可
调整单元格中的值。如果您认为需要通过多个求解方法来说明问题,请
考虑如何将变量拆分为两个或更多的组。
90 模型定义命令
约束条件
RISKOptimizer 允许您输入要使解法有效而必须符合的约束条件或条
件。已输入的约束条件将显示在“模型定义”对话框的约束条件表中。
添加 — 添加约束
条件
单击约束条件表旁边的
在此对话框中输入约束条件。使用此对话框,您可以输入所需的约束条
件类型,以及其描述、类型、定义和评估时间。
添加
按钮可以显示约束条件设置对话框,您可以
第五章:RISKOptimizer 参考指南 91
约束条件类型
您可以在 RISKOptimizer 中指定两种类型的约束条件:
• 严格,或必须符合才能使解法有效的条件(即严格约束条件可以是
C10<=A4;在这种情况下,如果解法为 C10 生成的值大于单元格
A4 的值,则此解法将被丢弃)。
• 宽松,或我们希望尽可能符合,但可能会为了大大改进适应度或目
标单元格结果而愿意做出让步的条件(即宽松约束条件可以是
C10<100;C10 的值可以超过 100,但是,当此情况发生时,为目
标单元格计算的值将会根据您输入惩罚函数而减小)。
评估时间
模拟约束条件
可以在以下情况下评估严格约束条件:1) 在为试验解法运行的模拟的每
次迭代时(“迭代”约束条件)或 2) 在为试验解法运行的模拟结束时
(“模拟”约束条件)。
♦ 迭代约束条件是在为特定试验解法运行的模拟的每次迭代时评估的约
束条件。如果迭代生成违反严格约束条件的值,则模拟将被终止(试
验解法将被拒绝),并开始运行下一个试验解法及其相关模拟。
• 模拟约束条件采用电子表格单元格的模拟统计量表示;例如 A11
平均值
代约束条件相反,模拟约束条件绝对不会在完成之前使模拟终止。
模拟约束条件
均值
>1000 。在此示例中,在模拟结束时评估此约束条件。与迭
采用电子表格单元格的模拟统计量表示;例如 A11
>1000 。从可用的下拉列表中选择要在约束条件中使用的统计量:
的
的平
如果使用模拟约束条件,在每种试验解法的模拟过程中会为
围
生成可能值的分布。在每次模拟结束时,会检查此约束条件以查看其
是否已得到满足。如果模拟约束条件为严格
束条件,则此试验解法将被丢弃。如果约束条件为宽松
不
符合此约束条件,将根据输入的惩罚函数对要最小化或最大化的目标
单元格的统计量进行惩罚(请参见下一节
92 模型定义命令
约束条件,并且不符合此约
宽松约束条件
要约束的范
约束条件,并且
)。
简单和公式约束
条件
宽松约束条件
可以使用两种格式的输入约束条件 —
输入的信息类型取决于您选择的格式。
格式
—
简单
• 简单
入约束条件,其中单元格与输入的数字进行比较。典型的简单约束
条件为:
的值
0< A1
其中,在
值
框中输入 10 。可以从下拉列表框中选择所需的运算符。如果使
用简单值范围格式的约束条件,您可以只输入一个“最小”值、一
个“最大”值或同时输入二者。输入的最小值和最大值必须是采用
简单值范围约束条件格式的数值。
• 公式格式 — 公式格式允许您输入任何有效的 Excel 公式作为约束
条件,例如 A19<(1.2*E7)+E8 。RISKOptimizer 将检查输入的公式
估值是 TRUE 还是 FALSE ,以查看解法是否已符合约束条件。
宽松约束条件是我们希望尽可能符合,但可能会为了大大改进适应度或目
标单元格结果而愿意做出让步的条件。如果不符合宽松约束条件,则会引
起目标单元格中出现远离其优化值的变化。由不符合宽松约束条件所引起
的变化量将使用在指定宽松约束条件时输入的惩罚函数来进行计算。
单元范围
格式允许使用简单的 <、<= 、> 、>= 或 = 关系输
<10
框中输入 A1 ,在
简单和公式
最小值
框中输入 0,而在
。您可以为约束条件
最大
第五章:RISKOptimizer 参考指南 93
有关惩罚函数的更多信息,如下所示:
• 输入惩罚函数。RISKOptimizer 具有默认惩罚函数,此函数在您首次
输入宽松约束条件时显示。但是,可以在不符合宽松约束条件时,输
入任何有效的 Excel 公式来计算要应用的惩罚数额。输入的惩罚函数
应包括关键字
偏差
,此关键字表示约束条件超出其限制时所依据的绝
对量。在每次的试验解法模拟结束时,RISKOptimizer 会检查是否已
符合宽松约束条件;如果不符合,它将在输入的惩罚公式中加入偏差
量,然后计算要应用到目标单元格统计量的惩罚数额。
您可以在计算的目标单元格统计量中加上或减去惩罚数额,以降低
其“最佳”程度。例如,如果在 RISKOptimizer “模型”对话框的
最优化目标
字段中选择
最大值
,则将从计算的目标单元格统计量中
减去惩罚。
• 查看输入的惩罚函数的影响。RISKOptimizer 包括一个 Excel 工作
表 PENALTY.XLS ,此工作表可以用于评估不同的惩罚函数对特定
的宽松约束条件和目标单元格结果的影响。
94 模型定义命令