非线性规划问题求解

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

P (x) 的定义一般如下: m
i 1
P( x) ( gi ( x)) (h j ( x))
j 1
l
其中 ( y), ( y) 是满足如下条件的连续函数: 当 y 0 时, ( y) 0 ;当 y 0 时, ( y) 0 ; 当 y 0 时, ( y) 0 ;当 y 0 时, ( y) 0 ; 函数 ( y), ( y)一般定义如下:
x ( k 1) 为初始点,求解下列规划问题: (2) 以
min s.t.
f ( x) ( k ) B( x) xS
,令
x (k )
为所求极小点
x (k )
(3) 如果 ( k ) B( x ( k ) ) e ,则停止计算,得到结果 (4) 否则令
( k 1)

b ( k ) ,置 k=k+1,返回(2) 。
min f ( x) P( x) ,令 x(k)为所求极小点。
(3) 当 P( x ( k ) ) e ,则停止计算,得到点 x(k);
( k 1) c( k ) ,返回(2)执行。 否则,令
如何将此算法模块化:
罚项函数:
P( x )
Βιβλιοθήκη Baidu
(k )
无约束规划目标函数: f ( x) P( x)
求解非线性规划模型例子
min( x x )
2 1 2 2
s.t. ( x1 1) x 0
3 2 2
程序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; end disp(‘最优解’),disp(x0) disp('k='),disp(k)
function r=fun1gra(x) %最速下降法求解示例 %函数f(x)=2*x1^2+x2^2的梯度的计算 % r(1)=4*x(1); r(2)=2*x(2);
第二步:求 最优的目标函数
(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; %注意负号表示是负梯度
[max{ 0, g i ( x )}] , | h j ( x ) |b ,
a
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) 5 x1 4 x x2 1
2 2
s.t. x1 0
小结
讲解了两个求解有约束非线性最小化规划 特点: 易于实现,方法简单; 没有用到目标函数的导数 问题的转化技巧(近似为一个无约束规划)
4、其它求解算法
(1)间接法 (2)直接法
第三步:主程序main1.m
%最速下降方法实现一个非线性最优化问题 % min f(x)=2*x1^2+x2^2 global x0 x0=[ 1 1 ]; yefi=0.0001; k=1; d=-fun1gra(x0); lamada=1;
主程序main1.m(续)
while sqrt(sum(d.^2))>=yefi 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)
min f ( x) 2 x x
2 1
2 2
初始条件
x
(1)
[1,1] , 0.0001
T
分析: 1、编写一个梯度函数程序fun1gra.m
2、求 (可以调用函数fminsearch )函 数fungetlamada.m 3、最速下降法主程序main1.m
(k )
第一步:计算梯度程序 fun1gra.m
最速下降法(steepest descent method) 由法国数学家Cauchy于1847年首先提出。在 每次迭代中,沿最速下降方向(负梯度方向) 进行搜索,每步沿负梯度方向取最优步长, 因此这种方法称为最优梯度法。 特点:
方法简单,只以一阶梯度的信息确定下一步的搜索 方向,收敛速度慢; 越是接近极值点,收敛越慢; 它是其它许多无约束、有约束最优化方法的基础。 该法一般用于最优化开始的几步搜索。
(2)直接法
直接法是一种数值方法 这种方法的基本思想是迭代,通过迭代产生 一个点序列{ X(k) },使之逐步接近最优点。 只用到目标函数。 如黄金分割法、Fibonacci、随机搜索法。
(3)迭代法一般步骤
(1) 选定初始点 X (0),k=0 (2) 寻找一个合适的方向 P (k),k=0,1,2,… P (k)为第 k+1 步的搜索方向。 (3) 求出沿 P
要求构造的函数 F ( x, ) 具有这样的性质:当 点x位于可行域以外时, F ( x, )取值很大,而 离可行域越远则越大;当点在可行域内时, 函数 F ( x, ) f ( x) 因此可以将前面的有约束规划问题转换为下 列无约束规划模型:
min F ( x, ) f ( x) P( x) 其中称为 P(x) 罚项, 称为罚因子, F ( x, ) 称为罚函数。
x 其中 B (x ) 是连续函数,当点 趋于可行域边界时, B (x ) ,B(x)可以取如下形式:
m 1 B( x) 或 B ( x ) log g i ( x ) i 1 i 1 g i ( x )
m
x 在这里是个很小的正数,那么当 趋于边界时, F ( x , )
最速下降法算法:
1. 给定初始点 x
(1)
E ,给定误差 0 ,令 k=1;
n
2. 计算搜索方向 d 3. 如果
(k )
f
x ;
(k )
(k )
d
(k )
,则迭代终止,否则通过下列一维搜索
求 4. 令 x
( k 1)
(k )
: min
0
(k )
f
x
(k )
运行输出:
最优解 1.00012815099165 -0.00000145071779 k= 33
练习题:
1、用外点法求解下列模型
min( x 2 x )
2 1 2 2
s.t. x1 x 2 1
2、将例子程序改写为一个较为通用的罚函数 法程序。(考虑要提供哪些参数)
2. 内点法(障碍函数法)
(k)
方向前进的步长
(k )
(4) 得到新的点 X (k+1), X ( k 1) X ( k ) ( k ) P ( k ) 检验 X (k+1)是否最优,如果是最优,则迭代结束, 否则 k
k 1 ,转到(2)执行。
注意:数值求解最优化问题的计算效率取决 于确定搜索方向P (k)和步长 (k ) 的效率。
输入参数的几点说明
模型中如果没有A,b,Aeq,beq,lb,ub的限制,则以空矩阵[ ]作为 参数传入; nonlcon:如果包含非线性等式或不等式约束,则将这些函数 编写为一个Matlab函数,
nonlcon就是定义这些函数的程序文件名;
不等式约束 c(x)<=0 等式约束 ceq(x)=0.
三、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 1.约束中可以有等式约束 2.可以含线性、非线性约束均可
一、非线性规划问题的几种求解方法 1. 罚函数法(外点法)
min f ( x) s.t. g i ( x) 0(i 1,2,, m) h j ( x) 0( j 1,2,, l )
基本思想: 利用目标函数和约束函数构造辅助函数:
F ( x, ) f ( x) P( x)
如果nonlcon=‘mycon’ ; 则myfun.m定义如下
function [c,ceq] = mycon(x) c = ... % 计算非线性不等式约束在点x处的函数值 ceq = ... %计算机非线性等式约束在点x处的函数值
min
f ( x)
s.t. g i ( x) 0, i 1,2,, m
仅适合于不等式约束的最优化问题 其中 f ( x), g i ( x)(i 1,2,, m) 都是连续函数,将模型的定义域记为
S {x | g i ( x) 0, i 1,2,, m}
构造辅助函数 为了保持迭代点含于可行域内部,我们定义 障碍函数 F ( x, ) f ( x) B( x)
(k )
d


x

(k )
d
,置 k=k+1,转(2)步执行。
算法说明
x d
( k 1)

x
(k )

(k )
(k )
d
(k )
(k )
f ( x )


(k )
(k )
:为 min f
0
x
(k )
d
(k )
的解
可通过一维无约束搜索方法求解
例子:用最速下降法解下列问题

3. 问题转化为一个无约束规划
由于 很小,则函数 F ( x, ) 取值接近于 f(x),所以原问题可以归结为如下规划问题的 近似解:
min
F ( x, )
s.t. x S
算法: (1) 给定初始内点x
(0)
S ,允许误差 e>0,
障碍参数 (1) ,缩小系数b (0,1) ,置 k=1;
直接搜索法 以梯度法为基础的间接法 无约束规划的Matlab求解函数 数学建模案例分析(截断切割,飞机排队)
(1)间接法
在非线性最优化问题当中,如果目标函 数能以解析函数表示,可行域由不等式约束 确定,则可以利用目标函数和可行域的已知 性质,在理论上推导出目标函数为最优值的 必要条件,这种方法就称为间接法(也称为 解析法) 。 一般要用到目标函数的导数。
以梯度法为基础的最优化方法
min f ( x), x E
求f(x)在En中的极小点
基础:方向导数、梯度
n
思想:
方向导数是反映函数值沿某一方向的变化率问题 方向导数沿梯度方向取得最大值
通过一系列一维搜索来实现。 本方法的核心问题是选择搜索方向。 搜索方向的不同则形成不同的最优化方法。
程序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);
输入参数语法:
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, ...)
相关文档
最新文档