运筹学实验2求解非线性规划

更新时间:2024-04-18 19:14:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

实验二 应用LINGO、MATLAB软件求解非线性规划

一.实验目的

1. 对实际问题进行数学建模,并学会用数学软件Matlab或运筹软件Lindo/Lingo对问题进行求解;

2. 学会建立M文件,并学会用Matlab的软件包内部函数求解非线性规划问题。

二.实验内容

1.写出下属问题的数学模型(LINGO)

将机床用来加工产品A,6小时可加工100箱。若用机床加工产品B,5小时可加工100箱。设产品A和产品B每箱占用生产场地分别是10和20个体积单位,而生产场地(包括仓库)允许15000个体积单位的存储量。机床每周加工时数不超过60小时。产品A生产x1(百箱)的收益为(60-5x1)x1元,产品B生产x2(百箱)的收益为(80-4x2)x2元,又由于收购部门的限制,产品A的生产量每周不能超过800箱,试制定周生产计划,使机床生产获最大收益。

2.用数学软件求解下列问题:(MATLAB) (1) minf??x1?2x2?x12?x22

minf??x1?2x2?s..t2x12?3x2?61212x1?x2221212(2)

x1?4x2?5x1,x2?0x1?3,x2?6

三. 模型建立

1、设生产A产品为x1百箱,生产B产品为x2百箱,则有:

maxZ?60*x1?5x12?80x2?4x22?6x1+5x2<60?1000x1+2000x2<15000???x1<8??x1,x2?0

四. 模型求解(含经调试后正确的源程序)

1、编写程序1.m如下: model:

max=60*x1-5*x1^2+80*x2-4*x2^2;

6*x1+5*x2<60;

1000*x1+2000*x2<15000; x1<8; end

2、编写程序2.m如下:

f='-x(1)-2*x(2)+(1/2)*x(1)^2+(1/2)*x(2)^2' x0=[1,1];

[x,fval,exitflag]=fminsearch(f,x0) 3、编写程序3.m如下:

function [c,ceq]=confun(x)

c=[x(1)+4*x(2); 2*x(1)^2+3*x(2)] ceq=[]

f='(x(1)-2)^2+(x(2)-1)^2'; x0=[1,1]; lb=[3,6];

[x,fval,exitflag]=fmincon(f,x0,[],[],[],[],lb,[],'confun')

五.结果分析

1、结果为:

Local optimal solution found.

Objective value: 479.1667 Extended solver steps: 5 Total solver iterations: 33

Variable Value Reduced Cost X1 4.166667 0.000000 X2 5.416667 0.000000

Row Slack or Surplus Dual Price 1 479.1667 1.000000 2 7.916667 0.000000 3 0.000000 0.1833333E-01 4 3.833333 0.000000

这表明,当生产A产品4.17百箱,生产B产品5.42百箱时,可获得最大收益为479.17元。 2、结果为: f =

-x(1)-2*x(2)+0.5*x(1)^2+0.5*x(2)^2 x =

1.0000 2.0000 fval =

-2.5000 exitflag = 1

1

其中f为原函数,当x=(1,2)’时,取得最小值-2.5;而exitflag=1说明该规划问题收敛。 3、结果为: x =

0.0000 3.0000 fval =

8.0000 exitflag = -2

当x=(0,3)’时,取得最小值8.

2

本文来源:https://www.bwwdw.com/article/chdp.html

Top