- 1、本文档共14页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
惩罚函数法考试
惩罚函数法
惩罚函数法是一种用来求解约束优化问题的间接解法。
基本思想:将约束优化问题转化为一系列的无约束优化问题来进行求解,逐步逼近目标函数的最优解。该法也称为SUMT(Sequence Unconstrained Minimization Technique)法,亦称为序列无约束极小化方法。采用惩罚函数法进行求解时,是在原目标函数中添加一些与约束函数相关的项,形成一个新的目标函数(惩罚函数),并以它取代原目标函数,然后用无约束优化方法求新目标函数的最优解。
根据惩罚项的函数形式不同,可以分为内点法、外点法和混合法三种。
内点法
1. 基本原理
内点法的特点是将构造的新的无约束目标函数——惩罚函数定义在可行域内,并在可行域内求惩罚函数的极值点,即求解无约束问题时的探索点总是在可行域内部,这样,在求解内点惩罚函数的序列无约束优化问题的过程中,所求得的系列无约束优化问题的解总是可行解,从而在可行域内部逐步逼近原约束优化问题的最优解。。
内点法是求解不等式约束最优化问题的一种十分有效方法,但不能处理等式约束。因为构造的内点惩罚函数是定义在可行域内的函数,而等式约束优化问题不存在可行域空间,因此,内点法不能用来求解等式约束优化问题。
对于目标函数为
min
s.t. (u=1,2,3,…m)
的最优化问题,利用内点法进行求解时,构造惩罚函数的一般表达式为
或者
而对于受约束于的最优化问题,其惩罚函数的一般形式为
或
式中,-----惩罚因子,是递减的正数序列,即
通常取。
上述惩罚函数表达式的右边第二项,称为惩罚项,有时还称为障碍项。
说明:
当迭代点在可行域内部时,有(=1,2,3,4,…m),而,则惩罚项恒为正值,当设计点由可行域内部向约束边界移动时,惩罚项的值要急剧增大并趋向无穷大,于是惩罚函数的值也急剧增大直至无穷大,起到惩罚的作用,使其在迭代过程中始终不会触及约束边界。
2. 内点法的迭代步骤
(1)取初始惩罚因子,允许误差;
(2)在可行域内取初始点,令;
(3)构造惩罚函数,从点出发用无约束优化方法求解惩罚函数的极值点;
(4)检查迭代终止准则:如果满足
或
则停止迭代计算,并以为原目标函数的约束最优解,否则转入下一步;
根据情况,终止准则还可有如下的形式:
或
或
5)取,转向步骤3)。
递减系数,常取0.1,亦可取0.02。
采用内点法应注意的几个问题:
(1)初始点的选取
初始点必须严格在可行域内,满足所有的约束条件,避免为约束边界上的点。
如果约束条件比较简单,可以直接人工输入;若问题比较复杂,可采用随机数的方式产生初始点,具体方程参照复合形法介绍。
(2)关于初始惩罚因子的选择。实践经验表明,初始惩罚因子选的恰当与否,会显著地影响内点法的收敛速度,甚至解题的成败。
若值选得太小,则在新目标函数即惩罚函数中惩罚项的作用就会很小,这时求的无约束极值,犹如原目标函数本身的无约束极值,而这个极值点又不大可能接近的约束极值点,且有跑出可行域的危险。相反,若值取得过大,则开始几次构造的惩罚函数的无约束极值点就会离约束边界很远,将使计算效率降低。可取1~50,但多数情况是取。
通常,当初始点是一个严格的内点时,则应使惩罚项在新目标函数中所起的作用与原目标函数的作用相当,于是得
倘若约束区域是非凸的且初始点亦不靠近约束边界,则的取值可更小,约为上式算得值的0.1~0.5倍。
内点法的计算程序框图
例题:用内点法求
min
s.t. (u=1,2,3,…m)
的约束最优解。(取0.001)
解:构造内点惩罚函数为
用极值条件进行求解
,
联立上式求得
,
由于约束条件的限制,可得无约束极值点为
当取1,0.1,0.01,…→0时,可得最优解为
,
编程方式实现:
惩罚函数
function f=fun(x,r)
f=x(1,1)^2+x(2,1)^2-r*log(x(1,1)-1);
步长的函数
function f=fh(x0,h,s,r)
%h为步长
%s为方向
%r为惩罚因子
x1=x0+h*s;
f=fun(x1,r);
3. 步长寻优函数
function h=fsearchh(x0,r,s)
%利用进退法确定高低高区间,利用黄金分割法进行求解
h1=0;%步长的初始点
st=0.001; %步长的步长
h2=h1+st;
f1=fh(x0,h1,s,r);
f2=fh(x0,h2,s,r);
if f1f2
h3=h2+st;
f3=fh(x0,h3,s,r);
while f2f3
h1=h2;
h2=h3;
h3=h3
您可能关注的文档
最近下载
- 2021年高原心脏病的研究进展(全文).docx VIP
- 2024年全国消防宣传月(全国消防日)专题课件.ppt
- 成套简历几何简约个人简历word简历模板.pdf VIP
- 2021-2023年上海二模分类汇编:文言文一-上海市十六区近三年(2021-2023)高考语文一模、二模试题分类汇编(解析版).pdf VIP
- 《安检理论与实务》教案 第8课 掌握常见违禁品的相关知识.docx
- 服务与服务计算.ppt VIP
- 行政执法人员执法行为规范课件.pptx
- 分部工程验收会议纪要范文15篇.docx
- 工业固体废物协同矿山地质环境修复治理项目环评环境影响报告书.docx
- 燃气热水锅炉招标文件常压.docx
文档评论(0)