4.1 iSIGHT优化基本问题
4.1.1 iSIGHT集成软件的条件
从一般意义上来说,只要是可执行文件(*.exe、*.bat)iSIGHT都可以进行驱动。但是为了实现优化过程的自动化,要求所集成的数值分析软件能进行后台求解计算,且要有明确包含优化变量的输入、输出文件。
4.1.2 常用的输入文件的类型
就目前市面上的数值分析软件而言,有以下两类文件可以作为输入文件:
模型信息文件
如上所述,数值分析软件一般分为三个模块,在数值建模结束后前处理程序便生成一个模型信息文件做为求解模块的输入文件,该模型文件包含了数值模型的各种信息,因此在优化的时候该文件便可以当作输入文件。如,MSC.MARC的*.dat文件,LS—DYNA的的*.K文件等。
命令流或过程记录文件
为了实现参数话建模与分析,好多数值分析软件中在提供菜单操作的同时也提供了相应地命令操作,并且可以把命令编程文件进行读入建模和分析,该文件常称为命令流文件。另外,一些软件可以自动记录用户的每一步操作,并能输出相应地命令流文件,软件也可以读入该文件实现建模和分析,该命令流文件习惯称之为过程记录文件。
在使用模型信息文件当作输入文件的优化过程中,优化中在每次迭代过程中没有了建立模型的环节,因此其效率相对较高!而在用命令流或过程记录文件当作输入文件的优化中,在每次迭代分析时都从建模开始,故其计算所需要的时间相对较长。然而,正是由于其每次迭代分析时都是从头开始建模分析,所以在相关变量的优化设计中,由于对模型信息文件的修改往往不能正确地反映模型的变化,故这时候就需要过程记录文件做为输入文件。
4.2 iSIGHT集成优化的一般步骤
在工程上利用iSIGHT进行集成优化一般包括前期工作准备、过程集成、变量与算法设置以及过程监控与结果分析等步骤。
4.2.1 前期准备工作
在集成优化之前的准备工作主要包括数值分析软件选择、初始计算以及熟悉相关文件等。
根据优化问题所要求的分析与求解任务,选择合适的数值分析软件进行优化设计计算。在选择集成软件时应该考虑以下几个原则:
(1)软件的功能。这是首要的问题,应透彻了解所选软件是否具备所需要的功能,并满足iSIGHT集成软件的要求。
(2)前、后处理功能。这是很重要的,关系到是够易于操作,一定程度上也是计算成功与否的重要决定因素。
(3)软件所要求的环境及计算机配置。这也是软件正常运行所必需的,当然,软件的价格也要加以考虑和比较。
在选择好数值分析软件后,往往需要在所要集成的数值分析软件里边进行一次初始模型计算,以便生成下步软件集成所需要的输入、输出文件。
在进行下一步软件集成之前,要熟悉所集成软件求解的驱动命令,输入、输出文件的格式,要明确设计变量参数、目标函数值在输入、输出文件中的位置及其数据格式等。
4.2.2 iSIGHT软件集成
这部分工作就是要设置iSIGHT集成软件代码,指定所集成软件的输入、输出文件,并指定iSIGHT修改或读取输入、输出文件的位置与格式。
4.2.3设计变量与算法设置
又称数学建模,其主要内容有优化变量设置、优化方法与策略选择。该部分是优化设计中的核心工作,尤其是优化方法的选择,它关系到优化计算的效率的高低甚至成败,所以在分析的时候一定要根据工程实际问题具体特点合理设置优化算法。
4.2.4 求解与结果分析
在集成优化过程中,iSIGHT软件提供了让用户实时监控优化过程的功能,它可以图表、曲线等形式形象地给出目标函数随设计变量的变化图形,并给出软件集成日值文件。
以上仅对iSIGHT集成过程进行了简单地解释与阐释,更详细的描述可参考以后章节。
4.3 iSIGHT优化入门—水杯优化
以下通过一个水杯优化的具体实例,详细地讲述了集成优化的各个过程的操作步骤,希望通过这个例子读者能够iSIGHT集成优化能够有个初步认识与掌握。
4.3.1 问题描述
注意过普通的水杯吗?底面圆圆的,上面加盖的哪一种。仔细观察一下,你会发现比较老式的此类水杯有一个共同特点:底面直径=水杯高度。
图4.3.1 水杯的简化模型
为什么是这样呢?原因很简单因为只有满足这个条件,才能在原料耗费最少的情况下使杯子的容积最大。可不是,在材料一定的情况下,如果水杯的底面积大,其高度必然就要小;如果高度变大了,底面积又大不了,如何调和这两者之间的矛盾?其实这恰恰就反应了一个完整的优化过程。
4.3.2 问题假设与模型简化
根据经验,在材料一定的情况下我们可以认为水杯的成本与其表面积成正比,为了控制成本我们对其进行限值。所以我们的设计问题就是,在成本一定的情况下如何合理设置水杯的几何尺寸以获得最大容积。
上述问题用优化语言描述为:
Maximize V=πR2H
S.t S=2πRH+2πR2<100
4.3.3 集成软件的选择
由于在本问题的优化过程中,只需要进行体积V与表面积S的简单计算,我们采用FORTTRAN编程生成可执行文件(cup.exe)来完成该工作。
在建立自己的优化任务之前,首先需要了解所要集成的数值分析软件,主要内容包括文件所在位置,驱动命令格式,输入、输出文件的格式及优化变量在其中的位置等。
在本次的练习中,由于所需要的计算比较简单我们采用FORTAN程序变成的可执行程序(Cup.exe)来完成所需要的计算,其内容如下:
program Cup
implicit none
real R,H,Area,V
character(len=20)::filenamein="InPut.txt",filenameout="OutPut.txt"
logical alivein,aliveout
inquire(file=filenamein,exist=alivein)
inquire(file=filenameout,exist=aliveout)
if(alivein .and. aliveout) then
write(*,*)"所需的文件存在!"
else
write(*,*)"所需要的文件不存在!"
end if
open(unit=10,file='InPut.txt')
read(10,"(15X,F12.9,/,15X,F12.9)")R,H
Area=2*3.14*R*H+2*3.14*R*R
V=3.14*R*R*H
open(unit=10,file='OutPut.txt')
write(10,"('The Area is:',F17.9,/,'The volume is:',F12.9)")Area,V
stop
end
本例中,所集成的文件为位于"D:\Cup\CupProgame"下的Cup.exe。可执行文件从输入文件为Input.txt中读入茶杯的几何尺寸值,计算茶杯的表面积与容积,然后把计算结果写道输出文件Out.txt中,其执行过程如下图1所示。
图4.3.2 Cup.exe执行流程图
4.3.4 iSIGHT集成优化
在建立集成优化工程问题之前,我们在D盘下建立了一个文件夹Cup用以存放优化过程中的数据文件。文件夹建好后把分析所需要的各种文件(对本问题而言,有Input.txt、Output.exe、Cup.exe及其相关文件)移到该文件夹下,复制Input.txt文件,并重命名为CupInTemp.dat。
提示:iSIGHT同大多数英文软件一样识别中文字符有困难,所以在文件命名的时候不能取中文名,也不能存放在中文路径下,否则编译时会出错!
4.3.4.1添加集成代码
启动iSIGHT软件后,便打开如图4.3.3所示的任务管理页面。由于我们还没有建立优化任务,所以该页面呈现空白状态。
图4.3.3 任务管理界面
图4.3.4 集成代码添加界面
2、点击图4.3.3中的过程集成按钮,则进入添加集成代码界面,并自动建立任务"Task1",如图4.3.4所示。
3、点击图4.3.4工具条上的集成代码按钮,添加集成代码。一个名为"Simcode0"集成代码块出现在集成对话框右边的工作区内,如图4.3.5所示。
图4.3.5 添加集成代码后的界面
注释:为了便于叙述,以后我们用块来描述上图4.3.5右边的图标。
4、双击图4.3.5中的任务块,则显示出集成代码的内容,如图4.3.6所示。
图4.3.6 集成代码内容
在设计的过程中,我们需要设置所用软件的基本信息(位置与名称),制定iSIGHT软件调用该软件的规则,这样才能保证集成优化的顺利进行。
5、点击集成代码块左边的属性按钮,弹出代码属性设置对话框,如图4.3.7所示。
图4.3.7 集成代码属性设置对话框
图4.3.8 路径设置对话框
在图4.3.7中,"simulation code-(path and)name"文本框用来输入集成代码信息的,它包括集成代码名称与所处的位置;"Optional argument"选项是用来输入驱动集成代码辅助命令,这是因为有些数值分析软件在调用求解器的时候还需要辅助的命令来指定一些信息,如输入、输出文件名称等;"Elapsed time limit(seconds)"选项用以设置溢出时间,当软件调用的集成代码在该时间内没有求解结束时,则它认为系统出错,并结束任务。
图4.3.9 添加集成代码后的属性对话框
6、点击图4.3.7 中"文件菜单",在随后弹出文件选择对话框中选择位于"D:\Cup\CupProgame"下的"Cup.exe"文件。
7、点击确认后弹出设置新任务路径对话框,如图4.3.8所示。
为了便于管理,我们在优化的时候往往单独建立一个与所集成代码位置不同的文件来存放优化数据,所以这时候软件就询问用户是不是把优化数据放在集成代码所在的文件夹下。如果,用户确认是的话就点击"yes",若要放在另外的位置的话点击"No"然后制定该位置。
8、点击"No",然后制定"D:\Cup"为本问题工作路径,则返回图4.3.9所示界面。
9、点击4.3.9图中的"OK"按钮,返回过程集成界面,如图 5.5.10所示。
从图5.5.10可以看到,集成代码块的名称改为"Cup.exe"
4.3.4.2定义输入文件
在集成优化中,仅仅定义集成代码信息往往是不不够的,这是因为iSIGHT软件需要按照优化算法以不同的R和H值多次调用集成代码,因此我们需要"告诉"iSIGHT如何对这些文件进行操作。
1、点击输入块"Input0"的属性按钮,则弹出输入属性对话框,如图4.3.11所示。
在制定iSIGHT软件修改输入文件规则之前,我们首先需要给它明确工作对象,即定义输入文件信息,主要包括输入文件名与存放位置等。
图4.3.10 添加集成代码后的过程集成界面
2、点击"Template File"文本框旁边的"File"按钮,然后再随后弹出的对话框中选择"CupPrograme"下的文件"CupInPutTempt.dat",并确认。
3、点击"Input File"文本框旁边的"File"按钮,然后再随后弹出的对话框中选择"CupPrograme"下的文件"CupInPut.txt",并确认。此时的输入属性对话框如图4.3.12所示。
图4.3.11 输入属性对话框
图4.3.12 设置好的输入属性对话框
点击图4.3.12中的"OK",返回过程集成界面。相应地,此时的输入块被命名为"Input.txt"。
4、点击"Input.txt"块的内容按钮"Input.txt" ,弹出文件分析对话框,如图4.3.13所示。
我们注意到,图4.3.13左边的明细区为空白,这是因为我们还没有进行定义的缘故;而右边的工作区,显示的却是输入文件Input.txt的内容。另外,在右半部分有个图标,它代表了iSIGHT中的鼠标。
图4.3.13 输入文件分析对话框
下面我们就利用文件分析对话框建立内部命令,来"告诉"鼠标如何对输入文件进行修改。
5、用鼠标选中字符"The radius is:",则会弹出动作类型选择对话框,如图4.3.14所示。
图4.3.14 动作类型选择对话框
注意:在选择字符的时候,一定要包括冒号后边的空格。
从图4.3.14可以看出,标签搜索 被激活,同时刚才所选择的字符"The radius is:"也出现在"Search for"文本框里。图中的,"Direction"选项用来定义鼠标的移动方向。
6、点击图4.3.14中的"Apply",相当于我们"告诉"鼠标移动到字符"The radius is:"的后面。
图4.3.15 替代标签内容
7、激活"Replace"替代标签,其内容如图4.3.15所示。
8、点击左上方"Replace Next Word"前边的方框,也就是让软件对字符"The radius is:"后边的数值进行替代。
9、在"With"文本框中输入:Radius,并确保"Direction"中"Forward"被选中,确认后返回输入文件分析对话框,如图4.3.16所示。
图4.3.16输入文件分析对话框
从图中我们可以看出,左边动作明细区列举了我们所定义的鼠标动作,而右边同时显示出了这种变化。
5~9的作用就是让iSIGHT在输入文件中搜索字符"The radius is:",然后用变量"Radius"的值去代替字符"The radius is:"后面的数值,从而完成了对输入文件中水杯半径尺寸的修改。
对水杯高度的修改规则的制定与上述方法相同,再次不再赘述。最终结果如图4.3.17所示。
图4.3.17 输入文件分析最终界面
图4.3.18 输出文件属性设置对话框
10、点击图4.3.17中"File"文件菜单下的"Save(need)"按钮进行保存,然后点击同一菜单下的"Close"按钮返回过程集成界面。
以上我们完成了对输入文件的分析,下面我们对输出文件进行相应地设置,以"告诉"iSIGHT如何对它进行操作。
4.3.4.3 输出文件分析
1、点击输出块"Output0"的属性按钮,则弹出输入属性对话框,如图4.3.18所示。
2、点击图4.3.18中的"File"按钮,然后再随后弹出的对话框中选择"CupPrograme"下的文件"OutPut.txt",并确认后返回过程集成界面。
3、点击"OutPut.txt"块的内容,弹出文件分析对话框,如图4.3.19所示。
4.3.19 输出文件分析界面
4、用鼠标选中字符"The Area is:",则弹出如图4.3.20所示的对话框。
图4.3.20 动作类型选择对话框
5、点击图4.3.20下边的"Apply"。
6、点击图4.3.20上边的阅读标签,其内容如图4.3.21所示。
图4.3.21 阅读标签内容
7、在"Store into Parameter"文本框里面输入:Area,并点击"OK"确认后返回文件分析对话框如图4.3.22所示。
图4.3.22 输出文件分析对话框
4~7的作用就是,让软件在输出文件中搜索字符"The Area is:",然后读取其后边的数值并赋值给变量"Area"。
图4.3.23 设置完后输出文件分析对话框
对结果文件中另外一个值的操作规则的制定与上述类似,在此不再赘述。最终的输出文件分析对话框如图4.3.23所示。
8、点击图4.3.23中"File"文件菜单下的"Save(need)"按钮进行保存,然后点击同一菜单下的"Close"按钮返回过程集成界面,如图4.3.24所示。
图中的箭头表示在一次迭代计算中的数据流向,双击块"Input.txt"块上面的箭头,则会出现图4.3.25a)所示的数据流对话框。图a)表示T软件把参数"Heihgt"和"Radius"送到输入文件"Input.txt"中。
以上我们完成了过程集成的所有工作。
图4.3.24 过程集成界面
a) b)
C) d)
4.3.25 数据流窗口
4.3.4.4优化变量与算法设置
我们以完成软件集成与数据流定义,下面将通过变量对话框、任务方安设置和数据库对话框来进行优化变、量算法及其一些辅助选项设置。
1、点击任务管理界面工作条上的"Parameters"按钮,变量对话框,如图4.3.26所示。
图4.3.26中,"Obj"为目标函数选项,用来设定目标函数及其性质;"type"用来设置优化变量的类型,包括整数型、离散型和离散型;"Upper(Lower)bound"用来定义变量的上(下)限值;而"Current Value"用以设置变量的初值。
2、点击"Obj"列与"Volume"行交汇处的灰色按钮,则灰色按钮变为一个向下的箭头(箭头向下,表示希望在这个变量的值越小约好),再点击一次则变成一个向上的箭头(表示希望在这个变量的值越大约好)。
3、点击变量"Area"所在行与"Upper Bound"栏相交处左侧的灰色块,它变为,并在其右侧栏内输入数值:100。
图4.3.26 变量设置界面
5、分别在变量"Radius"所在行里输入其初值与上下限值,分别为:0.5,0,10。
图4.3.27 优化变量设置图
6、分别在变量"Height"所在行里输入其初值与上下限值,分别为:0.5,0,10。
经过上述设置后,各变量如图4.3.27所示。
变量设置好后,下一步便是选择优化方案了。
1、点击任务管理界面工作条上的任务方案按钮,则弹出任务方案对话框,如图4.3.28所示。
在图4.3.28中,图的左侧任务方案明细区;图右侧上部为任务设定区,而下边为优化算法明细区。
本例目的是寻找能使水杯容积最大的设计尺寸,所以任务选择"Performance"块中的"Optimization"。
另外,由于我们的问题比较简单,所以使用软件推荐的算法完全能够获得理想的结果。
2、任务选择"Performance"块中的"Optimization",并点击下边的"OK"确认后,返回任务管理界面。
图4.3.28 任务方案对话框
4.3.4.5数据库选项定义
在设计探索计划执行过程中,设计问题的分析过程会产生大量数据。这些数据可以保存在iSIGHT数据库文件中,而数据库文件可以自动产生也可以由用户指定路径,这样就大大增强了操作和管理灵活性,极大的降低了获得较优的可行设计方案所需的时间。
图4.3.29 数据库设置对话框
可以通过以下步骤进行数据库设置:
1、点击任务管理界面工作条上的"Database"按钮,则弹出图4.3.29所示的数据库设置对话框。
图4.3.29中,"Database Mode"选项用来设置迭代中数据库保存格式,其中"Append"为延续模式,而"Overwrite"为覆盖模式。"Database Storage Option"选项用以设置数据存储内容与格式。
2、在"Select Database File Name"文本框里输入数据库名:Cup.db。
3、点击图4.3.29下方的"OK"按钮,则返回任务管理界面。
4.3.4.6过程监控设置
1、点击任务管理界面工作条上的"Monitor"监控按钮,则弹出如图4.3.30所示的监控设置对话框。
图4.3.30 监控设置对话框
我们想了解在设计搜索的过程中各设计变量的变化情况,因此只需要用表格的形式列出各变量的值即可。
图4.3.31 插入表对话框
- 点击图4.3.30工具条中的"Table"表,则弹出图4.3.31所示的插入表对话框。
3、选择"Table Type"选项下边的"Custom",并点击"OK"确认后返回监控设置对话框,如图4.3.32所示。
图4.3.32 插入表后的监控设置对话框
4、用鼠标右键点击表"Custom table",在随后弹出菜单中选择"Fit to Window"选项,则最终的监控界面如图4.3.33所示,
图 4.3.33 过程监控界面
4.3.4.7执行计算
在执行计算之前,我们需要先对文件进行一下保存。
1、设任务管理界面为当前界面,点击"File"菜单下的"Save"按钮进行保存。
2、点击任务管理界面工具条上的"Execute"执行按钮,则任务开始执行。
3、重设任务监控界面为当前工作界面,就可以实时观看设计搜索的过程了。
经过76次调用Cup.exe后,分析结束,最终的监控界面如图4.3.34所示。在求解结束的同时,系统弹出执行结果报告,如图4.3.35所示。
图4.3.34求解结束时监控界面
注:图4.3.35中的最有一次求解结果并不一定是最优结果。
图4.3.35 任务执行结果报告
4.3.4.8最优解的查看
我们求解的目的就是获得能使水杯容积最大的半径和高度尺寸,所以求解结束后我们需要知道与最优解相对应的这些变量的值。查看的方法主要有以下两种:
1、通过图4.3.35的任务执行结果报告进行查看;
2、通过点击任务管理界面上的参数按钮进入变量设置对话框进行查看。本例任务结束后的参数设置对话框如图4.3.36所示。图中各参数对应的值即为与最优结果相对应的最优解。
图4.3.36 任务结束后的参数设置对话框
4.4.3 结果分析与评估
一个设计方案最根本的要求是可行,在可行的基础上才有最优可言,所以对于优化问题我们一定要对所获得最优解的正确性、可靠性进行评估。
对于本例而言,用数学方法完全可以求出其精确解为,下面我们就对其进行求解。根据实际经验我们的优化模型等价于下述模型:
(1)
(2)
由(2)式可得,
(3)
把(3)带入(1)式整理得:
(4)
对于式(4)为多项式的极值问题,通过对其求导可以得到取最大值时的半径直:
(5)
把式(5)带入(3)可解得H≈4.6743。
而我们用iSIGHT所获得相应的最优变量值为2.3041与4.6067,两者的相差分别为0.0086%、1.446%,可见iSIGHT优化结果完全可靠!而,就给我们开始的问题一个答案。