优化设计-内点惩罚函数法-MATLAB编程

更新时间:2023-06-08 23:24:40 阅读: 评论:0

优化设计-内点惩罚函数法-MATLAB编程
优化设计-内点惩罚函数法-MATLAB编程
优化设计-内点惩罚函数法-MATLAB编程
有关于内点惩罚法原理的详细介绍可参考:
《结构优化设计概论》[M]国防⼯业出版社,1997.谢祚⽔,或者其他优化设计有关书籍
(谢祚⽔先⽣的书很经典,所以放这了)
内点惩罚函数法介绍
内点法是将惩罚函数定义在可⾏域内,并从可⾏域内某⼀初始点出发,在可⾏域内进⾏迭代的⽅法。它的最⼤特点是在给定⼀个初始可⾏的⽅案之后,通过迭代寻优, 可以得到⼀系列可⾏的、逐步改进的及可任意选取的设计⽅案。这对决策⼈员具有很⼤的可选灵活性,他既可以选择约束最优解x*,也可以根据具体情况,选择其中任何⼀个⽆约束最优解x*(r(k))。由于内点法的所有迭代点始终是在可⾏域内部进⾏的,因⽽它不能处理具有等式约束条件的优化问题。
其算法步骤可以总结为:
MATLAB程序编程
不锈钢钝化处理本程序运⾏有⼀定的⼩问题,即运⾏结果可能超出可⾏域外,⽽接近原函数⽆约束优化时的解,即惩罚函数未起到应有的作⽤。于是我在惩罚函数选取时选取了三种形式的惩罚函数,可结果依然不理想。⼀些研究有说出现这种情况可能是初始惩罚因⼦选取过⼩的问题,但是调整初始惩罚因⼦后,程序结果依旧没有太⼤的改变,现将程序附下,希望能有⼈指点下
⽆约束优化环节采⽤梯度法
MATLAB程序如下:
%%内点法惩罚函数选取在line16可调整,计算逆矩阵(line30)计算速度很慢
clear all;clc
syms x1 x2 x;
f=x1^2+x2^2-x1*x2-10*x1-4*x2+60;%原函数
g1=x1-6;g2=x2-8;g3=x1+x2-11;%约束条件转换函数
e1=0.1;%梯度法最优值收敛精度
e2=0.1;%内点法收敛精度
D=1;%差值
k=1;
A(k)=0;B(k)=0;%A,B分别记录x1,x2点,初始点为[0,0]
七八月r(k)=3;a=0.7;%r为惩罚因⼦,a为递增系数
%%循环
while  D>e2 %罚因⼦迭代收敛条件古诗诗句
x1=A(k);x2=B(k);
%约束问题转换后的新⽬标函数;
F=f-r(k)*(log10(-g1)+log10(-g2)+log10(-g3));%F=f+r(k)*(1/g1^2+1/g2^2+1/g3^2);%F=f-r(k)*(1/g1+1/g2+1/g3);
%梯度法求F的最优解xr
Fx1=diff(F,'x1');Fx2=diff(F,'x2');Fx1x1=diff(Fx1,'x1');Fx1x2=diff(Fx1,'x2');Fx2x1=diff(Fx2,'x1');Fx2x2=diff(Fx2,'x2');%求偏导、海森元素。for n=1:100%梯度法求最优值。
F1=subs(Fx1);%求解梯度值和海森矩阵
勤俭节约图片F2=subs(Fx2);
梦到数钱
F11=subs(Fx1x1);
F12=subs(Fx1x2);
F21=subs(Fx2x1);
F22=subs(Fx2x2);
if(double(sqrt(F1^2+F2^2))<=e1)%梯度法最优值收敛条件
A(k+1)=double(x1);B(k+1)=double(x2);
break;
el
X=[x1 x2]'-([F11 F12;F21 F22])\[F1 F2]';
x1=X(1,1);x2=X(2,1);
end
end
D=double(sqrt((A(k+1)-A(k))^2+(B(k+1)-B(k))^2));
r(k+1)=a*r(k);
k=k+1;
end
A(k)
B(k)
double(subs(f))加勒比海盗6四海之怒上映时间
⽆约束优化环节采⽤单纯型法
MATLAB程序如下:
%%内点法惩罚函数选取的问题line16
clear all;clc
syms x1 x2 x;
f=x1^2+x2^2-x1*x2-10*x1-4*x2+60;%原函数
g1=x1-6;g2=x2-8;g3=x1+x2-11;%约束条件转换函数e1=0.001;%梯度法最优值收敛精度
e2=0.001;%内点法收敛精度
D=1;%差值
k=1;
A(k)=0;B(k)=0;%A,B分别记录x1,x2点,初始点为[0,0] r(k)=10;a=0.7;%r为惩罚因⼦,a为递增系数
%%循环
while  D>e2 %罚因⼦迭代收敛条件
x1=A(k);x2=B(k);
%约束问题转换后的新⽬标函数
%F=f-r(k)*(log10(-g1)+log10(-g2)+log10(-g3));
F=f+r(k)*(1/(g1^2)+1/(g2^2)+1/(g3^2));
%F=f-r(k)*(1/g1+1/g2+1/g3);
%单纯形法求F的最优解xr
minx=minfunction(F,x1,x2,e1);
A(k+1)=minx(1,1);B(k+1)=minx(2,1);
D=double(sqrt((A(k+1)-A(k))^2+(B(k+1)-B(k))^2)); r(k+1)=a*r(k);
k=k+1;
end
A(k)
太阳能的缺点
家用除湿机推荐B(k)
double(subs(f))
欢迎各位⼤佬指正程序中的问题

本文发布于:2023-06-08 23:24:40,感谢您对本站的认可!

本文链接:https://www.wtabcd.cn/fanwen/fan/82/906438.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:惩罚   函数   优化   内点
相关文章
留言与评论(共有 0 条评论)
   
验证码:
推荐文章
排行榜
Copyright ©2019-2022 Comsenz Inc.Powered by © 专利检索| 网站地图