实验四求解非线性规划模型Word文档下载推荐.docx

上传人:b****6 文档编号:19331242 上传时间:2023-01-05 格式:DOCX 页数:13 大小:159.23KB
下载 相关 举报
实验四求解非线性规划模型Word文档下载推荐.docx_第1页
第1页 / 共13页
实验四求解非线性规划模型Word文档下载推荐.docx_第2页
第2页 / 共13页
实验四求解非线性规划模型Word文档下载推荐.docx_第3页
第3页 / 共13页
实验四求解非线性规划模型Word文档下载推荐.docx_第4页
第4页 / 共13页
实验四求解非线性规划模型Word文档下载推荐.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

实验四求解非线性规划模型Word文档下载推荐.docx

《实验四求解非线性规划模型Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《实验四求解非线性规划模型Word文档下载推荐.docx(13页珍藏版)》请在冰豆网上搜索。

实验四求解非线性规划模型Word文档下载推荐.docx

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

(二)要求

有问题分析、数学模型、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))<

C);

合理切割模式约束;

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));

@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米的钢管分别为

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

CUTS/1..4/:

675;

1066456452

601.0000

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,2)1.0000000.000000

R(3,3)6.0000000.000000

R(3,4)0.0000000.000000

R(4,1)4.0000000.000000

R(4,3)0.0000000.000000

R(4,4)1.0000000.000000

1601.0000-1.000000

28.0000000.000000

42.0000000.000000

80.0000000.000000

92.0000000.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<

iostream>

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<

<

"

"

第"

c<

种模式:

切割"

根12米的"

"

<

根23米的"

根28米的"

根35米的"

;

endl;

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

}

}

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;

}

else

{if(d2>

if(d2>

d4)sum=d2*c;

elsesum=d4*c;

else

if(d3>

}

cout<

总共有"

种模式"

//总模式有的总值

需要钢管原料的下限为:

e<

需要钢管原料的上限为:

sum<

return0;

}

运行结果为:

由输出结果可知:

总共有70种切割模式

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

(1)

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

CUTS/1..70/:

598;

910;

由于运行不了

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

当前位置:首页 > PPT模板 > 其它模板

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1