Palisade EVOLVER 5.7 User Manual [zh]

Page 1
用户指南
Evolver
Microsoft Excel 遗传算法
求解程序
第 5.7 版
2010 年 7 月
+1-607-277-8001(传真) http://www.palisade.com(网站) [email protected](电子邮件)
目录 i
Page 2
版权通告
版权所有©2010,PalisadeCorporation。
商标确认
Microsoft、Excel 和 Windows 是 Microsoft Corporation 的注册商标。 IBM 是 International Business Machines, Inc. 的注册商标。 Palisade、Evolver、TopRank、BestFit 和 RISKview 是 Palisade Corporation 的注册商标。
RISK 是 Tonka Corporation 分部 Parker Brothers 的商标,须获得许可才能使用。
ii
Page 3
目录
第一章:简介 v
简介.......................................................................................................3
安装说明................................................................................................7
第二章:背景知识 11
什么是 Evolver? ...............................................................................13
第三章:Evolver 分步介绍 19
简介.....................................................................................................21
Evolver 教程.......................................................................................23
第四章:应用示例 41
简介.....................................................................................................43
广告选择..............................................................................................45
按字母顺序排列...................................................................................47
任务分配..............................................................................................49
面包厂 .................................................................................................51
预算分配..............................................................................................53
化学平衡..............................................................................................55
课程安排程序 ......................................................................................57
目录 iii
Page 4
代码段组合程序 ..................................................................................59
达科他:具有约束条件的行程安排 .....................................................63
加工车间日程安排...............................................................................65
无线电塔位置......................................................................................67
投资组合平衡......................................................................................69
投资组合 .............................................................................................71
发电站................................................................................................. 73
采购 .................................................................................................... 75
推销员问题 .........................................................................................77
太空导航员 .........................................................................................79
交易者................................................................................................. 81
变压器................................................................................................. 83
交通 .................................................................................................... 85
第五章:Evolver 参考指南 87
模型定义命令......................................................................................89
“最优化设置”命令.............................................................................107
“开始最优化”命令.............................................................................112
“实用工具”命令 ................................................................................113
Evolver 观察器.................................................................................117
第六章:最优化 127
最优化方法 .......................................................................................129
Excel Solver.................................................................................... 135
iv
Page 5
问题类型............................................................................................139
第七章:遗传算法 143
简介...................................................................................................145
历史...................................................................................................145
生物示例............................................................................................147
数字示例............................................................................................149
第八章:Evolver 附加说明 153
添加约束条件 ....................................................................................155
提高速度............................................................................................162
如何执行 Evolver 的最优化..............................................................164
附录 A:Evolver 自动化 167
VBA ..................................................................................................167
附录 B:故障排除/问与答 169
附录 C:其他资源 171
其他学习资源 ....................................................................................171
词汇 177
索引 183
目录 v
Page 6
vi
Page 7

第一章:简介

简介.......................................................................................................3
开始之前 .....................................................................................................3
软件包内装物品..........................................................................................3
本版本简介..................................................................................................3
在您的操作环境中使用..............................................................................4
如果需要获得帮助......................................................................................4
打电话之前....................................................................................4
与 Palisade 联系...........................................................................5
学生版............................................................................................6
Evolver 系统要求.......................................................................................6
安装说明................................................................................................7
一般安装说明..............................................................................................7
从计算机上移除 Evolver .............................................................7
DecisionTools Suite.................................................................................7
设置 Evolver 图标或快捷方式..................................................................8
启动时的宏安全警告消息..........................................................................8
其他有关 Evolver 的信息........................................................................10
Evolver Readme ........................................................................10
Evolver 教程...............................................................................10
学习 Evolver.............................................................................................10
第一章:简介 1
Page 8
2 简介
Page 9
简介
Evolver 是迄今为止速度最快、最先进的基于遗传算法的商用优化程序。 通过应用功能强大的基于遗传算法的最优化方法,Evolver 能够找到标 准线性和非线性优化程序“无法解决”问题的优化解法。Evovler 有专 业版和正式版两种版本,允许您选择具有您所需功能的优化程序。
您正在阅读的《Evolver 用户指南 原理以及 Evolver 的独特遗传算法技术的几个应用示例。本套手册也 可以用作完整索引的参考指南,其中包含有关每种 Evolver 功能的说 明和实例。
》提供 Evolver 简介、Evolver 工作

开始之前

在安装和开始使用 Evolver 之前,请确保您的 Evolver 软件包包括所有 要求的物品,并确定您的计算机是否符合适当用途的最低要求。

软件包内装物品

Evolver 可以单独购买,也可以与 DecisionTools Suite 专业版和正式版 一起购买。Evolver CD-ROM 包含 Evolver Excel 插件、几个 Evolver 示例,以及完整索引的 Evolver 在线帮助系统。DecisionTools Suite 专 业版和正式版包括以上所有项目,以及附加应用程序。

本版本简介

本 Evolver 版本可以作为 Microsoft Excel 2000 或更高版本的 32 位程序 安装。
第一章:简介 3
Page 10

在您的操作环境中使用

本《用户指南》假设您掌握了 Windows 操作系统和 Excel 的一般知识。特 别是以下知识:
♦
熟悉自己的计算机和鼠标的用法。
♦
熟悉图标、单击、双击、菜单、窗口、命令和目标等术语。
♦
理解目录结构和文件命名之类的基本概念。

如果需要获得帮助

我们向拥有有效维护计划的所有 Evolver 注册用户免费提供技术支持, 或按照每次事件收取服务费。要确保您是 Evolver 的注册用户,
请在以下网站注册:http://www.palisade.com/support/register.asp。
如果通过电话与我们联系,请准备好您的序列号和《用户指南》。如果您 坐在计算机前并作好准备,这将有助于我们为您提供更好的技术支持。
打电话之前
在与技术支持部联系之前,请检查以下核对清单:
是否已经查阅了在线帮助?
•
•
是否已经查阅本《用户指南》,并查看了联机多媒体教程?
•
是否已经阅读 有关
Evolver
•
是否是能够始终重复出现的问题?是否是能够在另一台计算机或不
README.WRI
的最新信息。
同型号的计算机上重复出现的问题?
•
是否已经在互联网上查阅了我们的网站?我们的网址为:
http://www.palisade.com
文件?该文件包含可能未纳入手册的
。我们的网站还在“技术支持”部分中 提供最新常见问题解答(可搜索的技术支持问答数据库)和 补丁。我们建议您定期访问我们的网站,了解有关 他
Palisade
软件的最新信息。
Evolver
Evolver
以及其
4 简介
Page 11
与
Palisade
联系
Palisade Corporation 欢迎您提出有关 Evolver 的问题、评论意见或建 议。请用以下任何一种方法与我们的技术支持部人员联系:
•
请发送电子邮件至 请在美国东部时间上午
•
+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
9
点至下午
5
点(星期一至星期五)致电
,并按照提示接通技术支持部。
+1-607-277-8001。
(英国)。
+44 1895 425051
(英国)。
如果您希望与 Palisade 亚太分部联系:
•
请发送电子邮件至
•
请致电
•
请发送传真至
•
请寄邮件至:
Palisade Asia-Pacific Pty Limited Suite 404, L4, 20 Loftus Street Sydney NSW 2000 AUSTRALIA
无论您用何种方法与我们联系,请提供产品名称、版本和序列号。请在 Excel 的 Evolver 菜单上选择“帮助”命令,查找确切的版本。
第一章:简介 5
+61 2 9252 5922
(澳大利亚)。
+61 2 9252 2820
(澳大利亚)。
Page 12
学生版
不为 Evolver 学生版提供技术支持。如果需要获得帮助,我们建议您采 取以下替代方法:
♦
向您的教授或助教咨询。 登录以下网站查找常见问题的回答:
♦ ♦
通过电子邮件或传真与我们的技术支持部联系。
http://www.palisade.com。

Evolver 系统要求

Evolver 系统要求包括:
•
配备硬盘的
• Microsoft Windows 2000 SP4
• Microsoft Excel 2000
Pentium
个人计算机或速度更快的个人计算机。
或更高版本。
或更高版本。
6 简介
Page 13

安装说明

Evolver 是 Microsoft Excel 的插件程序。通过在 Excel 菜单栏上添加命 令,Evolver 可以增强电子表格程序的功能。

一般安装说明

安装程序会将 Evolver 系统文件复制到您指定的硬盘目录中去。要在 Windows 2000 或更高版本的系统上运行安装程序:
将
Evolver 或 DecisionTools Suite
1)
的
CD-ROM
驱动器中
专业版或正式版
CD-ROM
插入您
从计算机上移除
Evolver
依次单击“开始”按钮、“设置”和“控制面板”
2)
双击“添加/删除程序”图标
3)
在“安装/卸载”选项卡上,单击“安装”按钮
4)
5)
按照屏幕上显示的“安装”说明进行安装
如果您在安装 Evolver 时遇到问题,请确认尝试安装 Evolver 的驱动器 是否有足够的空间。释放足够的空间后,尝试重新运行安装程序。
如果您希望从计算机上移除 Evolver(或 DecisionTools Suite),请使 用控制面板的“添加/删除程序”实用程序,并选择 Evolver 或 DecisionTools Suite 条目。

DecisionTools Suite

Evolver 可以与 Palisade Corporation 提供的一套风险与决策分析产品 DecisionTools Suite 配合使用。Evolver 的默认安装程序会将 Evolver 放入“Program Files\Palisade”主目录的一个子目录内。这与通常将 Excel 安装至“Microsoft Office”目录的一个子目录非常相似。
“Program Files\Palisade”目录的一个子目录将成为 Evolver 目录 (默认名称为 Evolver5)。该目录包含 Evolver 插件程序文件 (EVOLVER.XLA)、模型示例以及运行 Evolver 所需的其他文件。 “Program Files\Palisade”的另一个子目录是“SYSTEM”目录,该 目录包含 DecisionTools Suite 中的每个程序所需的文件,包括普通帮 助文件和程序库。
第一章:简介 7
Page 14

设置 Evolver 图标或快捷方式

在 Windows 中,安装程序会自动在任务栏的“程序”菜单中创建 Evolver 命令。但是,如果在安装过程中出现问题,或者希望以后再以 手动方式设置,请遵循以下说明:
单击“开始”按钮,然后将光标指向“设置”。
1)
2)
单击“任务栏”,然后单击“开始菜单”选项卡。
3)
单击“添加”,然后单击“浏览”。
4)
找到
EVOLVER.EXE
5)
单击“下一步”,然后双击您希望显示程序的菜单。
6)
键入名称“
Evolver
文件,并双击此文件。
”,然后单击“完成”。

启动时的宏安全警告消息

Microsoft Office 提供几种不同的安全设置,以防不受欢迎的或恶意的宏 在 Office 应用程序中运行。除非使用最低安全设置,否则在每次尝试载 入带有宏的文件时,系统都会显示一条警告消息。为了防止在每次运行 Palisade 插件时显示此消息,Palisade 以数字方式在所提供的插件文件 中签名。因此,一旦将 Palisade Corporation 指定为受信任的发布者, 您就可以使用任何 Palisade 插件,而不会再显示警告消息。要进行此操 作:
• 在使用 Evolver 时,如果显示“安全报警”对话框(例如以下对话
框),请单击信任来自此发布者的所有文档。
8 安装说明
Page 15
第一章:简介 9
Page 16

其他有关 Evolver 的信息

用户可在以下来源中查找其他有关 Evolver 的信息:
Evolver Readme
教程
Evolver
该文件包含 Evolver 的简单总结,以及有关您的软件最新版本的任何最 新新闻或信息。要查看 Readme 文件,请选择 Windows“开始”菜单/ “程序”/“Palisade DecisionTools”/“Readmes”,然后单击 “Evolver 5.7 – Readme”。在使用 Evolver 之前阅读该文件会有帮助。
Evolver 联机教程向新用户提供有关 Evolver 和遗传算法的简介。观看 该演示只需几分钟时间。请参见以下“学习 Evolver”一节中有关如何 访问教程的信息。

学习 Evolver

熟悉 Evolver 的最快方法是使用 Evolver 联机教程,业界专家会以电影 格式引导您观看模型样本。本联机教程是有关 Evolver 主要功能的多媒 体演示。
用户可以通过选择 Evolver“帮助”菜单的“入门教程”命令,运行联 机教程。
10 安装说明
Page 17

第二章:背景知识

什么是 Evolver? ...............................................................................13
Evolver 工作原理?.................................................................................14
遗传算法......................................................................................14
什么是最优化?........................................................................................15
为什么要建立 Excel 模型? ....................................................................15
为什么要使用 Evolver?.........................................................................16
无需猜测......................................................................................16
更准确、更有意义 ......................................................................16
更灵活..........................................................................................17
功能更强大..................................................................................17
更便于使用..................................................................................17
成本效益......................................................................................18
第二章:背景知识 11
Page 18
12
Page 19

什么是 Evolver?

Evolver 软件包向用户提供了一种查找几乎任何类型问题的优化解法的 简便方法。简言之,Evolver 可以确定生成所需输出项的最佳输入项。 您可以使用 Evolver 查找变量的适当搭配、顺序或组合,使之生成最高 的利润、最低的风险或使用最少量的材料生产最多的商品。Evolver 最 常用作 Microsoft Excel 电子表格程序的插件;用户在 Excel 中建立问题 的模型,然后调用 Evolver 来解决问题。
您必须首先在 Excel 中建立问题的模型,然后在 Evolver 插件中描述问题。
Excel 为大多数用户创建问题的切合实际的模型提供所需的所有公式、函 数、图形和宏功能。Evolver 法的接口,并提供查找解法的引擎。将 Excel 与 Evolver 结合,能够找 到几乎所有可模型化问题的优化解法。
第二章:背景知识 13
提供描述模型中的不确定因素和要查找解
Page 20

Evolver 工作原理?

遗传算法
Evolver 使用一套专有
Evolver 使用遗传算法查找您模型的最佳解法。遗传算法模拟达尔文的
自然选择法则,方法是创建一个允许某个问题的数百种可能解法相互竞 争的环境,最后只留下“最适合的”解法。如同生物进化一样,每个解 法可以通过“子孙”解法遗传良好的“基因”,因此整个解法群体将继 续进化为更好的解法。
您可能已经注意到,在遗传算法中使用的术语通常与生物进化中使用的 术语相似。我们会谈到“交叉”功能如何帮助确定查找解法的重点、“突 变”率如何帮助使“基因群”多样化,并且我们会评估整个解法“群 体”或“组织”。要详细了解 Evolver 遗传算法的工作原理,请参见第 七章 — 遗传算法。
遗传算法
搜索问题的优化解法。
14 什么是 Evolver?
Page 21

什么是最优化?

最优化是尝试查找可能有多种可能解法问题的最佳解法的过程。大多数 问题涉及众多根据特定公式和约束条件相互作用的变量。例如,一家公 司可能有三家制造厂,每家制造厂制造不同数量的不同商品。根据每家 制造厂生产每种商品的成本、每家制造厂将商品运送至每家商店的成本 和每家制造厂的限制条件,可以在充分满足当地零售店需求量的同时, 并且将运输成本降至最低的最优方法是什么?这就是最优化工具设计用 来回答的一种问题。
最优化经常用于确定
从特定资源产生最多产量的组合。
在上例中,每种建议的解法都有一份完整的列表,包括将哪家制造厂生 产的哪些商品用什么卡车运送至哪一家零售店的信息。其他最优化问题 的示例包括确定如何产生最高利润、最低成本、拯救最多的生命、电路 中的噪音最低、在一组城市之间最短的路程或广告媒体采购最有效的组 合。最优化问题的一个重要子集涉及日程安排,其目标可以包括在工作 班次中最大程度提高效率或尽量减少在不同时间进行团体会议的日程冲 突。要详细了解最优化,请参见第六章 — 最优化
。

为什么要建立 Excel 模型?

为了提高任何系统的效率,我们必须首先了解系统的行为方式。这就是 我们需要构建系统工作模型的原因。在研究复杂系统时,模型是必要的 抽象概念,但为了使结果可以应用于“真实的世界”,模型不能将变量 之间的因果关系过于简单化。更好的软件和功能日益强大的计算机允许 经济学家构建更切合实际的经济模型,允许科学家改善对化学反应的预 测,并且允许商界人士提高企业模型的灵敏度。
在过去几年内,计算机硬件和软件程序(例如 Microsoft Excel)取得了 巨大的发展,几乎任何拥有个人计算机的人都能为复杂系统创建切合实
第二章:背景知识 15
Page 22
际的模型。Excel 的内建函数、宏功能和简洁直观的界面使初学者可以对 复杂的问题建立模型并进行分析。要详细了解模型的构建,请参见第九 章 — Evolver 附加说明。

为什么要使用 Evolver?

Evolver 的独特技术允许任何拥有个人计算机和 Windows Excel 的人享 受最优化的益处。在 Evolver 问世之前,希望提高效率或查找优化解法 的人有三个选择:猜测、使用功能低的问题求解软件或聘用最优化咨询 领域的专家设计和构建定制软件。以下是使用 Evolver 的几个最重要的 优势:
无需猜测
更准确、更有意义
当您在处理大量相互作用的变量、尝试确定变量的最佳搭配、适当的顺 序和最佳组合时,您可能会倾向于只做出“有根据的猜测”。很多人认 为除猜测之外的任何类型的模型建立和分析都需要复杂的编程,或令人 困惑的统计或数学算法。一种良好的最优化解法可以节约数百万美元、 数千加仑稀缺燃料、几个月的时间等。现在,功能强大的台式计算机的 价格越来越便宜,并且 Excel 和 Evolver 之类的软件随手可得,因此我 们就没有理由再猜测解法,或以手工方法尝试多种选择方案,而浪费宝 贵的时间。
Evolver 允许您使用全套 Excel 公式,甚至是宏来为任何系统创建更切合 实际的模型。在使用 Evolver 时,您无需因为所使用的算法无法处理现 实世界的复杂问题而“损害”模型的准确性。传统的“婴儿”求解程序 (统计和线性编程工具)强制用户对变量在问题中相互作用的方式做出 假设,从而迫使用户建立过于简单且不切实际的问题模型。当用户对系 统进行简化以使其可以使用这些求解程序时,生成的解法通常因为过于 抽象而没有实际价值。无论您尝试将模型设计得多么简单,任何涉及大 量变量、非线性函数、查找表、假定陈述、数据库查询或随机元素的问 题都无法使用这些方法解决。
16 什么是 Evolver?
Page 23
更灵活
有许多求解算法可以解决小型、简单的线性和非线性类型的问题,这些 算法包括登山、婴儿求解程序和其他数学方法。即使作为电子表格的插 件提供,这些一般用途的最优化工具只能进行数字最优化。对于更大型 或更复杂的问题,您也许能够编写具体的自定义算法,并获得良好的结 果,但可能需要进行很多研发工作。即使如此,每当您的模型变化时, 都需要对生成的程序进行修改。
Evolver 不仅能够处理数字问题,而且是世界上唯一一种能够解决大多 数组合问题的商用程序。这些是必须将变量打乱(序列改变)或相互组 合的问题。例如,为棒球队选择击球顺序是一个组合问题;这是一个交 换队员在队列中位置的问题。复杂的日程安排问题也是组合问题。 Evolver 能够解决所有此类型的问题,以及很多任何其他程序无法解决 的问题。Evolver 的独特 最优化,包括任何大小和任何复杂性的模型。
遗传算法
技术允许对几乎任何类型的模型进行
功能更强大
更便于使用
Evolver 能够找到更好的解法。大多数软件使用数学和系统方法推导出 优化解法。这些方法常常局限于利用一种现有解法,并且只查找最接近 且更好的答案。这种“局部”解法可能远非优化解法。Evolver 以智能 方式从整个可能性领域提取样本,从而生成更好的“整体”解法。
尽管 Evolver 明显具有强大功能和灵活优势,但该程序仍然便于使用, 因为用户完全没有必要理解 Evovler 使用的复杂遗传算法技术。Evolver 不关心您问题的“具体细节”;只需要一个能够评估不同选择方案优良 程度的电子表格模型。只需选择包含变量的电子表格单元格,并告知 Evolver 需要查找的内容即可。Evolver 以智能方式将困难的技术隐藏起 来,自动运行分析问题的“假设分析”过程。
尽管已经开发出许多用于数学编程和模型建立的商用程序,但电子表格 仍然是最受欢迎的程序,每个月的销售量都达到数百万套。由于电子表 格使用直观的行和列格式,因而比其他专用软件包更容易设置和维护。 此外,电子表格与其他程序(例如文字处理程序和数据库)的兼容性更 好,并且比任何其他独立软件包提供更多的内建公式、格式化选项、 图形绘制和宏功能。由于 Evolver 是 Microsoft Excel 的插件,因此用户 可以使用所有功能和开发工具,方便地为系统建立更切合实际的模型。
第二章:背景知识 17
Page 24
成本效益
很多公司都聘请了经过培训的顾问来为他们提供自定义最优化系统。 此类系统通常能够很好地运行,但可能需要数月时间和大笔投资进行开 发和实施。而且此类系统很难学习,因此要求提供费用高昂的培训和持 续不断的维护。如果您必须对系统进行改动,则您可能需要开发一套全 新的算法,才能找到优化解法。Evolver 只需相当少的投资就能提供功 能最强大的遗传算法,并且能为各种不同的问题提供快速、准确的解法。 由于 Evolver 在直观且熟悉的环境中运行,因此几乎无需进行任何费用 高昂的培训和维护。
您甚至可以希望将 Evolver 的最优化功能添加到自己的自义定程序中。 只需几天时间,您就能够使用 Visual Basic 开发自己的日程安排、 配送、制造或财务管理系统。有关开发基于 Evolver 的应用程序的详细 信息,请参见“Evolver Developer Kit”。
18
Page 25

第三章:Evolver 分步介绍

简介.....................................................................................................21
Evolver 教程.......................................................................................23
启动 Evolver.............................................................................................23
Evolver 工具栏...........................................................................23
打开示例模型..............................................................................24
Evolver“模型”对话框..............................................................................25
选择目标单元格........................................................................................25
添加可调整单元格范围............................................................................26
选择求解方法..............................................................................28
约束条件 ...................................................................................................29
添加约束条件..............................................................................30
简单值范围和公式约束条件 ......................................................30
其他 Evolver 选项....................................................................................33
停止条件......................................................................................33
视图选项......................................................................................34
运行最优化................................................................................................35
Evolver 观察器...........................................................................36
停止最优化..................................................................................37
摘要报表......................................................................................38
将结果放在模型中 ......................................................................39
第三章:Evolver 分步介绍 19
Page 26
20
Page 27
简介
在本章中,我们将逐步向您介绍 Evolver 的所有最优化设置。如果您没 有在硬盘中安装 Evolver,请在开始本教程之前参见第一章:安装 装部分并安装 Evolver。
首先,我们将打开预制的电子表格模型,然后将使用概率分布和 Evolver 对话框定义 Evolver 中的问题。最后,当 Evolver 正在查找解 法时,我们将检查 Evolver 的进度,并研究 Evolver 观察器的多个选项 中的部分选项。有关任何特定主题的附加信息,请参见本手册后面的索 引或第五章:Evolver 参考资料
。
的安
注:以下所示屏幕来自 则屏幕上显示的窗口可能与图片稍有不同。
通过一个可以准确表示您的问题的模型,开始问题的求解过程。您的模 型必须能够评估一组特定的输入值(可调整单元格),并生成这些输入 项在解决问题方面表现的数字评级(评估或“适应度”函数)。当 Evolver 查找解法时,本适应度函数提供反馈信息,告知 Evolver 每个 猜测好或差的程度,从而使 Evolver 生成越来越好的猜测。创建问题的 模型时,您必须密切关注适应度函数,因为 Evolver 将尽一切能力使此 单元格最大化(或最小化)。
Excel 2007
。如果您正在使用
Excel
的其他版本,
第三章:Evolver 分步介绍 21
Page 28
22
Page 29
Evolver 教程

启动 Evolver

Evolver
工具栏
您可以选择以下方式启动 Evolver:1) 图标,或者 2) 在 Windows“开始”菜单的“程序”条目中依次选择
Palisade DecisionTools Microsoft Excel
加载 Evolver 后,将会在 Excel 中显示一个新的 Evolver 功能导航栏或 工具栏。此工具栏中包含可以用于指定 Evolver 设置,以及用于启动、 暂停和停止最优化的按钮。
和
Evolver。
和
Evolver 5.7
单击
Windows 桌面上的 Evolver
。以上两种方法均可以启动
第三章:Evolver 分步介绍 23
Page 30
打开示例模型
要查看 Evolver 的功能,您需要查看在安装 Evolver 时所安装的示例模 型。要进行此操作:
使用“帮助”菜单中的“电子表格示例”命令,打开
1)
TUTORIAL WALKTHROUGH.XLS
此工作表示例包含一家面包厂业务中的一个简单的利润最大化的问题。 您的面包厂生产 6 种面包产品。您是面包厂的经理,负责追踪生产过程 中的收入、成本和利润。您需要确定每种面包的箱数,从而使总利润最 大化,同时能够满足生产限制要求。您面前的要求包括:1)
面包的生产配额
,2)
保持可接受的高纤维面包与低热量面包的比率 保持可接受的五谷面包与低热量面包的比率 用的员工工时的限制之内
。
工作表。
,以 及 4)
BAKERY –
满足低热量
,3)
保证生产时间在所
24 Evolver 教程
Page 31

Evolver“模型”对话框

要设置此工作表的 Evolver 选项:
1)
单击
Evolver
将会显示以下的 Evolver“模型”对话框:
工具栏上的
Evolver
模型图标(在工具栏的最左侧)。
Evolver“模型”对话框旨在使用户能够以简单明了的方式描述其问题。 在教程示例中,我们要尝试确定要生产的不同面包产品的箱数,从而使 总利润最大化。

选择目标单元格

示例模型中的“总利润”就是所说的目标单元格。这是您尝试最小化或 最大化其所包含值的单元格,或尝试使其值尽量接近预设值的单元格。 要指定目标单元格:
1)
将“最优化目标”选项设置为“最大值”。
在“单元格”字段中,输入目标单元格
2)
在 Evolver 对话框字段中输入单元格引用的方法有两种:1) 使用鼠标指 针单击字段,并在字段中直接输入引用,或者 2) 将光标放置在选中字段 上,然后单击“引用条目”图标,以便用鼠标直接选择工作表单元格。
第三章:Evolver 分步介绍 25
$I$11
。
Page 32

添加可调整单元格范围

现在,您必须指定包含数值的单元格的位置,Evolver 可以调整这些数 值来查找解法。您可以通过“模型”对话框的 个单元块中一次性添加和编辑这些变量。此外,可以在“可调整单元范 围”内输入的单元格的数目视您正在使用的 Evolver 版本而定。
1)
单击“可调整单元范围”部分中的“添加”按钮。
在
2)
Excel
单元格。
中选择
$C$4:$G$4
作为要添加到可调整单元格范围的
可调整单元范围
部分在一
输入可调整单元 格的取值范围
在大多数情况下,您需要将可调整单元格范围的可能值限制在一个特定 的取值范围内。在 Evolver 中,将其称为“范围”约束条件。当选择一 组要调整的单元格时,您可以快速输入此取值范围。以面包厂为例,在 此范围内,生产的每种面包产品的箱数的最小可能值为 0,而最大可能 值为 100,000。要输入此范围约束条件:
1)
在“最小值”单元格中输入 0,而在“最大值”单元格中输入
100,000
在“值”单元格中,从下拉列表中选择“整数”
2)
。
26 Evolver 教程
Page 33
接下来,输入要调整的另一个单元格范围:
1)
单击“添加”,以输入另一个可调整单元格。 选择单元格
2)
输入
3)
这可以指定最后的可调整单元格 B4 代表低热量面包的生产水平。
如果此问题中还存在其他变量,我们将继续添加几组可调整单元格。在 Evolver 中,您可以创建数量不受限制的可调整单元格组。要添加更多 单元格,请再次单击“添加”按钮。
20,000
B4。
作为“最小值”,而输入
100,000
作为“最大值”。
稍后,您可能需要检查可调整单元格或更改其中的一些设置。要执行此 操作,只需在表格中编辑取值范围。您也可以选择一组单元格,然后单 击“删除”按钮将其删除。
第三章:Evolver 分步介绍 27
Page 34
选择求解方法
定义可调整单元格时,您可以指定要使用的 可以处理不同类型的可调整单元格。设置求解方法以用于可调整单元格 组,而且可以通过单击 行更改。通常,您将使用默认的“菜单”求解方法;在此求解方法中, 每个单元格值可以独立与其他单元格进行更改。由于将其选为默认方法, 因此您无需进行更改。
“组”
按钮和显示可调整单元设置对话框对其进
求解方法
。不同的求解方法
“菜单”和“顺序”求解方法是最常用的方法,而且可以将其结合使用, 以解决复杂的组合问题。尤其值得一提的是,“菜单”求解方法将每个 变量视为菜单中的基本成分,其通过分别更改每个变量的值来尝试确定 “最佳搭配”。与此相反,“顺序”求解方法在变量之间交换值,按不 同的方式排列初始值以确定“最佳顺序”。
对于此模型,将“求解方法”设置为“菜单”,然后只需:
♦ 在“描述”字段中输入“生产的箱数”标记。
28 Evolver 教程
Page 35
约束条件
Evolver 允许您输入约束条件,必须符合这些条件才能使解法有效。在 此示例模型中,必须符合三个附加约束条件,才能使每种面包产品的一 组可能生产水平有效。这些是除我们已为可调整单元格输入的范围约束 条件之外的附加约束条件。这三个约束条件如下所示:
1) 保持可接受的高纤维面包与低热量面包的比率(生产的高纤维面包
的箱数 >= 1.5 * 生产的低热量面包的箱数)
2) 保持可接受的五谷物面包与低热量面包的比率(生产的五谷物面包
的箱数 >= 1.5 * 生产的低热量面包的箱数)
3) 保证生产时间在所用的员工工时的限制之内(所用的员工总工时 <
50,000)
当 Evolver 每次针对您的模型生成一个可能解法时,Evolver 会检查此 解法是否符合您已输入的约束条件。
约束条件显示在 Evolver“模型”对话框底部的 在 Evolver 中指定两种类型的约束条件:
♦ 严格。必须符合才能使解法有效的条件(例如,严格迭代约束条件
为 C10<=A4;在这种情况下,如果解法为 C10 生成的值比 A4 单元 格的值大,则此解法将会被丢弃)
♦ 宽松。我们希望尽可能符合,但可能会为了大大改进适应度或目标
单元格结果而愿意做出让步的条件。(即宽松约束条件可以是 C10<100。在这种情况下,C10 的值可以超过 100,但是,当此情况发 生时,为目标单元格计算的值将会根据您输入惩罚函数而减小)。

约束条件

部分。您可以
第三章:Evolver 分步介绍 29
Page 36
添加约束条件
简单值范围和公 式约束条件
要添加约束条件:
1)
请单击
“约束条件设置”对话框将会显示,您可以在其中输入模型的约束条件。
可以使用 用简单的 <、<=、>、>= 或 = 关系输入约束条件。典型的简单值范围约 束条件为 0< A1 中输入 0,而在 算符。如果使用简单值范围格式的约束条件,您可以只输入一个“最小” 值、一个“最大”值或同时输入二者。
Evolver
简单和公式
的值
最大值
主对话框的“约束条件”部分的“添加”按钮
这两种格式输入约束条件。简单值范围格式允许使
<10,其中在
框中输入 10。可以从下拉列表框中选择所需的运
单元格范围
框中输入 A1,在
。
最小值
框
公式约束条件则允许您输入任何有效的 Excel 公式作为约束条件,例如 A19<(1.2*E7)+E8。对于每种可能解法,Evolver 将检查输入的公式估值 是 TRUE 还是 FALSE,以查看解法是否已符合约束条件。如果您希望将 工作表单元格中的布尔公式用作约束条件,只需在“约束条件设置”对
公式
话框的
30 Evolver 教程
字段中引用此单元格。
Page 37
要输入面包厂模型的约束条件,您要指定三个新的严格约束条件。必须 符合这些作为已输入条件的严格约束条件,否则 Evolver 将会丢弃可能 解法。首先,输入简单值范围格式的严格约束条件:
在“描述”框中,输入“可接受的总工时”。
1)
在“要约束的范围”框中,输入
2)
3)
在“要约束的范围”框的右侧,选择
在“最大值”框中,输入
4)
清除“最小值”框中的默认值 0。
5)
在“要约束的范围”框的左侧,通过从下拉列表中选择空白来清除
6)
运算符
7)
单击“确定”以输入此约束条件。
50,000。
I8。
<=
运算符。
第三章:Evolver 分步介绍 31
Page 38
接下来,输入公式格式的严格约束条件:
1)
单击“添加”以再次显示“约束条件设置”对话框。
在“描述”框中,输入“可接受的高纤维面包与低热量面包的比率”。
2)
3)
在“条目样式”框中,选择“公式”。
在“约束条件公式”框中,输入
4)
5)
单击“确定”。
单击“添加”以再次显示“约束条件设置”对话框。
6)
7)
在“描述”框中,输入“可接受的五谷物面包与低热量面包的比率”。
在“条目样式”框中,选择“公式”。
8)
9)
在“约束条件公式”框中,输入
单击“确定”
10)
已完成“约束条件”部分的“模型”对话框应如下所示。
C4>= 1.5*B4。
D4>= 1.5*B4。
32 Evolver 教程
Page 39

其他 Evolver 选项

停止条件
在最优化过程中,可以使用 项来控制 Evolver 的运行方式。让我们来指定一些停止条件和更新显示 设置。
Evolver 将按照您的要求运行。当处于以下情况时,停止条件允许 Evolver 自动停止运行:a)
耗一定数量的时间, 入的
Excel
公式评估为
1)
单击
Evolver
2)
选择“运行时间”选项卡。
c)
工具栏上的“最优化设置”图标。
更新显示、随机数种子和停止条件
已检查一定数目的方案或“试验”,
未在最后
TRUE。要查看和编辑停止条件:
n
个方案中找到改进之处,
之类的选
b)
或者 d)
已消 已输
在“最优化设置”对话框中,您可以选择这些最优化停止条件的任意组 合,或者根本不选择任何停止条件 所选的任何一个停止条件时,Evolver 均将停止运行。如果没有选择任 何停止条件,Evolver 将会一直运行,除非按 Evolver 工具栏中的“停 止”按钮,以手动方式将其停止运行。
第三章:Evolver 分步介绍 33
。如果选择了多个停止条件,当符合
Page 40
视图选项
试验
此选项设置您希望 Evolver 运行的 “试验”的数目。 在每次试验中, Evolver 会评估一 整套变量或问题的 一种可能解法。
分钟数
在已消耗指定数 量的时间后, Evolver 将会停 止运行。此数目 可以是分数 (4.25)。
上一次中的变化
此停止条件是最常用的条 件,因为它跟踪改进之处, 并允许 Evolver 在改进比 率降低之前保持运行。例 如,我们已通过了 100 次 试验,而到目前为止,尚 未在最佳方案中找到任何 改进之处,此时 Evolver 将会停止运行。
公式为真
在模型重新计算 中,如果已输入的
Excel 公式评估为 TRUE,Evolver 将 会停止运行。
♦ 关闭所有停止条件可以使 Evolver 自由运行。
当 Evolver 运行时,“视图”选项卡上提供的一组选项可以确定您在屏 幕上看到的内容。
34 Evolver 教程
Page 41
“最优化期间”选项包括:
每次试验
此选项在每次计算后重画 屏幕,允许您查看 Evolver 调整变量和计算输出项的 过程。在您学习 Evolver, 以及每次针对一个新模型 使用 Evolver 时,我们建 议您打开此选项,以确定 您的模型是否正在进行正 确计算。
每个新的最佳试验
每次当 Evolver 生成一个新的 最佳答案时,此选项会重画屏 幕,允许您在最优化过程中随 时查看当前的优化解法。
在最优化过程中,此选项从 不重画屏幕。这可以使最优 化以最快的速度完成,但是 对运行过程中的计算结果提 供的反馈信息较少。
从来没有
♦ 打开“每次试验”

运行最优化

现在,所有要做的事就是最优化此模型,以使总利润最大化,同时满足 生产限制要求。要进行此操作:
1)
单击“确定”以退出“最优化设置”对话框。
单击“开始最优化”图标
2)
当 Evolver 开始研究您的问题时,您将在电子表格中看到可调整单元格
生产的箱数
当前的最佳值。
总利润
的最佳值会在单元格中突出显示。
在运行过程中,“进度”窗口会显示:1) 到目前为止找到的最佳解法,
2) Evolver 开始最优化时,目标单元格的初始值,3) 对您的模型所执行 的试验次数,以及有效试验次数;即符合所有约束条件,以及 4) 在最优 化过程中已消耗的时间。
在运行过程中,您可以随时单击 Excel 更新选项图标来查看每次试验的 屏幕的实时更新。
第三章:Evolver 分步介绍 35
Page 42
Evolver
观察器
Evolver 也可以显示每种试验解法的运行日志。当 Evolver 运行时,会 在“Evolver 观察器”中显示此运行日志。“Evolver 观察器”在运行 时允许您研究和修改问题的多个方面。要查看试验的运行日志:
1)
请单击“进度”窗口中的“观察器”(放大镜)图标,以显示 “
Evolver
观察器”
单击“日志”选项卡。
2)
此报表中会显示每种试验解法的结果。 化或最小化的目标单元格的值 — 在此案例中,总利润在 $I$11 中。 C4 至 G4 列确定用于可调整单元格的值。
结果
列按试验显示您要尝试最大
36 Evolver 教程
Page 43
停止最优化
五分钟后,Evolver 将停止最优化。您也可通过以下方式停止最优化:
1)
单击
Evolver
当 Evolver 进程停止时,Evolver 会显示“停止选项”选项卡,此选项 卡提供以下选择:
当符合“Evolver 最优化设置”对话框中设置的任何一个停止条件时, 这些相同选项将会自动出现。
观察器或进度窗口中的“停止”图标。
第三章:Evolver 分步介绍 37
Page 44
摘要报表
Evolver 可以创建一个最优化摘要报表,其中包含诸如运行日期和时间、 使用的最优化设置、计算的目标单元格的值,以及每个可调整单元格的 值之类的信息。
对于比较连续最优化的结果,此报表将非常有用。
38 Evolver 教程
Page 45
将结果放在模型中
要将面包厂的六种面包的新的且已最优化的生产水平组合放在您的工作 表中:
1)
请单击“停止”按钮。 确保将“将显示在工作簿中的可调整单元格值更新到”选项设置为
2)
“最佳”
Evolver 将会返回到 BAKERY – TUTORIAL WALKTHROUGH.XLS 电 子表格,其中包含创建了最佳解法的所有新变量值。
重要提示:在我们的示例中,尽管您看到 利润为
异由 Evolver 与所有其他问题求解算法之间的重要区别造成:这是 Evolver 遗传算法引擎的随机性,它使 Evolver 能够解决各种不同问题, 并找到更佳解法。
在您保存已在其上运行过 Evolver 的任何工作表时(即使在运行 Evolver 之后“恢复”了工作表中的初始值),Evolver 对话框中的所有 Evolver 设置也将随此工作表一起保存。下次打开此工作表时,所有最近的 Evolver 设置将会自动加载。所有其他示例工作表中已预填充了 Evolver 设置,并准备进行最优化。
3,940,486
的解法,但您的结果可能比此结果稍高或稍低。
Evolver
找到了一个生成的总
这些差
注:如果您要了解已预填充所有最优化设置的面包厂模型,请打开示例 模型
Bakery.XLS
第三章:Evolver 分步介绍 39
Page 46
40
Page 47

第四章:应用示例

简介.....................................................................................................43
广告选择..............................................................................................45
按字母顺序排列...................................................................................47
任务分配..............................................................................................49
面包厂 .................................................................................................51
预算分配..............................................................................................53
化学平衡..............................................................................................55
课程安排程序 ......................................................................................57
代码段组合程序...................................................................................59
达科他:具有约束条件的行程安排......................................................63
加工车间日程安排 ...............................................................................65
无线电塔位置 ......................................................................................67
投资组合平衡 ......................................................................................69
投资组合..............................................................................................71
发电站 .................................................................................................73
采购.....................................................................................................75
推销员问题..........................................................................................77
太空导航员..........................................................................................79
第四章:应用示例 41
Page 48
交易者................................................................................................. 81
变压器................................................................................................. 83
交通 .................................................................................................... 85
42
Page 49
简介
本章说明如何在各种实际应用中使用 Evolver。这些应用示例可能不包括 您希望您的模型拥有的所有功能,但是作为构思来源和模板而言,它们是 最有效的。所有示例均说明了 Evolver 如何通过依赖工作表中已存在的关 系来查找解法,因此您的工作表务必准确描绘要尝试解决的问题。
您可以在 EVOLVE32 目录的子目录“EXAMPLES”中找到所有 Excel 工作表示例。在本章中,这些示例将按字母顺序排列。示例使用以下的 颜色代码惯例:
♦ 蓝色边框单元格。
♦ 红色边框单元格。
每个示例均提供所有的 Evolver 预选择设置,包括目标单元格、可调整 单元格、求解方法和约束条件。在开始优化之前,最好查看这些对话框 设置。通过学习公式和使用不同的 Evolver 设置,您可以更好地了解 Evolver 的使用方式。此外,这些模型也允许您使用自己的“用户”数 据替换样本数据。如果您决定修改或改编这些示例工作表,您可能希望 使用新名字将其保存,以保留初始示例以供参考。
. . . . . Evolver
. . . . .
目标单元格。
将进行调整的可调整单元格。
第四章:应用示例 43
Page 50
44
Page 51

广告选择

一家广告代理机构必须计算出花费广告费的最有效方式,以最大化目标 受众的覆盖范围。此广告费金额不得超出预算,而且电视广告费金额必 须比广播广告费金额要高。
示例文件: 目标: 在预算范围内分配广告采购,并且在广告媒体
求解方法: 预算 相似问题: 同时具有其他约束条件的预算类型问题。
Advertising Selection.xls
中具有各种价格间断。使受众范围最大化。
第四章:应用示例 45
Page 52
模型工作原理
我们要做的第一件事是选择一种求解方法,此方法会告知 Evolver 如何 处理变量。有关不同求解方法的描述,请参见第五章:参考资料
这基本上是一个预算类型问题,同时具有其他约束条件,即电视广告费 必须高于广播广告费。
。
如何解决问题
Evolver 要调整的变量位于单元格 C5:C9 中。我们将要求 Evolver 使用 “预算”方法来对这些变量进行修改,使每个变量均为自变量值。在单 元格 G13 中使用“SUM”函数计算总受众人数;我们要求 Evolver 将 此单元格中的值最大化。严格约束条件指定电视广告费必须高于广播 广告费。
46 广告选择
Page 53

按字母顺序排列

这是七个名字的列表,我们希望 Evolver 将其按字母顺序排列。尽管此 示例很简单,但 Evolver 也可以处理复杂排序,其中数据相互依赖,或 加权名字更多地依赖模型中的其他信息。
示例文件: 目标: 按字母顺序排列名称列表。 求解方法: 顺序 相似问题: 超出 Excel 能力范围的任何排序问题。
Alphabetize.xls
模型工作原理
第四章:应用示例 47
“Alphabetize.xls”文件是一个说明 Evolver 排序概率的非常简单的模 型。列 B 包含七个人的名字,而列 A 包含每个人相应的“身份证”号码。 列 D 使用 Excel 中的 VLOOKUP 函数将列 C 中所选的数字转换为相应 的名字。单元格 E4:E9 使用一个简单的惩罚函数,每次当字母顺序在前 的名字排列在字母顺序在后的名字之后时,此函数会向其分配一个值 1。 所有这些错误的和显示在目标单元格 E11 中。
Page 54
如何解决问题
在此模型中,要调整的变量位于列 C (C3:C9) 中。我们将要求 Evolver 使 用“顺序”求解方法调整单元格 C3:C9。“顺序”求解方法告知 Evolver 重新排列所选值的顺序,尝试对这些变量进行不同的排列,而不是计算 得出新值。我们将要求 Evolver 在单元格 E11 中查找错误总数最接近 0 的值,因为当此目标单元格的值等于 0 时,意味着所有名字以正确顺序 排列。
通过不在 Evolver“选项”对话框中选择任何停止标准,您告知 Evolver 将一直运行,除非通过单击 Evolver 工具栏上的“停止”按钮,以手动 方式将其停止运行。但是,在此模型中,我们已选择了“最接近的值” 选项,因此,如果 Evolver 找到了一个解法,并且此解法符合“最接近 的值”(即值 0),则 Evolver 将
自动停止运行。
我们使用较小的群体规模,因为关于最佳群体规模的选择,尽管没有快 速规则,但一般情况下,当处理的问题所具有的可能解法总数较小时, 我们会选择较小的群体规模,从而可以更快速地生成我们关注的最佳执 行解法。在此问题中,7 个名字只有 5040 种可能顺序。
48 按字母顺序排列
Page 55

任务分配

此示例针对涉及资源分配的一个常见问题建立模型。此问题中,经理会 分配 16 名工人执行 16 项任务。按照 1-10 的评分标准对每名工人执行每 项任务的能力进行评级(1 表示不能胜任任务,10 表示可以完美胜任任 务)。此处的难题是使每名工人与一种任务相匹配,从而使工人的整体 生产率最大化。
示例文件: 目标: 分配 16 名工人完成 16 项任务,从而使整体效
求解方法: 顺序 相似问题: 分配问题、会议日程安排问题(当多数工人愿
Assignment of Tasks.xls
率最大化。
意参加会议时),以及为一系列工作确定最佳 机器的问题。
第四章:应用示例 49
Page 56
此模型在单元格 B4:Q19 中提供 16×16 个网格,并且已在其中对每名工 人执行其任务的能力进行了评级。网格右侧的“所选任务”列(列 S) 任意分配每名工人完成一项任务。下一列旁边的列(列 U)检查已分配 的每项任务,并输入每名工人执行其任务的评级。最后,整个解法的总 分(单元格 U21 中)是将所有个人评级相加所得出的总和。
模型工作原理
如何解决问题
每项任务仅由一人执行,因此数字不可能重复,而且每个数字必须只使用 一次。使用 INDEX() 函数将每名工人所执行的任务的评级记录在列 U 中。 在单元格 U21 中,将这些得分相加,以计算出该组分配的总分。
要求 Evolver 调整位于列 S (S4:S19) 中的“所选任务”变量。我们将要 求 Evolver 使用“顺序”求解方法调整这些单元格。此方法会将这些单 元格中的现有值打乱,因此在您开始最优化之前,请确保每个值仅表示 一项任务。我们将要求 Evolver 查找目标单元格 U21 的最大值,因为此 单元格得出的值越高,则表示整体分配越好。
50 任务分配
Page 57
面包厂
此示例说明了生产决策问题中的一个常见问题,即确定要生产的每种产 品的适当数量变得非常困难...即使仅有几种产品。面包厂所有者必须确 定要生产的每种面包的箱数,从而使面包厂的总利润最大化。此外,还 要确保遵守所描述的限制,例如,员工总工时,以及要生产的产品的正 确比率。(注:已在
第三章:
Evolver
分步介绍
中详细描述了此模型)
示例文件: 目标: 确定要烘焙的每种面包的最佳数量,以满足所有配额并
求解方法: 菜单 相似问题: 开发投资组合、生产规划
Bakery.xls
使利润最大化。
第四章:应用示例 51
Page 58
模型工作原理
此问题在行 4 中沿图表的顶部列出要生产的每种面包产品的数量。当我 们调整这些数量变量 (B4:G4) 时,模型会计算出要花费的工时和成本, 以及烘焙该数目的面包可以获得的利润。在要最大化的目标单元格 I11 中将单元格 B11:G11 中的利润相加。
此模型还有三个约束条件。每个列出的约束条件均为严格约束条件。 一个是简单值范围格式的约束条件,另外两个则作为 Excel 公式输入。
如何解决问题
52 面包厂
我们要求 Evolver 查找单元格 B4:G4 中可以使单元格 I11 中的值(总利 润)最大化的值(要生产的箱数)。由于找到的每个值与其他值彼此独 立,因此我们将使用“菜单”求解方法。此外,我们还要求 Evolver 遵 守针对单元格 C4、D4 和 I8 的约束条件。
Page 59

预算分配

一位高级管理人员想要确定在公司的不同部门之间分配资金,从而使利 润最大化的最有效的方法。以下是一个业务模型以及其明年的预计利润。 此模型通过检查年度预算和对广告如何影响销售额之类的问题进行假 设,然后估计明年的利润。这是一个简单模型,但是其说明了如何建立 任何一个模型,并使用 Evolver 在模型中添加输入项,以确定最佳输出项。
示例文件: 目标: 在五个部门之间分配年度预算,从而使明年的
求解方法: 预算 相似问题: 向能够以不同的方法或不同的效率使用任何稀
Budget Allocation.xls
利润最大化。
缺资源(例如劳工、资金、汽油、时间)的实 体分配这些资源。
第四章:应用示例 53
Page 60
模型工作原理
文件“Budget Allocation.xls”针对公司预算对未来的销售额和利润的 影响来建立模型。单元格 C4:C8(变量)包含将用于这五个部门中每个 部门的预算金额。这些值在单元格 C10 中进行合计,结果就是公司的年 度总预算。此预算由公司制定,并且无法更改。
单元格 F6:F10 根据广告和营销预算计算明年对公司产品的估计需求量。 实际销售额是计算得出的需求量和供应量的最小值。供应量取决于分配 给生产和运营部门的资金。
如何解决问题
通过使用“预算”求解方法调整单元格 C4:C8 中的值,从而使单元格 I16 中的利润最大化。如果要防止 Evolver 尝试负数或不会为部门预算生
成适当解法的数字(例如,全部广告和无生产),请为每个部门的预算 设定每个可调整单元格的独立范围。
“预算”求解方法与“菜单”求解方法的相同之处是尝试确定所选变量 的适当“组合”。但是,当您使用预算方法时,与 Evolver 开始最优化 之前一样,您需要添加所有变量必须相加为同一个数字的约束条件。
54 预算分配
Page 61

化学平衡

对于任何可以建立模型并在某些特定初始条件下生成结果的过程,均可 以通过 Evolver 进行最优化。此示例说明 Evolver 如何确定不同化学品 (产品和反应物)的含量,从而在反应达到平衡后将自由能降至最低。 在复杂化学过程中,基本成分(试剂)和产品不断进行相互重组,直至 化合物的浓度保持稳定;即达到“平衡”时。在达到平衡后的任何时间 里,试剂在平衡化学品中可能占一定稳定比例(例如 5%),而 产品也 将 占一定稳定比例 (95%)。
示例文件: 目标: 根据宽松约束条件(某些化学品的含量与其他化学品的
求解方法: 菜单 相似问题: 确定最稳定的市场平衡的条件。
Chemical Equilibrium.xls
含量成比例)计算反应环境的自由能,并确定化学品的 含量。
第四章:应用示例 55
Page 62
模型工作原理
此问题在单元格 B4:B13 中的变量是要进行混合的化学品含量。单元格 B15 计算总含量,但根据惩罚,必须将其保持在特定范围内。
如何解决问题
单元格 F20:F22 中的约束条件是宽松约束条件 制 Evolver 只接受有效解法;相反,如果某些化学品超出了与其他化学 品的预期比例,我们将计算惩罚 模型中内建的惩罚函数。惩罚会添加到单元格 F17 的总自由能中,因此, 当 Evolver 将目标最小化时,它将查找不会生成惩罚的解法。
对单元格 B4:B13 使用“菜单”求解方法。将单元格 F17 中的值最小化。
。这些宽松约束条件使用直接在工作表
,这意味着我们将不会强
56 化学平衡
Page 63

课程安排程序

一所大学必须在六个预定义时段内安排 25 门不同的课程。每节课正好延 续一个时段。通常,我们可以使用“分组”求解方法处理此问题。但是, 在安排课程时必须符合几个约束条件。例如,生物课和化学课不能同时 上,以便医学预科学生能够在同一学期同时选修这两门课。为了符合这 些约束条件,我们使用“日程安排”求解方法。“日程安排”求解方法 与“分组”方法相同,只是带有某些任务必须(或不必)在其他任务之 前(或之后或同时)完成的约束条件。
示例文件: 目标: 在 6 个时间段内安排 25 节课,并将无法选课的学生的人数
求解方法: 日程安排 相似问题: 所有任务具有相同长度,并且可以分配至任何一个离散时
Class Scheduler.xls
最小化。符合几个针对在某时段安排某课程的约束条件。
段的任何日程安排问题。此外,还适用于任何带有将某些 项目分配至特定组约束条件的组合问题。
第四章:应用示例 57
Page 64
模型工作原理
“Class Scheduler.xls”文件包含一个必须符合许多约束条件的典型日 程安排问题的模型。单元格 C5:C29 将 25 门课程分配至 6 个时段。总共 只有五间教室,因此需在一个时段内安排五节以上的课程,这意味着至 少有一节课不能安排。
单元格 K17:M25 包含约束条件;约束条件左侧是约束条件的英文说明。 您可以使用数字代码或英语说明作为约束条件。有关日程安排问题约束 条件代码表的详细说明可以在第五章:完整参考资料 节找到。
通过计算以下两个方面来评估每种可能的时间安排:a) 无法同时上的课 程数目,以及 b) 由于教室容量不够,而无法上课的学生人数。最后一个 约束条件防止 Evolver 安排同时上所有的大课。如果只有一节或两节大 课在同一时段内开设,则可以使用较大的教室上课。
单元格 I8:N8 使用 Excel 函数 DCOUNT 计算在每个时段内安排的课程 数。然后,右下侧的单元格 I9:N9 计算此时段内无法安排教室的课程数。 在单元格 K10 中合计无法安排教室的所有课程。
如果某一特定课程所需的座位数超出可用的座位数,则单元格 I12:N12 会计算出所缺的座位数,而单元格 K13 会计算出无座位的学生总数。在 单元格 F6 中,将无座位的学生总数与平均课程人数相加,再乘以无法安 排教室的课程数。这样一来,我们就得到一个组合了所有惩罚的单元格, 而且此单元格中的数字越小,则表示日程安排越合理。
的“求解方法”一
如何解决问题
58 课程安排程序
通过更改单元格 C5:C29,将单元格 F6 中的惩罚值最小化。使用“日程 安排”求解方法。选择此求解方法时,您将看到几个相关选项显示在对 话框下侧的“选项”部分。将时段数设置为 6,而将约束条件单元块设 置为 K17:M25。
Page 65

代码段组合程序

一名 Windows 程序员希望将一个程序拆分为多个代码段,从而 Windows 可以通过仅在内存中保留当前正在使用的代码段而更有效地使用内存。
这是一个将相似项目收集到组中的示例。同一组中的项目之间可以进行 有效的相互作用,而不同组中的项目则难以进行相互作用。当每个项目 直接与任何其他项目进行相互作用却存在自然障碍时(例如,所有计算 机用户均想直接连接到打印机),则有必要将项目拆分成组。有效分组 可以对系统的整体生产率产生显著影响。
示例文件: 目标: 将程序例程分成八个不同的代码段,从而可以尽可能快
求解方法: 分组 相似问题: 将工作站收集到 LAN 群集中,或者将电路收集到微芯片
Code Segmenter.xls
的执行程序。
上的区域,从而将组之间的通讯成本降至最低。
第四章:应用示例 59
Page 66
模型工作原理
Windows 程序员通常以此方式拆分程序,以提高程序效率。当需要运行 另一个分段中的例程时,Windows 将丢弃正在调用的段,而从磁盘中读 入已调用的段。如果将一个 2 Mb 的程序拆分成 80 个分段,每个分段 20 Kb,则只要可用内存有 20 Kb,就可以运行此程序。但是,为了在可接 受的性能下运行程序,必须认真组织代码段。作为调用方,调用另一个 分段中的函数比调用同一个分段中的函数要花费更多时间。将跨段调用 的次数最小化被称为代码分段问题。
由于可以在拆分整个应用程序的前提下最优化应用程序的某些部分,因 此我们将使用 Evolver 对其进行整体最优化。
“Code Segmenter.xls”示例文件假设已使用某个特定分段对应用程序 进行了编译。应用程序仍以用户运行的方式运行,而性能追踪例程保持 追踪每个函数调用所有其他函数的次数。因此,这些结果表示应用程序 典型使用中调用的性质。关于具备不同分段策略的应用程序的速度,我 们可以从这些结果中进行预测。
此工作表使用自定义函数“SegCost”。SegCost 计算用户运行程序所要 花费的时间,其中程序以用户获取典型使用统计量的方式运行。此函数 通过计算分段间和分段内调用的次数,并将每种调用的次数与每种调用 的成本相乘来得出花费的时间。此处,我们假设分段间调用(或近程调 用)需要 7 个时钟周期,而分段内调用(或远程调用)需要 34 个时钟周 期,所有 386 计算机均为此情况。
SegCost 函数作为 Excel VBA 宏写入,如下所示:
Function segCost(segs, calls, inP, outP) As Double
Dim inCost#, outCost#, total#, temp#, tempPtr# Dim i%, j%, wide%, funcNumber%, ThisSeg%, OtherSeg% Dim NumCalls%, NumInCall%, NumOutCall%, SegOrder$, CallOrder$
SegOrder = Application.Names("segs").RefersTo CallOrder = Application.Names("calls").RefersTo NumInCall = 0 NumOutCall = 0 inCost = Range("k2") outCost = Range("k3") total = 0 wide = Range(CallOrder).Columns.Count For i = 1 To Range(SegOrder).Rows.Count ThisSeg = Range(SegOrder).Rows(i) For j = 1 To wide temp = Range(CallOrder).Rows(i).Columns(j) If temp <> 0 Then funcNumber = Int(temp) OtherSeg = Range(SegOrder).Rows(funcNumber + 1) NumCalls = 10000 * (temp - funcNumber) If ThisSeg = OtherSeg Then temp = NumCalls * inCost NumInCall = NumInCall + 1 Else temp = NumCalls * outCost NumOutCall = NumOutCall + 1 End If total = total + temp End If Next Next segCost = total End Function
60 代码段组合程序
Page 67
此样本应用程序共有 80 个函数。每个函数相互调用的次数会存储在“调 用”范围 (C5:I104) 内。我们会创建 80×80 个矩阵来表示调用模式,但 是在调用约 250 个函数之后,此 n×n 的方法将不再可用,因为 Excel 列 的限制为 256 列(而且,此方法还需要占用大量内存)。
相反,我们使用简洁表示法表示调用模式。首先,我们假设函数最多 只能调用某特定数目的其他函数。在示例文件中,我们假设 7 列为上限; 这也是调用范围的列宽为 7 列的原因,但是此限制是任意的。同时, 我们还假设函数被任何其他函数调用的次数不能超过 9999 次。
让我们看一看从单元格 C5 开始进行调用的函数 1。函数 1 调用 4 个函 数:3、9、81 和 41。调用的第 1 行 C5:I5 中包含每个被调用函数的一个 实数(例如,3.0023)。整数部分(例如 3)表示被调用的函数,而分数 部分乘以 10,000(例如 .0023 x 10,000 = 23)则表示在应用程序的典型使 用中,函数 1 调用函数 3 的次数。因此,9.1117 表示函数 1 调用函数 9 的 次数为 1,117 次,并依此类推。此简洁格式可以节省内存,并充分利用 Excel 中有限的可用列。
单元格 A5:A104(“段”范围)中包含向每个函数分配的段的数目。 单元格 K4 调用“SegCost”函数计算当前分段策略的整体性能。
如何解决问题
通过调整单元格 A5:A104 将单元格
K4 中的值最小化。使用“分组”
方法。“分组”求解方法告知 Evolver 将变量排列为 x 组,其中 x 表示 开始最优化时,可调整单元格中的不同值的数目。
第四章:应用示例 61
Page 68
62
Page 69

达科他:具有约束条件的行程安排

一家房地产公司需要以某种顺序评估其在北达科他州的房地产,从而使 某些房地产较其他房地产更早得到访问。与典型的推销员旅行问题相似, 此问题的目标是在一组城市之间找到确保每座城市只访问一次的最短路 线。但是,我们在此处添加了约束条件,必须使某些城市较其他城市更 早得到访问(例如,城市 4 安排在城市 2 之前) 这意味着我们不能使用 “顺序”求解方法,而是使用“项目”求解方法。
项目是对一组任务进行排序,其中的某些任务必须排在其他任务之前。 您可以将“项目”求解方法与自己的自定义函数结合使用,以确定项目 的最佳计时(根据任意数目的标准的组合,例如,完成时间、资源利用 情况等)。
示例文件: 目标: 在北达科他州的 41 座城市之间计划一条路线,此路线须
求解方法: 项目 相似问题: 重新安排项目日程,以平衡资源利用。安排机械加工车
Dakota.xls
是所有城市之间的最短路线,同时应确保某些城市较其 他城市更早得到访问。
间中的工作流程,以减少总时间,同时确保某些工作较 其他工作更早完成。
第四章:应用示例 63
Page 70
模型工作原理
单元格 F3:F43 中包含城市的访问顺序。单元格 H10 根据城市的顺序和 坐标 (x,y) 位置(单元格 C3:D43 中)计算路线的总长度。单元格 H10 使 用自定义函数“BigRouteLength”来加快总路线长度的计算速度。
单元格 J3:L43 包含优先任务。此表格显示哪些城市(任务)必须排在其 他城市之前。八个城市(1、2、3、4、5、7、11 和 13)中的某些城市必 须比其他城市更早得到访问。
如何解决问题
通过更改单元格 F3:F43,将 H10 中的总路线长度最小化。使用“项目” 求解方法,并将优先任务设置为 J3:L43。在“可调整单元组设置”对话 框的“优先任务”字段中设置这些引用单元。
64 达科他:具有约束条件的行程安排
Page 71

加工车间日程安排

一间金工车间需要确定安排一组工作日程的最佳方法,这组工作需要分 为不同的步骤,并在不同的机器上完成。每项工作由五项任务组成,并 且所有任务必须按顺序完成。每项任务必须在一台特定机器上完成,而 且需要在指定时间内完成任务。共有五项工作和五台机器。
单击工作表顶部的“重画日程表”按钮,系统将会重画显示每项工作任 务安排在什么时间完成的柱形图。
示例文件: 目标: 将单件工作(任务)分配至不同的机器,从而使完成所
求解方法: 顺序 相似问题: 日程安排或项目管理问题
Job Shop Scheduling.xls
有工作的总时间最小化。
第四章:应用示例 65
Page 72
模型工作原理
单元格 D5 计算完工时间,或计算从安排的第一项任务开始到安排的最 后一项任务结束,期间所消耗的时间。我们希望将该总时间数最小化。 需要以不同的方式排列单元格 G11:G35 中的变量(任务),从而确定最 佳分配顺序。工作表中的方程式计算出每项任务在所需机器上的完成速度。
如何解决问题
选择一组可调整单元格 G11:G35,并选择“顺序”求解方法。将单元格 D5 中的值最小化。
66 加工车间日程安排
Page 73

无线电塔位置

一家广播电台需要在一个共有十二个主要社区的地区建造三座无线电 塔。每个社区具有不同的居民规模,而且每个无线电塔具有不同强度的 广播范围。目标是无线电塔的建造位置可以使无线电塔在广播半径之内 拥有最大数量的潜在听众。
11
xy
位置问题的更复杂示例可能是几家工厂的选址问题,从而使其满足以下条 件:a) 邻近供应商和客户,b) 坐落在不太昂贵且开阔的土地上,以及 c) 附 近有大量经技术培训的劳动力。有关对最佳位置的其他影响因素(例如, 税收优惠政策),也可以添加到此模型中。然后,Evolver 可以在 x,y、甚 至 x,y,z 坐标空间中确定最佳位置。
示例文件: 目标: 确定三座无线电塔的最佳 x,y 坐标,从而使广播范围内
求解方法: 菜单 相似问题: 确定可以使仓库与商店之间的必要运输距离最短化的仓
Radio Tower Location.xls
的潜在听众群体的数量最大化。
库位置。确定消防站的位置,从而可以使用有限数量的消 防站达到对居民的最佳覆盖,包括住房密度之类的因素。
第四章:应用示例 67
Page 74
模型工作原理
文件“Radio Tower Location.xls”针对二维地形建立模型,其中的五座 无线电塔位置决定可以覆盖的听众数量。单元格 C6:D8 包括三座塔的 x,y 坐标。模型中的插图包括两个元素:一个是通过 Windows“画笔” 程序粘贴的关于人口密度(绿色)的位图图片;另一个是自动重新计算 以显示塔位置的 Excel 散点图。
十个社区均表示为单点位置。此 Excel 模型在 K4:M15 中计算社区与塔 之间的距离,以确定是否已覆盖所有社区(是)或未覆盖所有社区(否)。 在单元格 O17 中计算所有被覆盖社区的总人口(我们希望将此数字最 大化)。
如何解决问题
68 无线电塔位置
通过调整单元格 C6:D8 中的塔位置,将单元格 O17 中所覆盖的总人口数 最大化。使用“菜单”求解方法,并将变量范围设置为 0 至 50(位置区 域的限制)。
“菜单”求解方法告知 Evolver 以其认为合适的方式调整所选变量。与 面包烘焙的“菜单”求解方法案例一样,我们尝试确定“基本成分” (x,y 坐标)的适当组合,以生成最佳解法。
Page 75

投资组合平衡

一位经纪人有一份 80 种证券的列表,每种证券的货币价值不同。这位经 纪人希望将这些证券组合成五种投资组合,每种投资组合的总价值将尽 量接近。
这是一个称为装箱问题的一般性问题的示例。在货船的货仓内装货,尽 量使各个货仓间的重量均衡,这是另一个示例。如果要将数百万个小项 目装入几个组中(例如,将小麦装入货仓),估计会进行大致相等的分 布,使重量上不存在较大差异。但是,可以采用完全不同的方式装入几 十包不同重量和/或大小的货物,而且有效的装货方法可以对以手动方 式确定的平衡进行改进。
示例文件: 目标: 将证券列表拆分为五种不同的投资组合,而且各种投资
求解方法: 分组 相似问题: 建立综合能力大致相当的团队。将集装箱装入货船的货
Portfolio Balancing.xls
组合彼此间的总价值应尽量接近。
仓内,并且使重量平均分布。
第四章:应用示例 69
Page 76
模型工作原理
“Portfolio Balancing.xls”针对典型的分组分配建立模型。列 A 包含特 定证券的识别号码,而列 B 说明每种证券的货币价值。列 C 将每种证券 分配至五种投资组合其中之一。在设置分组或装箱类问题和使用“分 组”求解方法时,您必须确保在开始 Evolver 之前,每个组 (1-5) 在当前 方案中至少表示一次。
单元格 F6:F10 计算五种投资组合中每种投资组合的总价值。通过屏幕外 数据库标准(列 I 中)和单元格 F6:F10 中的“DSUM()”公式来完成此 计算。因此,例如单元格 F6 使用 DSUM 计算已分配给组 的列 B 中的所有值的总和。
单元格 F12 使用“STDEV()”函数计算总投资组合价值中的标准差。这 就提供了一种衡量各种投资组合总价值接近程度的方法。此图表显示每 种投资组合的总价值,并在目标值上画一条基准线;此基准线显示如果 所有的投资组合价值均相同,每种投资组合所在的位置。
5(列 C 中)
如何解决问题
通过调整单元格 C5:C104 将单元格 F12 中的值最小化。使用“分组” 方法,并确保 1、2、3、4 和 5 每个数值在列 C 中至少出现一次。
“分组”求解方法告知 Evolver 将变量排列为 x 组,其中 x 表示开始 最优化时,可调整单元格中的不同值的数目。
70 投资组合平衡
Page 77

投资组合

一对年轻夫妇拥有许多不同类型的投资资产,并且每项投资都具有各自 的收益、潜在增长和风险。通过组合将各种权重相乘的几个公式,这对 夫妇已自定义了一种“得分”,说明任意一个特定投资组合满足其需求 的程度。
示例文件: 目标: 根据您的当前风险/回报需求,确定可以使利润最大化的
求解方法: 预算
Portfolio Mix.xls
最佳投资组合。
第四章:应用示例 71
Page 78
模型工作原理
这是一个尝试在损失风险与投资回报之间达到平衡的典型财务模型。在 列 C 中分配列 A 中所列的每项资产的某些权重。此模型将投资组合中的 每项资产所占的权重与回报率相乘,以生成单元格 C18 中的总回报率。 同时,我们还在单元格 C19 中计算总风险值,此值不应高于单元格 D19 中所列的可接受风险值。
如何解决问题
单元格 C22 中的总“得分”反映出,在减去任何风险的惩罚值后,总回 报率在可接受的百分比之上。我们将此得分最大化。
72 投资组合
Page 79
发电站
一家广播电台在一个有十个主要社区的地区购买了三座废弃且不能工作 的无线电塔。该广播电台要购买全新的广播发射器,并将其安装在无线 电塔内,以再次使用其进行广播。
由于预算有限,因此目标是在发射器上花费最少的资金,但发射器仍然 可以覆盖周围的所有 9 个社区。我们假设一个线性定价模型,其中发射 器的成本直接与其功率相关,因此我们将寻求购买功率最低的发射器, 而此模型应易于创建实际发射器的类型和价格的查找表。
示例文件: 目标: 为每座旧无线电塔确定最小(最便宜)的发射器,但仍
求解方法: 菜单 相似问题: 集覆盖问题,其中需要通过少数明确定义的集来描述一
Power Stations.xls
然可以覆盖周围的所有十个社区。
批元素。
第四章:应用示例 73
Page 80
模型工作原理
此示例与无线电塔位置示例 (Radio Tower Location.xls) 非常相似,但 不同的是,此处位置已固定,并且单元格 E5:E7 中塔的功率范围是要调 整的变量。我们在要将其中的值最小化的目标单元格 E12 中将三座塔的 功率成本相加。
单元格 K4:M12 计算每个社区与三座塔之间的距离,而且如果一个社区 与其中一个发射器所要覆盖的范围足够接近,则会在列 N 中返回一个 TRUE。所有这些约束条件均已列入名称为 严格约束条件中。此约束条件包含一个公式 AND($N$4:$N$12),仅当 列 N 中的所有值均为 TRUE 时,此公式才会返回 TRUE。
是否已覆盖所有地区?
的单
如何解决问题
通过调整单元格 E5:E7 中塔的半径,将单元格 E12 中所需的功率成本最 小化。使用“菜单”求解方法,并将变量范围设置为 0 至 100。使用 Excel 公式格式输入的单严格约束条件如上所述。
74 发电站
Page 81
采购
我们随时都可以采用许多方式来订购项目,但数量折扣使我们难以确定 购买项目的最具成本效益的方式。此模型包含一个简单价格表,列出了 特种溶剂的数量折扣价格。您必须至少购买 155 公升的该溶剂,包括小 型桶、中型桶、大型桶和特大型桶。
尝试购买每种桶型的适当数量,从而使成本最小化。
示例文件: 目标: 花费最少的费用购买 155 公升的溶剂。 求解方法: 菜单 相似问题: 相反:制定一份最统一且最合理的定价表,以提高订单
Purchasing.xls
数量。
第四章:应用示例 75
Page 82
模型工作原理
此溶剂的桶型包括 3、6、10 和 14 公升桶。单元格 D6:H9 列出了每种桶 型的价格表。单元格 H13:H16 包括要购买的每种桶型的数量。列 K 计算 采购每种桶型的成本,而单元格 K18 计算总成本。此模型允许您将要求 的采购数量(单元格 I19)从 155 更改为您所需的数目。单元格 I18 包括 已采购的总公升数,因此该单元格中的数字一定不能低于单元格 I19 (155) 中要求的数字。单严格约束条件是已购买的数量要超过所要求的数量。
由于我们需要购买 155 公升的此溶剂,因此我们可以选择购买 11 个特大 型桶(154 公升)和一个小型桶(3 公升 ),总计 157 公升。根据价格表, 总成本为 1,200 美元。但是,在运行最优化后,系统会向您提供更具成 本效益的组合。
如何解决问题
通过调整单元格 H13:H16 中要购买的溶剂数量,将成本最小化。使用“菜 单”求解方法来调整数值,并将这些变量范围设置在 1 至 20 之间。您不 能只购买一桶溶剂中的一部分,因此我们将通过勾选“可调整单元”对 话框中的“整数”选项要求 Evolver 只选择整数。由于采购的溶剂数量不 能少于 155 公升,因此输入一个指定 I18>155 的单严格约束条件。
76 采购
Page 83

推销员问题

一位推销员必须对指定地区的每座城市访问一次。哪一条路线是访问每 座城市的最短可行路线?这是一个典型的最优化问题,而且如果涉及大 量城市 (>50),则很难用传统方法来解决。
一个类似的问题可以是确定在工厂中完成任务的最佳顺序。例如,与其 他方式相比,在使用了白色颜料后,可能更易于使用黑色颜料。在 Evolver 中,这类问题均可以通过
顺序
求解方法得到完美解决。
示例文件: 目标: 确定 n 座城市之间的最短路线,而且每座城市应访问一次。 求解方法: 顺序 相似问题: 以最快方式规划电路板的钻孔问题。
Salesman Problem.xls
第四章:应用示例 77
Page 84
模型工作原理
“Salesman Problem.xls”文件通过查找表中的距离,计算到各个城市 进行旅行的路线长度。列 A 包含具体城市的识别号码。列 B 包含这些号 码代表的名称(带有“查找”函数)。自上而下显示的城市顺序(及其 号码)代表访问这些城市的顺序。例如,如果您在单元格 A3 中输入 “9”,则表示渥太华是第一座要访问的城市。如果在 A4 中输入“6” (哈利法克斯市),则哈利法克斯市将是第二座要访问的城市。
表中城市间的距离从 C25 行开始向下表示。表中距离是对称的(从 A 到 B 的距离与从 B 到 A 的距离相同)。但是,更切合实际的模型可能包括 不对称的距离,表示从一个方向旅行更加困难(由于收费公路、可用交 通工具、逆风和上坡等)。
现在,必须使用函数计算这些城市之间的路线长度。总路线长度将存储 在单元格 G2 中,这是我们希望最优化的单元格。为了达到这一目的, 我们使用“RouteLength”函数。这是“Salesman Problem.xls”文件中 的自定义 VBA 函数。
如何解决问题
通过调整单元格 A3:A22 将单元格 G2 中的值最小化。使用“顺序”方 法,并确保在您开始最优化之前,数值 1-20 已经在可调整单元格 (A3:A22) 中。
“顺序”求解方法告知 Evolver 重新安排所选的变量,并尝试对现有变 量进行不同的排列。
78 推销员问题
Page 85

太空导航员

作为“Evolver III”号航天飞机的发射人员,您必须计算出每枚推进火 箭的燃料量和方向,以使用最少的燃料将航天飞机送至目的地。更好的 解法可能是利用太阳的重力“长鞭”效应来节省燃料。
示例文件: 目标: 使用尽可能少的燃料将宇宙飞船送到目的地。利用附近
求解方法: 菜单 相似问题: 过程控制问题
Space Navigator.xls
恒星的重力向目的地移动。
第四章:应用示例 79
Page 86
模型工作原理
单元格 Q5:R15 包括十个时阶中每个时阶的火箭爆炸规模和方向值。我 们希望将其值最小化的单元格 Q16 只是在十个时阶 (Q4:Q13) 中已燃烧 的所有燃料的总和。
严格约束条件为:a) 宇宙飞船的最终位置应在其目的地的 10 水平单位和 b) 10 个垂直单位之内。
如何解决问题
将单元格 Q16 中的值最小化。利用单元格 Q5:R13,创建一个使用“菜 单”求解方法的可调整单元格组。由于模型使用“弧度”表示爆炸方向, 因此“爆炸”单元格 (Q5:Q13) 的范围应在 0 至 300 之间,而“方向”单 元格 (R5:R13) 的范围则应在 -3 至 3 之间。一个“弧度”大约是 57 度。
80 太空导航员
Page 87
交易者
您正在 S&P 500 上进行交易,而且您已确定技术分析比传统的基础分析 可以提供更准确的股票预测。此外,一旦您构建了一个系统,就可以节 省您的时间。从表面上看,您似乎可以遵循无数个可能规则进行交易, 但只有当您一直遵循其中的少数几个规则时,才会产生可观利润。智能 计算机搜索可以帮助您确定在某个特定的历史时期内,哪些规则帮助您 赚取的利润最多。
示例文件: 目标: 确定在某个特定时间段内将产生最高回报的三个规则。 求解方法: 菜单 相似问题: 确定将产生最佳结果的最佳移动平均线;任何规则确定
Trader.xls
或标准确定问题
第四章:应用示例 81
Page 88
模型工作原理
此模型使用几个可调整单元格组解决整体问题。每个交易日会评估三个 规则。如果所有三个条件均为真,则计算机将会在该天买入,否则将会 卖出。(一个更为切实可行的交易系统将不会只买进或卖出,而是有时 还会持有手中的股票。)
通过单元格 C5:E8 中的一组四个数字描述一个规则,这些数字表明以下 几件事情:1) 规则引用的数据源,2) 数据值是高于还是低于临界值,3) 确 定规则是否为真的临界值,以及 4) 确定是否应当查看值自身,或查看昨 天的值或自昨天至今的变化的修饰符值。
临界值的范围从 0 到 1,并且表示数据源范围的百分比。例如,如果数 量范围从 5,000 到 10,000,则临界值 0.0 将与数量 5,000 匹配,临界值 1.0 将与数量 10,000 匹配,而临界值 0.5 将与数量 7,500 匹配。此系统允许 规则引用任何数据源,而无需考虑数据源具有的值。
如何解决问题
全部使用“菜单”求解方法创建可调整单元格组。应单独创建 C5:E5、 C6:E6、C7:E7 和 C8:E8 中的每一行,从而可以轻松为每个组分配其各自
的选项,例如整数和范围。F5:F8 中列出了每组变量的设置。将单元格 E10 中的值最大化,这会调用一个使用这些规则模拟交易的宏。在历史数据 库中,每天模拟交易后所产生的总利润会返回到单元格 E10 中。
82 交易者
Page 89
变压器
该 2 绕组变压器的评级必须为 1080 VA,并且满载损失在 28 瓦以下,表 面散热不超过 0.16 瓦/平方厘米。将成本最小化,同时遵守性能标准。
示例文件: 目标: 将变压器的初始和运营成本最小化。 求解方法: 菜单 相似问题: 电路设计、电桥设计
Transformer.xls
第四章:应用示例 83
Page 90
模型工作原理
将评级、负载损失和散热约束条件编码为宽松约束条件。我们通过惩罚 未满足要求和无效的解法来创建一个宽松约束条件。与必须符合的严格 约束条件不同,此模型允许 Evolver 尝试一些无效解法,但是由于这些 无效解法受到您模型中检查违背状况的函数的惩罚,它们将在您的目标 单元格中生成很差的结果。因此,随着时间的推移,此模型会将这些无 效解法从不断进化的可能解法群体中丢弃。
如果问题没有受到较为严格的约束,则宽松约束模型可能比严格约束模 型的效果更好。此模型还允许 Evolver 接受真正好的解法,即使它略微 达不到约束条件,但是与符合了所有约束条件,但并不是非常好的解法 相比,此解法会更有价值。
如何解决问题
计算单元格 F11 和 F12 中的材料成本(初始成本)和运营成本(电价乘 以消耗的电量)。将这些成本与 F18:F20 中设置的惩罚函数相结合,生 成单元格 F22 中的最终约束成本。使用“菜单”求解方法将此目标单元 格中的值最小化。
84 变压器
Page 91
交通
我们能够以多便宜的成本在全国范围内用卡车运输物品?此标准问题从 较早的 Microsoft 求解器示例中扩展而来。
“尽量降低在大都市需求中心附近将物品从工厂运往仓库的运输成本, 同时不超过每家工厂的供应量,但能满足每个大都市地区的需求。”
要使此问题更加切实可行,需要更改运输成本使其不再呈线性排列, 但应根据所需的卡车数量做相应更改。一辆卡车能够装载 6 件物品,因此 运输 14 件物品就需要 3 辆卡车(装载 6 + 6 + 2 件物品)。
示例文件: 目标: 以尽可能便宜的方式用卡车将物品从三家工厂运往五个
求解方法: 菜单 相似问题: 设计通讯网络
Transportation.xls
仓库。
第四章:应用示例 85
Page 92
模型工作原理
单元格 C5:G7 中包含从每家工厂运往每个仓库的物品的数量。C13:G13 计算运输这些物品所需的卡车数量。严格约束条件为:1) 每家工厂的总 运输量应少于或等于此工厂现有的供应量,以及 2) 所有工厂运往每个仓 库的总运输量应高于或等于仓库的所需数量。这样可以确保每个仓库均 获取所需的数量,而且制造厂也不会负担过重。
如何解决问题
对使用 0 到 500 之间整数的单元格 C5:G7 使用“菜单”求解方法。输入针 对每家工厂的一组严格约束条件,其指定工厂的运输量 <= 工厂供应量。 输入针对每个仓库的另一组严格约束条件,其指定仓库的总运输量 >= 仓库需求量。将单元格 B22 中的运输成本最小化。
86 交通
Page 93

第五章:Evolver 参考指南

模型定义命令 ......................................................................................89
可调整单元范围........................................................................................90
可调整单元组............................................................................................93
菜单求解方法..............................................................................95
顺序求解方法..............................................................................95
分组求解方法..............................................................................96
预算求解方法..............................................................................97
项目求解方法..............................................................................97
日程安排求解方法 ......................................................................98
交叉和突变率..............................................................................99
时间块数和约束单元格 ............................................................101
优先任务....................................................................................101
运算符........................................................................................101
约束条件 .................................................................................................103
添加 — 添加约束条件 ..............................................................103
简单和公式约束条件 ................................................................104
宽松约束条件............................................................................104
“最优化设置”命令 .........................................................................107
“最优化设置”命令 —“常规”选项卡.............................................107
“最优化设置”命令 —“运行时间”选项卡.....................................108
“最优化运行时间”选项 ........................................................109
“最优化设置”命令 —“视图”选项卡.............................................110
“最优化设置”命令 —“宏”选项卡.................................................111
“开始最优化”命令 .........................................................................112
“实用工具”命令 .............................................................................113
“应用程序设置”命令..........................................................................113
“约束条件求解器”命令......................................................................114
第五章:Evolver 参考指南 87
Page 94
Evolver 观察器.................................................................................117
“Evolver 观察器”—“进度”选项卡 .............................................. 117
“Evolver 观察器”—“摘要”选项卡 .............................................. 120
“Evolver 观察器”—“日志”选项卡 .............................................. 121
“Evolver 观察器”—“群体”选项卡 .............................................. 122
“Evolver 观察器”—“多样性”选项卡 .......................................... 123
“Evolver 观察器”—“停止选项”选项卡 ...................................... 124
88
Page 95

模型定义命令|contextid=1000

定义模型的目标、可调整单元格和约束条件
选择 Evolver“模型定义”命令(或单击 Evolver 工具栏上的“模型” 图标),“模型”对话框将会显示。
Evolver“模型”对话框用于指定或描述 Evolver 的最优化问题。在开始 时,此对话框在每个新的 Excel 工作簿中显示为空白,但它会在每个工 作簿中保存其信息。这意味着再次打开工作表时,此对话框会以相同方 式进行填充。此对话框的每个组件如本节中所述。
第五章:Evolver 参考指南 89
Evolver“模型”对话框。
Page 96
“模型”对话框中的选项包括:
•
最化目。最优化
优标
如果选择 量值(最小 -1e300)。如果选择
元格的最大可能 的 量 (最大 +1e300)。
最小
值
目
选项确定 Evolver 要搜索的答案的类型。
标
,Evolver 将查找生成目标单元格的最小可能值的变
最大
值
值变值
,Evolver
将搜索生成目
标单
如果选择 值应尽量接近您指定的值。当 Evolver 找到生成此结果的解法时,
Evolver 将自动停止运行。例如,如果您指定 Evolver 应找到最接近 14 的结果,Evolver 可能找到生成诸如 13.7 或 14.5 之类的值的方案。
请注意,13.7 比 14.5 更接近 14;Evolver 不会关注生成的值是大于 还是小于您指定的值,它只查看与值的接近程度。
• 单元格。单元格或
生成的每种“试验解法”生成此目标单元格的值(即可调整单元格 的可能值的所有组合)。目标单元格应包含一个与可调整单元格相 关的公式(直接或通过一系列计算)。可以使用标准 Excel 公式(如 SUM())或用户定义的 VBA 宏函数来生成此公式。通过使用 VBA 宏 函数,您可以使 Evolver 评估非常复杂的模型。
当 Evolver 搜索一种解法时,它使用目标单元格的值作为评级或 “适应度函数”来评估每种可能方案的优良程度,并确定哪些变量 值应继续进行交叉生成,哪些变量值应该“丢弃”。在生物进化中, “死亡”是确定哪些基因能继续在整个群体中繁衍的“适应度函 数”。在构建模型时,您的目标单元格必须反映任何特定方案的适 应度或“优良程度”,因此在 Evolver 计算概率时,它能够准确测 量其进度。
目标值
,Evolver 将搜索生成目标单元格的值的变量值,此
目标单元格
包含您的模型的输出项。将为 Evolver
可调整单元范围

可调整单元范围

以及输入的有关这些单元格的描述。每组可调整单元格在水平行中列出。 可调整单元组中可以包括一个或多个可调整单元格范围。“可调整单元 组”中的所有单元格范围共享一个公用求解方法、交叉率、突变率和运 算符。
90 模型定义命令|contextid=1000
表显示每个包含 Evolver 可以调整的单元格或值的范围,
Page 97
由于可调整单元格包含问题的变量,因此您必须至少定义一组可调整单 元格来使用 Evolver。大多数问题仅使用一组可调整单元格描述,但更 复杂的问题可能需要同时使用不同的解法进行求解的不同的变量块。此 独特结构允许从多个可调整单元格组中轻松构建极为复杂的问题。
以下选项可以用于输入“可调整单元范围”:
• 添加。通过单击“可调整单元”列表框旁边的“添加”按钮,添加
新的可调整单元格。选择要添加的单元格或单元格范围,然后在可 调整单元范围表中显示一个新行。在此表格中,您可以输入范围内 单元格的最小值和最大值,以及要检验的“值”类型 — 范围内的整 数值,或任意值。
• 最小值和最大值。在您指定可调整单元格的位置后,“最小值和最
大值”条目会设置每个可调整单元格的可接受值的范围。默认情况 下,每个可调整单元格均使用负无穷与正无穷之间的实数(双精度 浮点)值。
第五章:Evolver 参考指南 91
Page 98
范围设置是需要严格执行的约束条件。Evolver 将不允许任何变量使 用设置范围之外的值。在可以改进 Evolver 的性能时,最好为您的 变量设置更加具体的范围。例如,对于一个特定变量,您可能知道 数字不能为负,或者 Evolver 应只使用 50 到 70 之间的值。
• 范围。在
电子表格中的区域,输入范围名称或键入诸如 Sheet1!A1:B8 之类的有 效 Excel 引用来输入此引用。范围字段可以用于所有求解方法。但是, 对于菜单和预算方法,可以添加 入可调整单元格的范围。
注:通过向变量分配紧密范围,您可以限制搜索范围,并加速
范围
字段中输入要调整的单元格的引用。通过使用鼠标选择
最小值、最大值和值
选项,以允许输
Evolver
收敛解法。但是,请注意不要将变量范围限制得太紧密;这可能会 妨碍
Evolver
• 值。“值”条目允许您指定 Evolver 应将指定范围内的所有变量
视为整数(如 22),而不是实数(如 22.395)。此选项仅适用于 “菜单”和“预算”求解方法。默认设置是将变量视为实数。
如果您的模型使用变量从表格中查找项目(HLOOKUP()、VLOOKUP()、 INDEX() 和 OFFSET() 等),请确保打开“整数”设置。请注意,“整 数”设置影响所选范围内的所有 实数,而将另一些视为整数,您可以创建两组可调整单元格,而不是一 组,并将一组视为整数,而将另一组视为实数。只需“添加”一个菜单 可调整单元格组,然后将“值”条目设置为“任意值”。接下来,“添 加”另一个单元格范围,此次选择“整数”设置,并且只选择整数可调 整单元格。
查找优化解法。
变量。如果您希望将其中一些变量视为
92 模型定义命令|contextid=1000
Page 99

可调整单元组|contextid=1010

每组可调整单元格可以包含多个单元格范围。这允许您构建一个具有 “层次结构”的相关单元格范围的组。在该组中,每个单元格范围均具 有自己的“最小值-最大值”范围约束条件。
“可调整单元组”中的所有单元格范围共享一个公用求解方法、交叉率、 突变率和运算符。这些均在可调整单元组设置对话框中指定。通过单击 可调整单元范围表旁边的组按钮访问此对话框。您可以创建一个在其中 添加可调整单元格范围的新组,或编辑一个现有组的设置。
第五章:Evolver 参考指南 93
Page 100
“可调整单元组设置”对话框中的常规选项卡上的选项包括:
• 描述。描述对话框和报表中的可调整单元格范围组。
• 求解方法。选择用于组中每个可调整单元格范围的“求解方法”。
当您选择要由 Evolver 进行调整的单元格范围时,您也可以指定在调整 这些可调整单元格时要应用的“求解方法”。其实,每种求解方法都是 一个完全不同的遗传算法,具有各自的最优化选择、交叉和突变例程。 每种求解方法以一种不同的方式调整变量的值。
例如,“菜单”求解方法将选中的每个变量视为菜单中的基本成分;每 个变量的值可以独立于其他变量的值进行更改。相反,“顺序”求解方 法则在可调整单元格之间交换值,并对单元格中的初始值重新进行排序。
Evolver 共有六种求解方法。三种求解方法(菜单、顺序和分组)使用
子级
完全不同的算法。其他三种求解方法是前三种求解方法的
,并添加
了其他约束条件。
以下部分描述每种求解方法的函数。要更好地了解如何使用每种求解方 法,我们建议您研究软件随附的示例文件(请参见第四章:应用示例
94 模型定义命令|contextid=1000
)。
Loading...