数学与软件科学学院 实验报告
学期:_2010_至_2011 第_一_ 学期 2010 年12月02日 课程名称:运筹学 专业:_数学与应用数学 _2009___级__4__班
实验编号: 02 实验项目___非线性规划及无约束最优化问题
指导教师:黄老师
姓名:康蜀江 学号:2009060426 实验成绩:___
一、 实验目的及要求:
继续学习Matlab的优化工具箱,了解由function语句引导的M函数, 熟悉M文件的编写, 掌握相关函数的调用格式和参数的具体含义,能利用Matlab求解非线性规划及无约束最优化问题。
二、实验内容:
(1) 求解非线性规划
2 ?minz?x1?x2 ?22s.t.x?x?4?0?12 ?? x1?0? 10T?x?(0,1) ? x 2 ? 选取初始点为
2?
(2) 用fminunc求解下面的无约束最优化问题。 22minf(x1,x2)?x1?8x1?x2?4x2
T
选取初始点为 x0??7,8?.
三、 实验步骤:
程序代码:
function y=MP_fun(x) y=x(1)*x(1)-x(2);
function [c,ceq]=MP_con(x) c=[x(1)*x(1)+x(2)*x(2)-4]; ceq=[];
x0=[0,1];xm=[-inf,1/2];xM=[0,inf];
[x,f_otp,flag]=fmincon('MP_fun',x0,[],[],[],[],xm,xM,'MP_con')
运行结果(1): x =
0 2 f_otp = -2 flag = 1
function y=MP_fun(x)
y=x(1)*x(1)+8x(1)+x(2)*x(2)-4x(2); x0=[7,8];
[x,f_opt,flag]=fminunc('MP_fun', x0,[],[],[],[],[],[]) 程序代码:
function y=UMP_fun(x)
y=x(1)^2+8*x(1)+x(2)^2-4*x(2); x0=[1;1];
[x,f,flag]=fminunc('UMP_fun',x0)
运行结果(2): x = -4.0000 2.0000 f = -20 flag =
1
四、 实验结果分析与评价 :
利用Matlab可以方便快捷地求解非线性规划及无约束最优化问题。在使用过程中应注意:返回变量如果多于1个,则应该用方括号将它们括起来,否则可省。输入变量之间用逗号来分隔,返回变量之间用逗号或空格来分隔。另外,还要注意引号 的使用;inf表示无穷;运行时要把M函数(MP_fun.m和MP_con.m)以及M文件(MP.m)都放到当前目录里等。