003-2多目标优化的是实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
多目标和多约束的优化问题都称为多目标优化问题。在实际应用中,常常需要使多个目标在给定的区域范围都尽可能达到最优,但多个目标之间往往都是相互冲突的。[24]
为了使多目标优化能够顺利实现人们提出了很多方法这类方法主要有:
(1)评价函数法。常用的方法有“线性加权和法”、“极大极小法”、“理想点法”。评价函数法的实质,是通过构造评价函数式把多目标转化为单目标。对即有极小化模型又有极大化模型的混合优化问题,可把极大化问题转化为极小化处理,也可用分目标乘除法、功效函数法、选择法等方法解决。但不同的评价函数,表达了不同的评价意义。因此,评价函数法只可保证所求得的最优解为多目标优化的有效解,而很难准确地获取设计者认可的满意有效解,这使得评价函数法的应用,局限于要求不高或对多目标优化方法把握不深的应用者。
(2)交互规划法。不直接使用评价函数的表达式,而是使决策者参与到求解过程,控制优化的进行过程,使分析和决策交替进行,这种方法称为交互规划法。由于有决策者的参与,所得的结果易于趋近决策者主观要求,因此其解只能达到主观最优,尚缺客观性的评价,且不易于操作。常用的方法有:逐步宽容法、权衡比替代法,逐次线性加权和法等。
(3)分层求解法。按目标函数的重要程度进行排序,然后按这个排序依次进行单目标的优化求解,以最终得到的解作为多目标优化的最优解。在要求获取的解是有效解的前提下,此种解法存在的问题为:
1)各目标的优先层次的不同选择,就得到具有不同优性的解,目标优性的差异与重要度的差异这两者的一致性难以调控与把握;2)对于非线性多目标优化,每个目标不可能在最优解上都存在等值线(面),因此往往难以优化到最后一层,从而失去了多目标优化的意义。
早期的多目标问题实质上都是将多目标优化问题转化成单目标优化问题,然后采用比较成熟的单目标优化技术来进一步地解决。传统的多目标优化方法存在以下几个缺点:
①只能得到一个最优解,然而,在实际决策中决策者通常需要多种可供选择的方案;
②各目标之间没有共同的度量标准:各自具有不同的量纲、不同的物理意义,
无法进行定量比较;
③加权值的分配带有较强的经验性:由于是人为规定各个目标函数的权值,因此带有很大的主观性;
④加权的目标函数之间通过决策变量相互制约,拓扑结构十分复杂;
⑤最终优化目标仅为各目标加权,各目标的优化进度不可调节。
随着计算机技术和基础优化理论的发展,现在已经有了比较方便的优化工具可以轻松解决多目标的优化问题。
在理论发展方面,提出了遗传算法、模糊理论、人工神经网络等优化思想,对于我们即将面对的优化问题主要用到的是遗传算法的相关思想。遗传算法的核心思想是进行整个搜索空间的大量可行解同时并行搜索这样就克服了传统方法可能陷入收敛于局部最优的困境。从思想上遗传算法是十分简单的,只是在计算机出现之前这一思想是很难实现的。
在计算机出现之后,遗传算法得到了大量的应用,常用的基于遗传算法的求解方法有:
(1)权重系数法,此方法在实质上与线性加权和法并无本质区别,只是采用了遗传算法的搜索方法。
(2)并列选择法,先将群体中的全部个体按子目标函数的数目均等地划分为一些子群体,再把目标函数分配到这些子群体,各子目标函数在相应的子群体中独立进行选择运算以形成新的子群体,然后子群体合并为一个完整的群体,在这个完整的群体内进行交义、变异运算,生成下一代完整群体,如此执行“分割一选择一合并”过程,最终可求出最优解。但易陷入单个目标函数的局部最优解,可考虑改变适应度的计算方法,使满意度高的个体得以保存。
(3)排序选择法,在此法中选择运算是依据“有效解最优个体”的概念来对群体中的各个个体进行排序,使排在前面的个体有更多机会遗传到下一代中,这样经过一定代数后,可求出多目标的有效解。[25]
可以看到除去遗传算法的核心思想,在多目标优化中加权、约束等基本条件还是一直存在的。
matlab中的fgoalattain是解决多目标数学规划的一种方法,这种方法的基本
思想是:对每一个目标函数,预先给定一个期望值,在现有的约束条件下,这组期望值也许能够达到,也许达不到。通过对不同目标的权重大小(weight),求出尽可能接近这组预定期望值的解。
Matlab简介:
MATLAB是由美国mathworks公司发布的主要面对科学计算、可视化以及交互式程序设计的高科技计算环境。它将数值分析、矩阵计算、科学数据可视化以及非线性动态系统的建模和仿真等诸多强大功能集成在一个易于使用的视窗环境中,为科学研究、工程设计以及必须进行有效数值计算的众多科学领域提供了一种全面的解决方案,并在很大程度上摆脱了传统非交互式程序设计语言(如C、Fortran)的编辑模式,代表了当今国际科学计算软件的先进水平。
Matlab的操作界面与编程软件很像,但其实际上是一种很高级的优化软件,功能十分强大。Matlab中的很多功能都是依托matlab工具箱中的工具函数来实现,在Matlab的优化工具箱中,fgoalattain函数就是根据基于遗传算法的权重系数法,用于解决此类问题的函数。由于多目标优化方法的名称不是很统一,也可以认为我们用的方法为有约束的评价函数法。
fgoalattain函数使用方法:
[x,fval,attainfactor,exitflag]=fgoalattain(fun,x0,goal,...,weight,a,b,aeq,beq,lb,ub). fun是目标函数,x0是初始值,goal是目标函数希望达到的值,weight是目标权重。
(1)当目标权重为正时,指令fgoalattain试图使对象小于目标值。为了使目标函数大于目标值,可使权重设置为负。
(2)一般设置为weight=goal或weight=abs(goal)
a,b给出线性不等式约束;aeq,beq给出线性等式约束;lb,ub为x的上界和下界。如无某类约束,可用[]代替。
通过fgoalattain函数我们可以只输入由spss回归出的非线性方程、在浆液优化实验中需要注意的约束条件、回归目标(goal)与权重,这几项数据就可以得到最终的优化结果。
作为实验我们先对初始稠度、初始流动度、凝结时间和泌水率四个因变量分