AP0805414实验四求解非线性规划模型.docx

上传人:b****7 文档编号:15491058 上传时间:2023-07-05 格式:DOCX 页数:15 大小:159.33KB
下载 相关 举报
AP0805414实验四求解非线性规划模型.docx_第1页
第1页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第2页
第2页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第3页
第3页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第4页
第4页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第5页
第5页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第6页
第6页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第7页
第7页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第8页
第8页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第9页
第9页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第10页
第10页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第11页
第11页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第12页
第12页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第13页
第13页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第14页
第14页 / 共15页
AP0805414实验四求解非线性规划模型.docx_第15页
第15页 / 共15页
亲,该文档总共15页,全部预览完了,如果喜欢就下载吧!
下载资源
资源描述

AP0805414实验四求解非线性规划模型.docx

《AP0805414实验四求解非线性规划模型.docx》由会员分享,可在线阅读,更多相关《AP0805414实验四求解非线性规划模型.docx(15页珍藏版)》请在冰点文库上搜索。

AP0805414实验四求解非线性规划模型.docx

AP0805414实验四求解非线性规划模型

 

《数学建模》

实验指导书

姓名:

李继滨

班号:

AP08054

学号:

AP0805414

 

 

五邑大学数学物理系

二○○八年八月印刷

实验4指导书

实验项目名称:

求解非线性规划模型

所属课程名称:

数学建模

实验计划学时:

2学时

一、实验目的

掌握数学软件Lingo用集合步和循环语句等编程求解非线性规划模型。

二、实验内容和要求

(一)实验内容(钢管下料模型)

某钢管零售商从钢管厂进货,将钢管按照顾客的要求切割后售出,从钢管厂进货时原料钢管都是168米。

现有顾客需要968根12米、848根23米、1253根28米和988根35米的钢管。

1.因为零售商如果采用不同切割模式太多,将会导致生产过程复杂化,从而增加生产成本,所以该零售商规定采用的切割模式不超过3种。

请你确定下料方案。

2.若该零售商规定采用的切割模式不超过4种。

请你重新确定下料方案。

3.思考题

在上面下料问题中若不限制切割模式的数量,请你确定下料方案。

(二)要求

有问题分析、数学模型、Lingo的求解程序、程序的运行结果和所有问题的回答。

三、实验主要仪器设备和材料

每人一台计算机,要求已安装Lingo8.0以上版本。

四、实验方法、步骤及结果测试

(1)模型建立:

决策变量:

由于不同切割模式不超过3种,可以用

表示按照第i模式(i=1,2,3)切割的原料,显然它们应当是非负整数,设所使用的第i种切割模式下每根原料钢管生产12米,23米,28米和38米的钢管分别为

.

决策目标:

切割原料钢管的总根数最少,目标为

Min

约束条件为满足客户的需求,应有

每一种切割模式必须可行,合理,所以每根原料钢管的成品量不能超过168米,也不能少于157米,于是有:

为了把模型求解的范围缩小,我们再假设第一种全部用来切割12米的,一根可以切割14根,第二种全部用来切割23米的,一根可以切割7根,第三种一根可以用来切割4根28和1根35米的故最多要用70+122+988=1180根,又假设每根完全用完,没有剩余量,则最少要用

根,故有

模型求解:

将构成的模型输入LINGO中,程序如下:

Title钢管下料-最小化钢管根数的LINGO模型;

SETS:

NEEDS/1..4/:

LENGTH,NUM;

!

定义基本集合NEEDS及其属性LENGTH,NUM;

CUTS/1..3/:

X;

!

定义基本集合CUTS及其属性X;

PATTERNS(NEEDS,CUTS):

R;

!

定义派生集合PATTERNS(这是一个稠密集合)及其属性R;

ENDSETS

DATA:

LENGTH=12232835;

NUM=9688481253988;

C=168;

ENDDATA

min=@SUM(CUTS(I):

X(I));

!

目标函数;

@FOR(NEEDS(I):

@SUM(CUTS(J):

X(J)*R(I,J))>NUM(I));

!

满足需求约束;

@FOR(CUTS(J):

@SUM(NEEDS(I):

LENGTH(I)*R(I,J))

!

合理切割模式约束;

@FOR(CUTS(J):

@SUM(NEEDS(I):

LENGTH(I)*R(I,J))>C

-@MIN(NEEDS(I):

LENGTH(I))+1);

!

合理切割模式约束;

@SUM(CUTS(I):

X(I))>600;@SUM(CUTS(I):

X(I))<1180;

!

人为增加约束;

@FOR(CUTS(I)|I#LT#@SIZE(CUTS):

X(I)>X(I+1));

!

人为增加约束;

@FOR(CUTS(J):

@GIN(X(J)));

@FOR(PATTERNS(I,J):

@GIN(R(I,J)));

end

输出结果为:

Localoptimalsolutionfoundatiteration:

265490

Objectivevalue:

603.0000

 

ModelTitle:

钢管下料-最小化钢管根数的LINGO模型

VariableValueReducedCost

C168.00000.000000

LENGTH

(1)12.000000.000000

LENGTH

(2)23.000000.000000

LENGTH(3)28.000000.000000

LENGTH(4)35.000000.000000

NUM

(1)968.00000.000000

NUM

(2)848.00000.000000

NUM(3)1253.0000.000000

NUM(4)988.00000.000000

X

(1)389.00001.000000

X

(2)144.00001.000000

X(3)70.000001.000000

R(1,1)2.0000000.000000

R(1,2)0.0000000.000000

R(1,3)3.0000000.000000

R(2,1)2.0000000.000000

R(2,2)0.0000000.000000

R(2,3)1.0000000.000000

R(3,1)1.0000000.000000

R(3,2)6.0000000.000000

R(3,3)0.0000000.000000

R(4,1)2.0000000.000000

R(4,2)0.0000000.000000

R(4,3)3.0000000.000000

RowSlackorSurplusDualPrice

1603.0000-1.000000

220.000000.000000

30.0000000.000000

40.0000000.000000

50.0000000.000000

60.0000000.000000

70.0000000.000000

84.0000000.000000

911.000000.000000

1011.000000.000000

117.0000000.000000

123.0000000.000000

13577.00000.000000

14245.00000.000000

1574.000000.000000

由运算得出的数据可以知道:

总使用原料钢管的总根数为603根,第一种切割模式下一根原料钢管切割成2根12米、2根23米、1根28米和2根35米;第二种切割模式下一根原料钢管切割成6根28米;第三种切割模式下一根原料钢管切割成3根12米、1根23米和3根35米。

(2)模型建立:

决策变量:

由于不同切割模式不超过4种,可以用

表示按照第i模式(i=1,2,3、4)切割的原料,显然它们应当是非负整数,设所使用的第i种切割模式下每根原料钢管生产12米,23米,28米和38米的钢管分别为

.

决策目标:

切割原料钢管的总根数最少,目标为

Min

约束条件为满足客户的需求,应有

每一种切割模式必须可行,合理,所以每根原料钢管的成品量不能超过168米,也不能少于157米,于是有:

为了把模型求解的范围缩小,我们再假设第一种全部用来切割12米的,一根可以切割14根,第二种全部用来切割23米的,一根可以切割7根,第三种一根可以用来切割4根28米和1根35米的,第四种一根可以用来切割1根28米和4根35米的,故最多要用70+122+313+170=675根,又假设每根完全用完,没有剩余量,则最少要用

根,故有

模型求解:

将构成的模型输入LINGO中,程序如下:

Title钢管下料-最小化钢管根数的LINGO模型;

SETS:

NEEDS/1..4/:

LENGTH,NUM;

!

定义基本集合NEEDS及其属性LENGTH,NUM;

CUTS/1..4/:

X;

!

定义基本集合CUTS及其属性X;

PATTERNS(NEEDS,CUTS):

R;

!

定义派生集合PATTERNS(这是一个稠密集合)及其属性R;

ENDSETS

DATA:

LENGTH=12232835;

NUM=9688481253988;

C=168;

ENDDATA

min=@SUM(CUTS(I):

X(I));

!

目标函数;

@FOR(NEEDS(I):

@SUM(CUTS(J):

X(J)*R(I,J))>NUM(I));

!

满足需求约束;

@FOR(CUTS(J):

@SUM(NEEDS(I):

LENGTH(I)*R(I,J))

!

合理切割模式约束;

@FOR(CUTS(J):

@SUM(NEEDS(I):

LENGTH(I)*R(I,J))>C

-@MIN(NEEDS(I):

LENGTH(I))+1);

!

合理切割模式约束;

@SUM(CUTS(I):

X(I))>600;@SUM(CUTS(I):

X(I))<675;

!

人为增加约束;

@FOR(CUTS(I)|I#LT#@SIZE(CUTS):

X(I)>X(I+1));

!

人为增加约束;

@FOR(CUTS(J):

@GIN(X(J)));

@FOR(PATTERNS(I,J):

@GIN(R(I,J)));

输出结果为:

Localoptimalsolutionfoundatiteration:

1066456452

Objectivevalue:

601.0000

ModelTitle:

钢管下料-最小化钢管根数的LINGO模型

VariableValueReducedCost

C168.00000.000000

LENGTH

(1)12.000000.000000

LENGTH

(2)23.000000.000000

LENGTH(3)28.000000.000000

LENGTH(4)35.000000.000000

NUM

(1)968.00000.000000

NUM

(2)848.00000.000000

NUM(3)1253.0000.000000

NUM(4)988.00000.000000

X

(1)243.00001.000000

X

(2)208.00001.000000

X(3)134.00001.000000

X(4)16.000001.000000

R(1,1)0.0000000.000000

R(1,2)4.0000000.000000

R(1,3)0.0000000.000000

R(1,4)9.0000000.000000

R(2,1)0.0000000.000000

R(2,2)4.0000000.000000

R(2,3)0.0000000.000000

R(2,4)1.0000000.000000

R(3,1)1.0000000.000000

R(3,2)1.0000000.000000

R(3,3)6.0000000.000000

R(3,4)0.0000000.000000

R(4,1)4.0000000.000000

R(4,2)0.0000000.000000

R(4,3)0.0000000.000000

R(4,4)1.0000000.000000

RowSlackorSurplusDualPrice

1601.0000-1.000000

28.0000000.000000

30.0000000.000000

42.0000000.000000

50.0000000.000000

60.0000000.000000

70.0000000.000000

80.0000000.000000

92.0000000.000000

1011.000000.000000

1111.000000.000000

1211.000000.000000

139.0000000.000000

143.0000000.000000

1519.000000.000000

1635.000000.000000

1774.000000.000000

18118.00000.000000

由计算结果可知:

总使用原料钢管的总根数为601根,第一种切割模式下一根原料钢管切割成1根28米、4根35米;第二种切割模式下一根原料钢管切割成4根12米、4根23米、1根28米;第三种切割模式下一根原料钢管切割成6根28米;第四种切割模式下一根原料钢管切割成9根12米、1根23米、1根35米。

(3)思考题:

由于不限制切割模式的种类,故需要算出总切割模式总数,用C++程序来计算。

在MicrosoftVisualC++6.0中输入以下程序:

#include

usingnamespacestd;

intc=0,sum;//sum表示满足客户要求所用的原料钢管的根数的上限;

inti,j,k,l;

//某种模式时,i表示切割12米的根数,j表示切割23米的根数,k表示切割28米的根数,l表示切割35米的根数,

inta,e;

intd1,d2,d3,d4;

intsumi=0,sumj=0,sumk=0,suml=0;

intmain()

{

e=(12*968+23*848+28*1253+35*988)/168-1;//需要钢管原料的下限

for(l=0;l<5;l++)

for(k=0;k<7;k++)

for(j=0;j<8;j++)

for(i=0;i<15;i++)

{a=12*i+23*j+28*k+35*l;//某种模式时,一根钢管用掉得长度

if(a>=157&&a<=168)

{c=c+1;//符合条件的模式数量值

sumi=sumi+i;

sumj=sumj+j;

sumk=sumk+k;

suml=suml+l;

cout<<""<<"第"<

"<<"切割"<

<

//分别输出符合条件的切割模式

}

}

d1=968/sumi;

d2=848/sumj;

d3=1253/sumk;

d4=988/suml;

if(d1>d2)

{if(d1>d3)

if(d1>d4)sum=d1*c;

elsesum=d4*c;

elseif(d3>d4)sum=d3*c;

elsesum=d4*c;

}

else

{if(d2>d3)

if(d2>d4)sum=d2*c;

elsesum=d4*c;

else

if(d3>d4)sum=d3*c;

elsesum=d4*c;

}

cout<<""<<"总共有"<

cout<<"需要钢管原料的下限为:

"<

cout<<"需要钢管原料的上限为:

"<

return0;

}

运行结果为:

由输出结果可知:

总共有70种切割模式

下限为598根,上限为910根;

(1)

(2)问可知,不超过70种模式时有:

将构成的模型输入LINGO中,程序如下:

Title钢管下料-最小化钢管根数的LINGO模型;

SETS:

NEEDS/1..4/:

LENGTH,NUM;

!

定义基本集合NEEDS及其属性LENGTH,NUM;

CUTS/1..70/:

X;

!

定义基本集合CUTS及其属性X;

PATTERNS(NEEDS,CUTS):

R;

!

定义派生集合PATTERNS(这是一个稠密集合)及其属性R;

ENDSETS

DATA:

LENGTH=12232835;

NUM=9688481253988;

C=168;

ENDDATA

min=@SUM(CUTS(I):

X(I));

!

目标函数;

@FOR(NEEDS(I):

@SUM(CUTS(J):

X(J)*R(I,J))>NUM(I));

!

满足需求约束;

@FOR(CUTS(J):

@SUM(NEEDS(I):

LENGTH(I)*R(I,J))

!

合理切割模式约束;

@FOR(CUTS(J):

@SUM(NEEDS(I):

LENGTH(I)*R(I,J))>C

-@MIN(NEEDS(I):

LENGTH(I))+1);

!

合理切割模式约束;

@SUM(CUTS(I):

X(I))>598;@SUM(CUTS(I):

X(I))<910;

!

人为增加约束;

@FOR(CUTS(I)|I#LT#@SIZE(CUTS):

X(I)>X(I+1));

!

人为增加约束;

@FOR(CUTS(J):

@GIN(X(J)));

@FOR(PATTERNS(I,J):

@GIN(R(I,J)));

输出结果为:

由于运行不了

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2