一 函数使用说明

外点罚函数penalty(fun,g,h,x0),可以用来求解含有非线性不等式和等式约束的优化问题。在调用函数时首先需要用户新建三个函数即目标函数,不等式约束和等式约束,然后输入penalty(@fun,@g,@h,x)即可,fun,g,h为用户自己定义的三个函数的名称,x为初始点坐标。

二 主函数说明

penalty(x)函数主要利用外点罚函数法来对目标函数进行优化,首先根据用户给出的三个函数(fun(x),g(x),h(x))构造一个新的函数TextF(x),即
TextF(x)=fun(x)+r ( ∑_(j=1)^m▒〖max[0,g_j (x)]^2 〗 + ∑_(k=1)^l▒〖[h_k (x)]^2 〗 )。
根据经验值确定罚因子r0=1,权数c=5,精度0.001。每次迭代都由本轮的r值得出一个最优点(使用鲍威尔法),当步长足够小时结束迭代,当r大于障碍数R时,令r=Inf,再进行一次迭代后结束迭代,结束迭代后返回当前x和fx。

三 子函数说明

fun函数为用户输入的目标函数。
g函

更多推荐

外点罚函数法的matlab编程与使用