收藏 分销(赏)

内点法的基本原理以及举例计算教案资料.doc

上传人:快乐****生活 文档编号:3809433 上传时间:2024-07-19 格式:DOC 页数:9 大小:410.50KB 下载积分:6 金币
下载 相关 举报
内点法的基本原理以及举例计算教案资料.doc_第1页
第1页 / 共9页
内点法的基本原理以及举例计算教案资料.doc_第2页
第2页 / 共9页


点击查看更多>>
资源描述
内点法的基本原理以及举例计算 精品文档 一、 内点法 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时,可得最优解为 , 编程方式实现: 1. 惩罚函数 function f=fun(x,r) f=x(1,1)^2+x(2,1)^2-r*log(x(1,1)-1); 2. 步长的函数 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 f1>f2 h3=h2+st; f3=fh(x0,h3,s,r); while f2>f3 h1=h2; h2=h3; h3=h3+st; f2=f3; f3=fh(x0,h3,s,r); end else st=-st; v=h1; h1=h2; h2=v; v=f1; f1=f2; f2=v; h3=h2+st; f3=fh(x0,h3,s,r); while f2>f3 h1=h2; h2=h3; h3=h3+st; f2=f3; f3=fh(x0,h3,s,r); end end %得到高低高的区间 a=min(h1,h3); b=max(h1,h3); %利用黄金分割点法进行求解 h1=1+0.382*(b-a); h2=1+0.618*(b-a); f1=fh(x0,h1,s,r); f2=fh(x0,h2,s,r); while abs(a-b)>0.0001 if f1>f2 a=h1; h1=h2; f1=f2; h2=a+0.618*(b-a); f2=fh(x0,h2,s,r); else b=h2; h2=h1; f2=f1; h1=a+0.382*(b-a); f1=fh(x0,h1,s,r); end end h=0.5*(a+b); 4. 迭代点的寻优函数 function f=fsearchx(x0,r,epson) x00=x0; m=length(x0); s=zeros(m,1); for i=1:m s(i)=1; h=fsearchh(x0,r,s); x1=x0+h*s; s(i)=0; x0=x1; end while norm(x1-x00)>epson x00=x1; for i=1:m s(i)=1; h=fsearchh(x0,r,s); x1=x0+h*s; s(i)=0; x0=x1; end end f=x1; 5. 主程序 clear clc x0=[2;2]; %给定初始点 r=1; c=0.1; epson=0.001; x1=fsearchx(x0,0.1,epson); while norm(x0-x1)>epson x0=x1; r=r*c; x1=fsearchx(x0,r,epson) ; end disp '函数的最优解为' x1 运行结果: 函数的最优解为 x1 = 1.0475 -0.0005 收集于网络,如有侵权请联系管理员删除
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2026 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服