程序1:主程序main2.m
global lamada%主程序main2.m,罚函数方法
x0=[1 1];
lamada=2;
c=10;
e=1e-5;
k=1;
while lamada*fun2p(x0)>=e
x0=fminsearch('fun2min',x0);
lamada=c*lamada;
k=k+1;
越是接近极值点,收敛越慢;
它是其它许多无约束、有约束最优化方法的基础。
该法一般用于最优化开始的几步搜索。
以梯度法为基础的最优化方法
min f (x), x En
求f(x)在En中的极小点
基础:方向导数、梯度
思想:
方向导数是反映函数值沿某一方向的变化率问题 方向导数沿梯度方向取得最大值
通过一系列一维搜索来实现。 本方法的核心问题是选择搜索方向。 搜索方向的不同则形成不同的最优化方法。
1.约束中可以有等式约束 2.可以含线性、非线性约束均可
输入参数语法:
x = fmincon(fun,x0,A,b) x = fmincon(fun,x0,A,b,Aeq,beq) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon) x = fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options) x= fmincon(fun,x0,A,b,Aeq,beq,lb,ub,nonlcon,options,P1,P2, ...)
i 1
j 1
其中 ( y), ( y) 是满足如下条件的连续函数: