优化设计-外点惩罚函数法-MATLAB编程
优化设计-内点惩罚函数法-MATLAB编程
有关于外点惩罚法原理的详细介绍可参考:
《结构优化设计概论》[M]国防工业出版社,1997.谢祚水,或者其他优化设计有关书籍
(谢祚水先生的书很经典,所以放这了)
外点惩罚函数法介绍
外点法是将惩罚函数定义在可行域之外,并在整个Rn中进行参数寻优。初始点x0可以在Rn中任选,既可在可行域中,亦可在域外,这给设计人员和实际计算带来极大的便利。由于外点法是从约束可行域外逐步逼近约束极值点的,故它很适合于具有等式约束或不等式约束条件的优化问题。
其算法步骤可以总结为:
MATLAB程序编程
与内点惩罚法一样,程序在利用无优化约束方法求取极值点这一环节,个人用了两种方法,一种是传统的梯度法求解,但是编写的程序适用于二维变量求解,且在矩阵求逆环节计算速度较慢,于是采用了第二种方法:单纯型法,可对多维变量函数求解,有关于单纯型法的编程,可详见此文:
优化设计-外点惩罚函数法-MATLAB编程
无约束优化环节采用梯度法
MATLAB程序:
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)=1;a=2;%r为惩罚因子,a为递增系数 %% 循环 while D>e2 %罚因子迭代收敛条件 x1=A(k);x2=B(k); %判断点在不在可行域内,来选择惩罚函数 if x1-6>0 u1=1
到此这篇外点惩罚函数法的优缺点_java 函数式编程的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/haskellbc/1622.html