_无约束非线性规划实验实例
- 格式:doc
- 大小:33.50 KB
- 文档页数:3
运筹学实习报告姓名: xxxxxxxxxx 学号: xxxxxxxxxxx 专业班级: xxxxxxxxxxxx 2 0 1 3年 7 月 0 4 日题目:用最速下降法求解无约束非线性规划问题 摘要:无约束最优化问题的求解方法分为解析法和直接法两大类。
解析法需要计算函数的梯度,其中最速下降法就属于解析法中的一种。
对于一个无约束非线性规划利用最速下降法求解,首先需要确定其优化方向,此优化方向应该选择为f 在当前点处的负梯度方向,利用一维搜索法找出沿此方向上的最小值及其对应点,此后将该点作为新的出发点重复上述过程,直到达到允许的误差为止。
本文通过理论的计算方法,进一步分析,最后用c++编程实现求出允许误差内的最优解。
此编程可用于计算符合下列形式的函数求最优解过程:f(x)=a[0]x1*x1+a[1]x2*x2+a[2]x1*x2+a[3]x1+a[4]x2+a[5]其中:a[i] (i=0,1,2,3,4,5) 为函数的系数。
本文以“ 李占利 主编,中国矿业大学出版社出版”的《最优化理论与方法》 第五章 “无约束最优化方法,5.1 最速下降法 ”例5—1为实例,首先利用上述迭代的方法,计算出各迭代点的函数值,梯度及其模。
然后应用c++语言编程,得到在精度范围内的精确最优解。
C++编程计算的最优解为 : T x x ]0329218.0,00823045.0[)3(*-==。
即转化为分数结果为:⎥⎦⎤⎢⎣⎡-==412432)3(*x x 。
满足精度要求的模为:1010736154.0||||)3(=<=εp 。
关键词:无约束非线性规划 解析法 最速下降法 梯度 模 最优解一、算法思想无约束最优化方法中的最速下降法首先需要确定其优化方向,此优化方向应该选择为f 在当前点处的负梯度方向,利用一维搜索法找出沿此方向上的最小值及其对应点,此后将该点作为新的出发点重复上述过程,直到达到允许的误差为止。
数学与软件科学学院 实验报告学期:2012至2013 第1学期 2012年11月23日 课程名称: 运筹学 专业:数学与应用数学 2011级1班实验编号:2 实验项目:非线性规划 指导教师:黄娟 姓名: 杨志刚 学号:2011060151 实验成绩:_____一、实验目的及要求了解Matlab 优化工具箱中约束优化函数和无约束优化函数,掌握函数调用格式和参数的具体含义,熟悉M 函数的编写,能利用Matlab 求解非线性规划问题。
二、实验内容编写相应的M 函数和M 文件,调用Matlab 优化工具箱中相应的优化函数,并能正确读取结果。
三、实验步骤(该部分不够填写.请填写附页)调用函数fmincon ()求解约束非线性规划的步骤<1> 把约束非线性规划问题化为要求的格式初始点为x0=(0,1)’<2> 编写目标函数的M 函数(MP_fun.m), 并保存。
function y=MP_fun(x)y=x(1)*x(1)-x(2);<3> 编写约束函数的M 函数(MP_con.m), 并保存。
function [c, ceq]=MP_con(x)c=[x(1)*x(1)+x(2)*x(2)-4];ceq=[ ];<4> 编写M 文件(MP.m),并保存。
x0=[0;1]; xm=[-inf;1/2]; xM=[0;inf];aeq=[]; beq=[];[x,f_opt,flag]=fmincon(…MP_fun', x0, [], [], aeq, beq, xm, xM, …MP_con')<5> 运行M 文件. 在》后输入MP ,按“Enter”键。
调用函数fminunc ()求解无约束非线性规划的步骤<1> 把无约束非线性规划问题 化为要求的格式min f(x1,x2)=x1^2+8*x1+x2^2-4*x2初始点x0=(7,8)‟.<2> 编写目标函数的M 函数(UMP_fun.m), 并保存。
无约束非线性规划求解
例1125 2
min ()sin(6)x f x e x -=⋅
function minf1125()
x0=1;
[x,y]=fminsearch(@fun,x0)
function y=fun(x)
y=exp(-x*x)*sin(6*x);
在命令窗口输入:
Minf1125回车
>> minf1125
x =
0.7448
y =
-0.5573
例1126 4422121212m in 143824120y x x x x x x =+---+
function minf1126()
x0=[7,7];
[x,y]=fminsearch(@fun,x0)
function y=fun(x)
y=x(1)^4+x(2)^4-14*x(1)^2-38*x(2)^2-24*x(1)+120*x(2);
在命令窗口输入:
Minf1126回车
>> minf1126
x =
3.0000 3.0000
x =
3.0000 3.0000
y =
-18.000
例1127:用最速下降法解下列问题
22
12m in ()2f x x x =+ 初始条件 (1)[1,1],0.0001T
x ε== 分析:
1、编写一个梯度函数程序fun1gra.m
2、求(可以调用函数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);
第二步:求()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;
%注意负号表示是负梯度
第三步:主程序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;
while sqrt(sum(d.^2))>=yefi
lamada=fminsearch('fungetlamada',lamada);%求最优步长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) 实验任务:分别用优化工具箱和最速下降法求解4.2(2)、4.3并比较。