第一讲例题

2026/1/26 22:53:53

1.07776*1.018*x4=S; 1.144*x5=S; 1.144*x6=M; M=5000;

X1+x2+x3+x4+x5+x6=M;

Global optimal solution found.

Objective value: 135.2227 Total solver iterations: 0

Variable Value Reduced Cost S 135.2227 0.000000 X1 132.8317 0.000000 X2 129.6230 0.000000 X3 125.4664 0.000000 X4 123.2479 0.000000 X5 118.2016 0.000000 X6 4370.629 0.000000 M 5000.000 0.000000 Row Slack or Surplus Dual Price 1 135.2227 1.000000 2 0.000000 -0.2110548 3 0.000000 -0.2059565 4 0.000000 -0.1993522 5 0.000000 -0.1958273 6 0.000000 -0.1878093 7 0.000000 -0.1878093 8 0.000000 0.4026631 9 0.000000 0.2148538

例6某公司6个供货栈,库存货物总数分别为60,55,51,43,41,52,现由8个客户各要一批货,数量分别为35,37,22,32,42,32,43,38,各供货栈到8个客户处的单位货物运输价见表2

表2供货栈到客户的单位货物运价(元/每单位)

V1 客户 货栈 W1 W2 W3 W4 W5 W6 6 4 5 7 2 5 2 9 2 6 3 5 6 5 1 7 9 2 7 3 9 3 5 2 4 8 7 9 7 8 2 5 4 2 2 1 5 8 3 7 6 4 9 2 3 1 5 3 V2 V3 V4 V5 V6 V7 V8 试确定各货栈到各客户的货物调运数量,使总的运费最小.

解 引入决策变量xij,代表从第i个货栈到第j个客户的货物运量.用符号cij表示从第i个货栈到第j个客户的单位货物运价,ai表示第i个货栈的最大供货量,di表示第j个客户

的订货量.

目标函数是总运输费用最小.

约束条件有三条:①各货栈运出的货物总量不超过其库存数;②各客户收到的货物总量等于其订货数量;③决策变量xij非负.

则本问题的数学模型为:

minz?cx??ijij

i?1j?1

68,

8??xij?ai,i?1,2,?,6,?j?1??6s.t.??xij?dj,j?1,2,?,8,?i?1 (1.2.1) ?xij?0,i?1,2,?,6,j?1,2,?,8.??1.集合定义部分

LINGO将集合(SET)的概念引入建模语言,集合是一组相关对象构成的组合,代表模型中的实际事物,并于数学变量及常量联系起来,是实际问题到数学的抽象.例1.2.1中的6个仓库可以看成是一个集合,8个客户可以看成另外一个集合.

每个集合在使用之前需要预先给出定义,定义集合时要明确三方面内容:集合的名称、集合内的成员(组成集合的个体,也称元素)、集合的属性(可以看成是与该集合有关的变量或常量,相当于数组).本例先定义仓库集合:

WH/W1..W6/AI;

其中WH是集合的名称,W1..W6是集合内的成员,“..”是特定的省略号(如果不用省略号,也可以把成员一一列出来,成员之间用逗号或空格分开),表明该集合有个成员,分别对应6个货栈,AI是集合的属性,它可以看成是一个一维数组,有6个分量,分别表示各货栈现有货物的总数.

集合、成员、属性的命名规则与变量相同,可按自己的意愿,用有一定意义的字母数字串来表示,式中“/”和“/:”是规定的语法规则.

本例还定义客户集合: VD/V1..V8/DJ;

该集合有8个成员,DJ是集合的属性(有8个分量)表示各客户的需求量.

以上两个集合称为初始集合(或称基本集合,原始集合),初始集合的属性都相当一维数组.

为了表示数学模型中从货栈到客户的运输关系以及与此相关的运输单价cij和运量xij,再定义一个表示运输关系(路线)的集合:

LINKS(WH,VD):C,X;

该集合以初始集合WH和VD为基础,称为衍生集合(或称派生集合).C和X是该衍生集合的两个属性.衍生集合的定义语句有如下要素组成:

(1)集合的名称; (2)对应的初始集合;

(3)集合的成员(可以省略不写明); (4)集合的属性(可以没有).

定义衍生集合时可以用罗列的方式将衍生集合的成员一一列出来,如果省略不写,则默认衍生集合的成员取它所对应初始集合的所有可能的组合,上述衍生集合LINKS的定义中没有指明成员,而它对应的初始集合WH有6个成员,VD有8个成员,因此LINKS成员取WH和VD的所有可能组合,即集合LINKS有48个成员,48个成员可以排列成一个矩阵,其行数与集合WH的成员个数相等,列数与VD的成员个数相等.相应地,集合LINKS的属性C和X都相当于二维数组,各有48个分量,C表示货栈wi到客户vj的单位货物运价,X表示货栈

wiwi到客户vj的运量.

本模型完整的集合定义为:

SETS:

WH/W1..W6/:AI; VD/V1..V8/:DJ;

LINKS(WH,VD):C:X; ENDSETS

注 集合定义部分以语句SETS:开始,一语句ENDSETS结束,这两个语句必须单独成一行.ENDSETS后面不加标点符号.

2.数据初始化(数据段)

以上集合中属性X(有48个分量)是决策变量,是待求未知数,属性AI、DJ和C(分别有6,8,48个分量)都是已知数,LINGO建模语言通过数据初始化部分来实现对已知属性赋以初始值,格式为:

DATA:

AI=60,55,43,41,52;

DJ=35,37,22,32,41,32,43,38; C=6,2,6,7,4,2,5,9 4,9,5,3,8,5,8,2 5,2,1,9,7,4,3,3 7,6,7,3,9,2,7,1 2,3,9,5,7,2,6,5 5,5,2,2,8,1,4,3; ENDDATA

注 数据初始化部分以语句DATA:开始,以语句ENDDATA结束,这两个语句必须单独成一行.数据之间的逗号和空格可以互相替换.

3.目标函数和约束条件

目标函数表达式minz???cijxij用LINGO语句表示为:

i?1j?168MIN=@SUM(LINKS(I,J):C(I,J)*X(I,J));

式中@SUM是LINGO提供的内部函数,其作用是对某个集合的所有成员,求指定表

达式的和,该函数需要两个参数,第一个参数是集合名称,指定对该集合的所有成员求和,如果此集合是一个初始集合,它有m个成员,则求和运算对这m个成员进行,相当于求?,

i?1m第二个参数是一个表达式,表示求和运算对该表达式进行.此处@SUM的第一个参数是LINKS(I,J),表达式求和运算对衍生集合LINKS进行,该集合的维数是2,共有48个成员,运算规则是:先对48个成员分别求表达式C(I,J)*X(I,J)的值,然后求和,相当于求??cijxij,

i?1j?168表达式中的C和X是集合LINKS的两个属性,它们各有48个分量.

注 如果表达式中参与运算的属性属于同一个集合,则 @SUM语句中索引(相当于矩阵或数组的下标)可以省略(隐藏),假如表达式中参与运算的属性属于不同的集合,则不能省略属性的索引.本例的目标函数可以表示成:

MIN= (LINKS:C*X);

约束条件?xij?aij?18用LINGO语言表示该(i?1,2,?,6)实际上表示了6个表达式,

约束条件,语句为:

@FOR(WH(I):@SUM(VD(J):X(I,J))<=AI(I));

语句中的@FOR是LINGO提供的内部函数,它的作用是对某个集合的所有成员分别生成一个约束表达式,它有两个参数,第一个参数为WH,它表示货栈,共有6个成员,故应生成6个约束表达式, @FOR的第二个参数为是约束表达式的具体内容,此处再调用@SUM函数,表示约束表达式的左边求和,是对集合VD的8个成员,并且对表达式X(I,J)中第二维J求和,即?xij,约束表达式的右边是集合WH的属性AI,它有个约束表达式一一对应.

j?18本语句中的属性分别属于不同的集合,所以不能省略索引I,J.

注 @SUM和@FOR函数可以嵌套使用.

同样地,约束条件?xij?dj,j?1,2,?,8用LINGO语句表示为:

j?16@FOR(VD(J):@SUM(WH(I):X(I,J))=DJ(J)); 4. 完整的模型

综上所述,本问题完整的LINGO模型如下: MODEL: SETS:

WH/W1..W6/:AI; VD/V1..V8/:DJ; LINKS(WH,VD):C,X; ENDSETS DATA:

AI=60,55,43,41,52;

DJ=35,37,22,32,41,32,43,38; C=6,2,6,7,4,2,5,9 4,9,5,3,8,5,8,2 5,2,1,9,7,4,3,3 7,6,7,3,9,2,7,1 2,3,9,5,7,2,6,5 5,5,2,2,8,1,4,3; ENDDATA

MIN=@SUM(LINKS(I,J):C(I,J)*X(I,J)); !目标函数;

@FOR(WH(I):@SUM(VD(J):X(I,J))<=AI(I)); !约束条件; @FOR(VD(J):@SUM(WH(I):X(I,J))=DJ(J)); END

注 LINGO模型以语句MODEL:开始,以语句END结束,这两个语句单独成一行.完整的模型由集合定义、数据段、目标函数和约束条件等部分所组成,这几个部分的先后次序无关紧要,!开头的语句是注释语句(可有可无).

选菜单Lingo|Solve(或按Ctrl+S),或鼠标点击“求解”按钮,在“Solution Report”信息窗口中,看到具体求解结果为:

Global optimal solution found at step: 17(计算步骤数) Objective value: 664.0000(目标函数值) Variable Value Reduced Cost (以下是调运方案) X(W1,V1) 0.0000000 5.000000 X(W1,V2) 19.00000 0.000000 ……

(以上省略了X(W1,V3)至X(W6,V6)的具体数值) X(W6,V7) 3.000000 0.000000 X(W6,V8) 0.0000000 3.000000 计算结果表明:目标函数值为664.0000,最优运输方案见表1.2.2.

表1.2.2 最优运输方案 W1 W2 W3 W4 W5 W6 合计

V1 0 1 0 0 34 0 35 V2 19 0 11 0 7 0 37 V3 0 0 0 0 0 22 22 V4 0 32 0 0 0 0 32 V5 41 0 0 0 0 0 41 V6 0 0 0 5 0 27 32 V7 0 0 40 0 0 3 43 V8 0 0 0 38 0 0 38 合计 60 33 51 43 41 52


第一讲例题.doc 将本文的Word文档下载到电脑
搜索更多关于: 第一讲例题 的文档
相关推荐
相关阅读
× 游客快捷下载通道(下载后可以自由复制和排版)

下载本文档需要支付 10

支付方式:

开通VIP包月会员 特价:29元/月

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信:xuecool-com QQ:370150219