非线性规划问题的求解方法
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
程序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) 是满足如下条件的连续函数:
当 y 0 时, (y) 0 ;当 y 0 时, (y) 0 ;
当 y 0 时, ( y) 0 ;当 y 0时, ( y) 0 ;
函数 ( y), ( y)一般定义如下:
[max{ 0,gi (x)}] a , | h j (x) |b ,
end
disp(‘最优解’),disp(x0)
disp('k='),disp(k)
程序2:计算 P(x(k) ) 的函数fun2p.m
function r=fun2p(x) %罚项函数 r=((x(1)-1)^3-x(2)*x(2))^2;
程序3:辅助函数程序fun2min.m
function r=fun2min(x) %辅助函数 global lamada r=x(1)^2+x(2)^2+lamada*fun2p(x);
(3)当 P(x(k) ) e ,则停止计算,得到点 x(k); 否则,令 (k1) c(k) ,返回(2)执行。
如何将此算法模块化:
罚项函数: P(x(k) ) 无约束规划目标函数: f (x) P(x)
求解非线性规划模型例子
min( x12 x22 ) s.t. (x1 1)3 x22 0
于确定搜索方向P (k)和步长 (k ) 的效率。
最速下降法(steepest descent method) 由法国数学家Cauchy于1847年首先提出。在 每次迭代中,沿最速下降方向(负梯度方向) 进行搜索,每步沿负梯度方向取最优步长, 因此这种方法称为最优梯度法。
特点:
方法简单,只以一阶梯度的信息确定下一步的搜索 方向,收敛速度慢;
P (k)为第 k+1 步的搜索方向。
(3) 求出沿 P (k)方向前进的步长 (k )
(4) 得到新的点 X (k+1), X (k1) X (k ) (k ) P(k )
检验 X (k+1)是否最优,如果是最优,则迭代结束,
否则 k k 1,转到(2)执行。
注意:数值求解最优化问题的计算效率取决
其中 B(x) 是连续函数,当点 x 趋于可行域边界时,
B(x) ,B(x)可以取如下形式:
B(x)
m i 1
1 gi (x)
或 B(x)
m
i 1
loggi (x)
在这里是个很小的正数,那么当 x 趋于边界时,
F(x, ) 。
3. 问题转化为一个无约束规划
由于 很小,则函数 F (x, )取值接近于
a 1, b 1 ,a,b 为常数,通常取 a=b=2。
算法步骤
(1)给定初始点 x(0),初始罚因子 (1) , 放大系数 c>1;允许误差 e>0,设置 k=1;
(2)以 x(k-1)作为搜索初始点,求解无约束规划问题 min f (x) P(x) ,令 x(k)为所求极小点。
离可行域越远则越大;当点在可行域内时,
函数 F(x, ) f (x)
因此可以将前面的有约束规划问题转换为下 列无约束规划模型:
min F(x,) f (x) P(x)
其中称为 P(x)罚项, 称为罚因子,
F (x, ) 称为罚函数。
P( x) 的定义一般如下:
m
l
P(x) (gi (x)) (hj (x))
第二步:求 (k) 最优的目标函数
function r=fungetlamada(lamada) %关于lamada的一元函数,求最优步长 global x0 d=fun1gra(x0); r=2*(x0(1)-lamada*d(1))^2+(x0(2)lamada*d(2))^2; %注意负号表示是负梯度
仅适合于不等式约束的最优化问题
其中 f (x), gi (x)(i 1,2,, m)
都是连续函数,将模型的定义域记为 S {x | gi (x) 0,i 1,2,, m}
构造辅助函数 为了保持迭代点含于可行域内部,我们定义
障碍函数 F(x, ) f (x) B(x)
算法说明
x x d (k1)
(k)
(k) (k)
d x (k) f ( (k))
min x d (k) :为
f (k) (k) 的解
0
(k) 可通过一维无约束搜索方法求解
例子:用最速下降法解下列问题
min f (x) 2x12 x22
x 初始条件 (1) [1,1]T , 0.0001
运行输出:
最优解 1.00012815099165 -0.00000145071779
k= 33
练习题:
1、用外点法求解下列模型
min( x12 2x22 ) s.t. x1 x2 1
2、将例子程序改写为一个较为通用的罚函数 法程序。(考虑要提供哪些参数)
2. 内点法(障碍函数法)
min f (x) s.t. gi (x) 0,i 1,2,, m
lamada=fminsearch(‘fungetlamada’,la mada);%求最优步长lamada
x0=x0-lamada*fun1gra(x0);%计算x0 d=fun1gra(x0);%计算梯度 k=k+1;%迭代次数
end
disp('x='),disp(x0),disp('k='),disp (k),disp('funobj='),disp(2*x0(1)^2+ x0(2)^2)
对参数nonlcon的进一步示例
x12 x22 x32 100
x12 10x32 60
x1 x22 x3 80
2个不等式约束,
x13
x
2 2
x3
80
2个等式约束
3个决策变量x1,x2,x3 如果nonlcon以‘mycon1’作为参数值,则程序 mycon1.m如下
分析: 1、编写一个梯度函数程序fun1gra.m
2、求 (k)(可以调用函数fminsearch )函
数fungetlamada.m 3、最速下降法主程序main1.m
第一步:计算梯度程序 fun1gra.m
function r=fun1gra(x) %最速下降法求解示例 %函数f(x)=2*x1^2+x2^2的梯度的计算 % r(1)=4*x(1); r(2)=2*x(2);
f(x),所以原问题可以归结为如下规划问题的 近似解:
min F (x, )
s.t. x S
算法: (1) 给定初始内点 x(0) S ,允许误差 e>0,
障碍参数 (1) ,缩小系数b (0,1) ,置 k=1;
(2) 以 x(k1) 为初始点,求解下列规划问题: min f (x) (k) B(x) ,令x(k) 为所求极小点 s.t. x S
(3) 如果 (k ) B(x (k ) ) e ,则停止计算,得到结果x(k) , (4) 否则令 (k1) b (k ) ,置 k=k+1,返回(2)。
练习题:
请用内点法算法求解下列问题:
min f (x) 5x1 4x22 s.t. x1 0
x2 1
小结
讲解了两个求解有约束非线性最小化规划 特点: 易于实现,方法简单; 没有用到目标函数的导数 问题的转化技巧(近似为一个无约束规划)
第三步:主程序main1.m
%最速下降方法实现一个非线性最优化问题 % m x0=[ 1 1 ]; yefi=0.0001; k=1; d=-fun1gra(x0); lamada=1;
主程序main1.m(续)
while sqrt(sum(d.^2))>=yefi
一、非线性规划问题的几种求解方法 1. 罚函数法(外点法)
min f (x) s.t. gi (x) 0(i 1,2,, m)
h j (x) 0( j 1,2,,l)
基本思想: 利用目标函数和约束函数构造辅助函数:
F(x,) f (x) P(x)
要求构造的函数 F(x, ) 具有这样的性质:当 点x位于可行域以外时,F(x, )取值很大,而
输入参数的几点说明
模型中如果没有A,b,Aeq,beq,lb,ub的限制,则以空矩阵[ ]作为 参数传入; nonlcon:如果包含非线性等式或不等式约束,则将这些函数
编写为一个Matlab函数, nonlcon就是定义这些函数的程序文件名;
不等式约束 c(x)<=0 等式约束 ceq(x)=0. 如果nonlcon=‘mycon’ ; 则myfun.m定义如下 function [c,ceq] = mycon(x) c = ... % 计算非线性不等式约束在点x处的函数值 ceq = ... %计算机非线性等式约束在点x处的函数值
最速下降法算法:
1. 给定初始点 x(1) En ,给定误差 0 ,令 k=1;
2. d x 计算搜索方向 (k) f ; (k)
3. 如果 d (k) ,则迭代终止,否则通过下列一维搜索
min x d 求 : (k)
f (k) (k)
0
x x d 4. 令 (k1) (k) (k) (k) ,置 k=k+1,转(2)步执行。
4、其它求解算法
(1)间接法 (2)直接法
直接搜索法 以梯度法为基础的间接法
无约束规划的Matlab求解函数 数学建模案例分析(截断切割,飞机排队)
(1)间接法
在非线性最优化问题当中,如果目标函 数能以解析函数表示,可行域由不等式约束 确定,则可以利用目标函数和可行域的已知 性质,在理论上推导出目标函数为最优值的 必要条件,这种方法就称为间接法(也称为
解析法) 。
一般要用到目标函数的导数。
(2)直接法
直接法是一种数值方法 这种方法的基本思想是迭代,通过迭代产生 一个点序列{ X(k) },使之逐步接近最优点。 只用到目标函数。 如黄金分割法、随机搜索法。
(3)迭代法一般步骤
(1) 选定初始点 X (0),k=0 (2) 寻找一个合适的方向 P (k),k=0,1,2,…
三、Matlab求解有约束非线性规划
1. 用fmincon函数求解形如下面的有约束 非线性规划模型
一般形式:
min f ( X ) s.t. AX b
Aeq X beq l X u c(X ) 0 ceq ( X ) 0
用Matlab求解有约束非线性最小化问题
求 解 非 线 性 规 划 问 题 的 Matlab 函 数 为 : fmincon
45mints21221xxxxxf讲解了两个求解有约束非线性最小化规划特点易于实现方法简单没有用到目标函数的导数问题的转化技巧近似为一个无约束规划412直接搜索法以梯度法为基础的间接法无约束规划的matlab求解函数数学建模案例分析截断切割飞机排队1在非线性最优化问题当中如果目标函数能以解析函数表示可行域由不等式约束确定则可以利用目标函数和可行域的已知性质在理论上推导出目标函数为最优值的必要条件这种方法就称为间接法也称为解析法