优化设计-混合惩罚函数法-MATLAB编程
优化设计-混合惩罚函数法-MATLAB编程
内点法容易处理具有不等式约束条件的优化问题,而外点法则容易处理具有等式或不等式约束条件的优化问题。内点法和外点法有各自的优缺点,如将两者结合起来,则可以更好地同时处理既具有等式约束条件,又具有不等式约束条件的优化问题,这就是混合惩罚函数法,简称混合法。
混合惩罚函数的含义是:对于初始点x(0)已满足不等式约束的约束函数项,用内点法的泛函形式;反之,采用外点法的泛函形式。混合法兼备了内点法和外点法两种功能,它可以根据初始点的具体况,进行自动排项。
MATLAB代码
本质上混合法是内点惩罚函数法与外点惩罚函数法的结合,个人认为内点法、外点法、混合法三种方法编写其中任何一种后,编写其他两种就十分简单了,混合法代码附在下方,程序运行结果会比较偏向与外点法单独运行的结果,即内点惩罚函数所起作用较小,个人也在有关内点惩罚法的博文中说了这个问题,暂时还未解决,如果解决了问题会立即更新博文。
内点惩罚函数法:https://blog.csdn.net/Randall_crow_J/article/details/106305140
外点惩罚函数法:https://blog.csdn.net/Randall_crow_J/article/details/106305835
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-