LINDO、LINGO软件的使用方法_第1页
LINDO、LINGO软件的使用方法_第2页
LINDO、LINGO软件的使用方法_第3页
LINDO、LINGO软件的使用方法_第4页
LINDO、LINGO软件的使用方法_第5页
已阅读5页,还剩64页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、LINDO/LINGOlLINDO/LINGOl软件简介软件简介 第第1节节 LINDO第第2节节 LINGO第第1 1节节 LINDOLINDO软件软件一、一、LINDOLINDO软件的使用格式软件的使用格式 二、二、LINDOLINDO输出结果分析输出结果分析 LINDO软件是一种专门用于求解软件是一种专门用于求解线性线性规划问题规划问题的软件包,的软件包,由于由于LINDOLINDO执行速度很执行速度很快且输入方便,易于求解和分析规划问题,快且输入方便,易于求解和分析规划问题,因此在科研和工业界得到广泛应用。因此在科研和工业界得到广泛应用。 一、一、LINDO软件的使用格式软件的使用格式

2、 LINDO 6.0LINDO 6.0学生版最多可以求解学生版最多可以求解100100个个变量和变量和5050个约束条件的线性规划问题。个约束条件的线性规划问题。 对于线性规划问题,对于线性规划问题,LINDOLINDO只要通过键只要通过键盘输入就可以方便地实现盘输入就可以方便地实现LINDOLINDO的操作和使的操作和使用。用。LINDOLINDO软件的基本操作比较简单,语法软件的基本操作比较简单,语法特别简单,易学、易用。特别简单,易学、易用。 1 1、目标函数以、目标函数以“max”max”或或“min”min”开头,开头,max max (或(或minmin)与目标函数表达式之间不能有

3、)与目标函数表达式之间不能有“=”=”。LINDO常用的基本语法常用的基本语法 2 2、变量名的长度不超过、变量名的长度不超过8 8个英文字母表示,并且个英文字母表示,并且必须以字母开头。英文字母不区分大小写。必须以字母开头。英文字母不区分大小写。3、目标函数与约束条件之间必须用、目标函数与约束条件之间必须用“ st ”分开,分开,并且并且“ st ”单独一行。单独一行。4、目标函数、各约束条件都必须以、目标函数、各约束条件都必须以“回车键回车键”结束,并且都应该是经过化简后的表达式,所结束,并且都应该是经过化简后的表达式,所有字符必须是英文状态下输入的。有字符必须是英文状态下输入的。5 5、

4、LINDOLINDO软件已规定所有的决策变量均为非负数。软件已规定所有的决策变量均为非负数。6、变量与其系数之间可以有空格,乘号必须省、变量与其系数之间可以有空格,乘号必须省略,式中不能有括号;约束条件的右端不能有决略,式中不能有括号;约束条件的右端不能有决策变量策变量, 左端不能有数字;没有下标左端不能有数字;没有下标, 式中不能有式中不能有分母,式中不能有分母,式中不能有“逗号逗号”和和“句号句号”等。等。常用的基本语法常用的基本语法 7 7、约束条件中的符号、约束条件中的符号“”用用 “ “=”=”表示,表示, “”用用“”和和“ = ”或或“”表示,表示,“”用用“=”或或 “”表示。

5、表示。 7、计算机把输入程序中的第一行默认为目标函数,、计算机把输入程序中的第一行默认为目标函数,其它各约束条件可以用其它各约束条件可以用_1,_2标明它的行号。标明它的行号。 8、虽然决策变量可以放在约束条件的右端,但为、虽然决策变量可以放在约束条件的右端,但为了提高了提高Lingo的求解效率,应尽可能采用的求解效率,应尽可能采用线性表达线性表达式式定义目标函数和约束条件。定义目标函数和约束条件。9、在、在lingo中以感叹号中以感叹号“!”开始的是开始的是说明语句说明语句,并且说明语句也需要以分号并且说明语句也需要以分号“;”结束,并且除结束,并且除了了“!”和和“;”之外,说明语句中的其

6、它字符之外,说明语句中的其它字符可以是任何字符。可以是任何字符。LINGO软件的一些规定(软件的一些规定(4)10、lingo模型是由一系列语句组成的,即每个语模型是由一系列语句组成的,即每个语句是组成句是组成lingo模型的基本部分,每个语句(目标、模型的基本部分,每个语句(目标、约束、说明语句等)都是以分号约束、说明语句等)都是以分号“;”结尾的,结尾的,编写程序时应注意保持模型的可读性。编写程序时应注意保持模型的可读性。例如:例如:虽然虽然lingo允许每行写多个语句,也允许一允许每行写多个语句,也允许一个语句写成几行,个语句写成几行, 但最好一行只写一个语句,但最好一行只写一个语句,

7、并且并且按照语句的嵌套关系对语句安排适当的缩进,增按照语句的嵌套关系对语句安排适当的缩进,增强层次感。强层次感。LINGO软件的一些规定(软件的一些规定(5)11、在、在lingo中,以中,以“”开头的都是函数调用,开头的都是函数调用,其中有:整型变量函数(其中有:整型变量函数(bin表示表示0-1变量变量,gin表示表示整数变量整数变量) 和上下界限定等函数和上下界限定等函数(free表示去掉非负限制,表示去掉非负限制,bnb限定变量的限定变量的上限、下限)。上限、下限)。 这些变量的限制要这些变量的限制要放在放在“end”之前,之前,否则这否则这些变量的限制将不起作用些变量的限制将不起作用

8、 。如果如果x1是整数变量,则应在是整数变量,则应在end之前之前写命令:写命令:gin(x1);如果如果x1是是0-1变量,则应在变量,则应在end之前之前写命令:写命令:bin( x1); 如果所有的决策变量共有如果所有的决策变量共有6个,并且所有的决个,并且所有的决策变量都是整数,不能写命令:策变量都是整数,不能写命令: bin(6);等其它的命令等其它的命令 如果如果x1,x2都是整数变量,但并不是所有的变都是整数变量,但并不是所有的变量都是整数变量,则要写成量都是整数变量,则要写成gin (x1); gin (x2);不能不能写成写成gin (x1,x2) 或其它的命令或其它的命令2

9、13032maxxxZ例例1的数的数学模型学模型364321 xx404521 xx768921 xx0,21xx用用lingo编写编写的程序为:的程序为:; 2*301*32maxxx ;362*41*3xx;402*41*5xx;762*81*9xxmodel:end:练习:练习:0,6 242 . . 2max 132121321321xxxxxxxxtsxxxZ、0,15362 . . 3min 221212121xxxxxxtsxxZ、0,93 62 . . 52min3213232121xxxxxxxtsxxZ、分别用分别用lindo、lingo编写下列数学模型编写下列数学模型的程

10、序的程序(1)可以用于求)可以用于求线性规划线性规划及及非线性规划非线性规划问问题,包括非线性整数规划问题。题,包括非线性整数规划问题。二、二、lingo的优点的优点(2)lingo包含内置的建模语言(常称矩阵包含内置的建模语言(常称矩阵生成器),允许以简练、直观的方式描述生成器),允许以简练、直观的方式描述较大规模的优化模型(成千万个约束条件较大规模的优化模型(成千万个约束条件和变量),和变量), 模型中所需的数据可以用一定格模型中所需的数据可以用一定格式保存在独立的文件中,需要时再读取数据。式保存在独立的文件中,需要时再读取数据。 在在lindo中的目标函数最优值、最优解与灵敏性中的目标函

11、数最优值、最优解与灵敏性分析是一起显示出来,分析是一起显示出来, lingo中的灵敏性分析数据中的灵敏性分析数据 而在而在lingo中,最优解、最中,最优解、最优值与灵敏性分析是分别用不同的命令显示出来。优值与灵敏性分析是分别用不同的命令显示出来。 lingo中的灵敏性分析的数据输出结果与中的灵敏性分析的数据输出结果与lindo中的中的灵敏性分析中输出结果是相同的。灵敏性分析中输出结果是相同的。 因为因为lingo的求的求解结果中是没有灵敏性分析的,所以如果需要灵解结果中是没有灵敏性分析的,所以如果需要灵敏性分析的数据,可以通过修改选项来实现。敏性分析的数据,可以通过修改选项来实现。 先修改系

12、统选项,启动灵敏性分析:先修改系统选项,启动灵敏性分析: 通过修改选项得到灵敏性分析数据的步骤通过修改选项得到灵敏性分析数据的步骤在菜单栏在菜单栏LINGO/options/General solve选项卡中,选项卡中, 将其中左边列的第二个选项将其中左边列的第二个选项“Dual compulations”(对偶计算)选项的默认设置(对偶计算)选项的默认设置 “prices” 改为改为“prices and Ranges”(价格及范围)后,(价格及范围)后, 先对规划先对规划问题求解一次。问题求解一次。 点菜单点菜单LINGO/Range,运行后计算机显示出来,运行后计算机显示出来,得到只有灵

13、敏性分析的数据。得到只有灵敏性分析的数据。 一般情况下,一般情况下,lingo得到的都是局部最优得到的都是局部最优解,要得到全局最优解,解,要得到全局最优解, 激活全局最优求解程序的步骤激活全局最优求解程序的步骤 则要激活全局最优求则要激活全局最优求解程序,解程序,方法如下:方法如下: 点点“LINGO/Options”菜单命令打开选项菜单命令打开选项对话框,对话框, 在在 “Global Solver” 选项卡上选择选项卡上选择“Use Global Solve”点确定即可。点确定即可。 全局最优求解程序花费的时间可能是很全局最优求解程序花费的时间可能是很长的,所以为了减少计算工作量,我们应

14、该长的,所以为了减少计算工作量,我们应该尽量对变量等做进一步的限制。尽量对变量等做进一步的限制。 1、运算符、运算符三、三、 运算符及优先级运算符及优先级(1)算术运算符:)算术运算符: +加加 -减减 *乘乘 /除除 乘方乘方 (开方)(开方)(2)逻辑运算符:)逻辑运算符: 逻辑运算结果只有逻辑运算结果只有真与假真与假,在,在lingo中用中用1和和0表示,逻辑运算符(表达式)通常作为表示,逻辑运算符(表达式)通常作为过滤条件过滤条件使用。使用。 #and# 与,与,#or# 或,或,#not# 非非 #eq#等于,等于, #ne#不等于,不等于, #gt#大于,大于, #ge#大于等于,

15、大于等于, #lt#小于,小于, #le#小于等于小于等于 即:即:g 大于大于, e 等于等于, l 小于小于, t 不等于不等于(3)关系运算符)关系运算符2、运算符的优先级、运算符的优先级(或(或(或或=) #not# (负号负号) * / + (减法减法) #eq#,#ne#,#gt#,#ge#,#lt#,#le#and# 与,与,#or# = 高高 低低 四、常用的函数四、常用的函数 在在Lingo中,所有的系统函数都必须是以中,所有的系统函数都必须是以“”开头。开头。1、数学函数、数学函数abs(x) 求绝对值函数,求绝对值函数, 返回返回x的绝对值的绝对值 cos(x) 求余弦函

16、数,返回求余弦函数,返回x的余弦值,的余弦值, x的单位是弧度的单位是弧度exp(x) 计算计算e x 的值的值log(x) 计算计算lnx 的值的值pow(x,y) 计算计算x y 的值的值sqr(x) 计算计算x的平方的平方sqr(x,y) 计算计算x的的y次方次方2、集合循环函数、集合循环函数 集合循环函数是指对集合中的所有元素集合循环函数是指对集合中的所有元素(下标下标)进行循环操作的函数,如进行循环操作的函数,如sum,for等。等。 具体的使用格式:具体的使用格式:循环函数(循环变量所在的集循环函数(循环变量所在的集 (循环变量循环变量)过过滤条件:循环滤条件:循环(如求和如求和)

17、表达式表达式) 其中,如果在操作过程中没有过滤条件,可其中,如果在操作过程中没有过滤条件,可以省略过滤条件;如果表达式是对集合的所有循以省略过滤条件;如果表达式是对集合的所有循环变量进行操作,循环变量也可以省略。环变量进行操作,循环变量也可以省略。集合循环集合循环for 是对集合的每个元素独立地操作一次表是对集合的每个元素独立地操作一次表达式达式 , 通常是优化问题的通常是优化问题的约束条件约束条件; sum是求集合中表达式的和;是求集合中表达式的和; prod是求集合中表达式的乘积;是求集合中表达式的乘积;max是求集合中表达式的最大值;是求集合中表达式的最大值; min是求集合中表达式的最

18、小值;是求集合中表达式的最小值; 但如果是但如果是求目标函数的最大、最小值求目标函数的最大、最小值,则是用,则是用“max=目标函数表达式目标函数表达式”, “min=目标函数表达式目标函数表达式”,而不用写而不用写。 (1) for 该函数用来产生对集成员的约束。该函数用来产生对集成员的约束。 for函数函数允许只输入一个约束条件,然后由允许只输入一个约束条件,然后由lingo自动产生自动产生每个集成员的约束条件。每个集成员的约束条件。例例1 产生序列产生序列 1,4,9,16,25 model:sets: number/1.5/:x; endsets for(number(i): x(i)

19、=i2); end(产生一种类型的变量(产生一种类型的变量x,该变量,该变量x有有5个下标个下标对所有的下标对所有的下标i,分别求,分别求 i 2)(2) sum 该函数返回遍历指定的集成员的一个表达式的和。该函数返回遍历指定的集成员的一个表达式的和。例例2 求向量求向量 5,1,3,4,6,10 前前5个数的和个数的和model:data: N=6;enddatasets: number/1.N/:x; endsetsdata: x = 5 1 3 4 6 10; enddata s=sum(number(i) | i #le# 5: x(i); end过滤条件过滤条件但是如果作下列修改:但

20、是如果作下列修改:model:data: N=6;enddatasets: number/1.N/:x; endsetsdata: x = 5 1 3 4 6 10; enddata s=sum(number(i) | i #le# 5: x(i); endmin=sum(number(i) | i #le# 5: x(i); 两个程序的结果是否一样?两个程序的结果是否一样?(3) min 或或max 返回指定集成员的一个表达式的最大、最小值。返回指定集成员的一个表达式的最大、最小值。例例3 求向量求向量 5,1,3,4,6,10 前前5个数的最小值,后个数的最小值,后3个数的最大值。个数的最

21、大值。model:sets: number/1.6/:x;endsetsdata: x = 5 1 3 4 6 10;enddata minv=min(number(i) | i #le# 5: x); maxv=max(number(i) | i #ge# 6-2: x);end!minv是变量,不是目标函数,是求是变量,不是目标函数,是求x中的最小值中的最小值;关于循环的一些细节问题关于循环的一些细节问题例如:例如: myfile/1.5/:a; 变量变量a是单下标变量是单下标变量,下标有下标有5个取值个取值myfoes/1.6/:b; 变量变量b是单下标变量是单下标变量,下标有下标有6个

22、取值个取值myido(myfoes,myfile):x,c; 变量变量x,c是双下标变量是双下标变量(1)如果要表示:如果要表示: 5 , 4 , 3 , 2 , 1,)(61jdxcjijiij 则则i是循环变量,是循环变量,j也是循环变量,即应是也是循环变量,即应是先对先对i进行循环操作,然后对进行循环操作,然后对j进行循环操作,进行循环操作,得到得到5个约束式子。个约束式子。 j所取元素的集合有所取元素的集合有5个元素:个元素:myfile/1.5/:a; myfoes/1.6/:b; myido(myfoes,myfile):x,c; myfile故计算故计算的命令为:的命令为:for

23、(myfile (j) :sum(myfoes(i) : c(i,j)*x(i) =d(j);5 , 4 , 3 , 2 , 1,)(61jdxcjijiijmyfoesi所取元素的集合有所取元素的集合有6个元素:个元素:(1)如果要表示:如果要表示: , )(min5161jijiijxcZ 循环表达式为:循环表达式为:cij xij,则则 i,j 都是循环变都是循环变量,对量,对 i,j 分别求和。分别求和。j 所取元素的集合是:所取元素的集合是:myfile/1.5/:a; myfoes/1.6/:b; myido(myfoes,myfile):x,c; myfoes故计算故计算的命令为

24、:的命令为:)(min5161ijjiijxczmyfilei所取元素的集合是:所取元素的集合是:min=sum (myido(i,j): c(i,j)*x(i,j);model:sets: myfile/1.5/:a; myfoes/1.6/:b; myido(myfile,myfoes):x,c; endsetsdata: c=1,2,-2,5,6,-4 2,3,-4,6,9,3 2,5,-1,5,-2,0 -5,6,7,9,10,-10 33,4,6,6,7,9; a=100,200,100,100,400; b=100,200,100,150,150,200;enddatamin=su

25、m(myido(i,j):c(i,j)*x(i,j); for(myfile(i):sum(myfoes(j):x(i,j)=a(i); for(myfoes(j):sum(myfile(i):x(i,j)=b(j);end3、变量定界函数、变量定界函数变量定界函数是对变量的取值范围附加限制。变量定界函数是对变量的取值范围附加限制。bnd(A,x,B): 是指限定变量是指限定变量x的取值为的取值为 AxB, gin(x): 限定变量限定变量x 的取值为整数;的取值为整数; bin(x): 限定变量限定变量x为为0-1变量,在变量,在lindo是用是用命令命令int,而在,而在lingo中没有中

26、没有int(x) ; free(x): 取消变量取消变量x的非负限制,即的非负限制,即x可以可以取负数、取负数、0或正数,因为或正数,因为lingo原来原来默认所有的变量非负取值。默认所有的变量非负取值。 五、五、lingo计算输出结果计算输出结果 lingo计算的计算的输出结果与输出结果与lindo计算的输出计算的输出结果是完全相同的,只是输出的命令不相同。结果是完全相同的,只是输出的命令不相同。 在在lindo中,最优值、最优解,影子价格中,最优值、最优解,影子价格与灵敏性分析的数据可以同时输出。与灵敏性分析的数据可以同时输出。 而在而在lingo 中,灵敏性分析的数据只有通中,灵敏性分析

27、的数据只有通过修改选项才能输出。过修改选项才能输出。六、关于六、关于lingo程序中的段程序中的段 一般来说,一般来说,lingo中建立的优化模型可以中建立的优化模型可以由五部分来组成,或称为五段。下面介绍常由五部分来组成,或称为五段。下面介绍常用的三段。用的三段。 1、集合段(、集合段(sets):): 这部分要以这部分要以“sets:”开始,以开始,以“endsets”结束。结束。 作用在于定义必要的集合及其元素(含作用在于定义必要的集合及其元素(含义类似于数组的下标)和属性(含义类似于义类似于数组的下标)和属性(含义类似于数组或变量)。数组或变量)。 1、集合段(、集合段(sets):)

28、:具体格式是:具体格式是:集合名集合名/集的成员集的成员/ : 属性属性 ;ABD/1,2,3,4,5,6/:x,y;显式罗列所有的成员显式罗列所有的成员ABD/1.6/:x,y; 隐式罗列所有的成员,中间隐式罗列所有的成员,中间的成员系统自动产生,只要列出集合的的成员系统自动产生,只要列出集合的第一个和最后一个成员就行,但所有的第一个和最后一个成员就行,但所有的成员必须是有规律的。成员必须是有规律的。不同的成员及不同的属性之间,用不同的成员及不同的属性之间,用“,”分隔。分隔。集合的属性相当于以集合的元素为下标的数组,集合的属性相当于以集合的元素为下标的数组,即属性相当于变量,成员相当于下标

29、。即属性相当于变量,成员相当于下标。具体来说,具体来说,ABD/1,2,3,4,5,6/:x,y;其集合名为其集合名为ABD,属性为,属性为x,y, 成员为成员为1,2,3,4,5,6即集合相当于以即集合相当于以x、y为变量,下标分别为为变量,下标分别为1,2,3,4,5,6的数组的数组 属性(变量)的具体值如果是常数,则应属性(变量)的具体值如果是常数,则应在数据段中输入具体数据;在数据段中输入具体数据; 如果是未知数(即如果是未知数(即决策变量),则在数据段中不能输入数据,但决策变量),则在数据段中不能输入数据,但可以在初始段输入初值。可以在初始段输入初值。 集合的成员和属性可集合的成员和

30、属性可以在定义时省略,随后在数据段中输入。以在定义时省略,随后在数据段中输入。 2、数据段(、数据段(data):): 以以“data:”开始,以开始,以“enddata”结束,结束,作用在于对集合的属性(数组或变量)输作用在于对集合的属性(数组或变量)输入必要的常数数据。入必要的常数数据。具体的使用格式为:具体的使用格式为: 属性(或变量)属性(或变量)= 常数列表;常数列表; 在常数列表中,数据之间用在常数列表中,数据之间用“,”分分隔,也可以隔,也可以空格空格分开(分开(“ctrl+回车回车”的作的作用也等价于一个空格),即变量(或属性)用也等价于一个空格),即变量(或属性)是取等号右边

31、的常数是取等号右边的常数model:sets: ABD/1,2,3,4,5,6/:x,y; endsetsdata: x=1,3,0,5,6,-7; y=-3,4,29,58,3,10;enddataend在数据段中输入数据在数据段中输入数据时,可以分别输入每时,可以分别输入每个变量对应的数据,个变量对应的数据,也可以同时输入多个也可以同时输入多个同维的变量的数据值。同维的变量的数据值。分别输入:分别输入:; 8 , 5 , 9 , 3, 2 x; 0 , 1 , 8 , 6 , 4y或同时输入:或同时输入:; 0 , 8 , 1 , 5 , 8 , 9 , 6 , 3, 4 , 2,yx两种

32、输入方法得到的结果相同两种输入方法得到的结果相同 3、目标和约束段:、目标和约束段: 这部分实际上是定义目标函数、约束条件这部分实际上是定义目标函数、约束条件等,但这部分并没有段的开始及结束的标记。等,但这部分并没有段的开始及结束的标记。 lingo的目标函数和约束条件,一般要用的目标函数和约束条件,一般要用到循环函数:如求和函数到循环函数:如求和函数sum和循环函数和循环函数for等。等。 目标函数是求最大或最小值目标函数是求最大或最小值. max=目标函数目标函数; 或或 min=目标函数目标函数; 约束条件约束条件的标志是:的标志是:for(约束条件约束条件);目标函数目标函数的标志是:

33、的标志是: 例如:例如: sets: ABD/1,2,3,4,5,6/:X; AB/1.3/:Y,D; endsets(1)如程序中有约束条件:)如程序中有约束条件: 3 , 2 , 1,61jdyxjjii在在lingo程序中应该表示为程序中应该表示为: for (AB(j):sum(ABD(i):x(i)*y(j)=d(j);(1)如程序中有约束条件:)如程序中有约束条件: 3 , 2 , 1,61idyxijji在在lingo程序中应该表示为程序中应该表示为: for (AB(i):sum(ABD(j):x(i)*y(j)=d(j);例例5 写出下面规划问题的写出下面规划问题的lingo

34、中用集合编中用集合编写的求解程序。如果线性规划问题有最优写的求解程序。如果线性规划问题有最优解,请写出最优解。解,请写出最优解。 0,50 2215 38022 4703 2 . . ) 1 (2108max 3212131321321321xxxxxxxxxxxxxtsxxxz0,1 23 2411 2 . . ) 2(3max 543213153214321321xxxxxxxxxxxxxxxt sxxxz0,50 2215 38022 4703 2 . . ) 1 (2108max 3212131321321321xxxxxxxxxxxxxtsxxxz解:解:要写出用要写出用lingo中

35、集中集合的方法求解的程合的方法求解的程序,序, 则应该先把规则应该先把规划模型化为用求和划模型化为用求和形式表示的模型,形式表示的模型, 其中:其中: )2108(321ccccCj ,321xxxxXj ,50158070ibB .02210322431234ijaA0,50 2215 38022 4703 2 . . ) 1 (2108max 3212131321321321xxxxxxxxxxxxxtsxxxz则该规划问题则该规划问题的用求和形式的用求和形式表示的模型为:表示的模型为:3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max 3131jxibxatsxczj

36、jijijjjj用求和形式表示的模型用求和形式表示的模型3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max 3131jxibxatsxczjjijijjjj 其中:其中:(1)变量是单下标,下标有)变量是单下标,下标有3个取值;变量个取值;变量也是单下标,下标有也是单下标,下标有3个取值;变量是单下标,个取值;变量是单下标,下标有下标有4个取值。对于单下标的变量,只要直个取值。对于单下标的变量,只要直接定义集合即可,即要定义两个集合,一个接定义集合即可,即要定义两个集合,一个有有3个取值的,另一个有个取值的,另一个有4个取值的。由于变个取值的。由于变量、已经有具体的数值,故

37、必须在数据段中量、已经有具体的数值,故必须在数据段中给出具体的取值;变量没有具体的数值,它给出具体的取值;变量没有具体的数值,它是决策变量,不能在数据段中给出具体的取是决策变量,不能在数据段中给出具体的取值。值。(2)变量是双下标,下标共有个取值,第)变量是双下标,下标共有个取值,第1个下标有个下标有4个取值,第个取值,第2个下标有个下标有3个取值。对个取值。对于双下标的变量,必须定义派生集合,第于双下标的变量,必须定义派生集合,第1个个父集是有父集是有4个取值,第个取值,第2个父集是有个父集是有3个取值。个取值。变量已经有具体的数值,故必须在数据段中变量已经有具体的数值,故必须在数据段中给出

38、具体的取值。给出具体的取值。 讨论用集合讨论用集合表示的模型:表示的模型:3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max 3131jxibxatsxczjjijijjjj其中:其中:(1)变量)变量c,x是单是单下标,下标有下标,下标有3个取值;变量个取值;变量b是单下标,下标有是单下标,下标有4个取值。个取值。对于单下标的变量,只要直接定义集合即可,对于单下标的变量,只要直接定义集合即可,即要定义两个集合,一个有即要定义两个集合,一个有3个取值的,另一个个取值的,另一个有有4个取值的。个取值的。 由于变量由于变量c,b,a已经有具体的数值,已经有具体的数值,故必须在数

39、据段中给出具体的取值;变量故必须在数据段中给出具体的取值;变量x没有没有具体的数值,它是决策变量,故不能在数据段具体的数值,它是决策变量,故不能在数据段中给出具体的取值。中给出具体的取值。讨论用集合讨论用集合表示的模型:表示的模型:3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max 3131jxibxatsxczjjijijjjj(2)变量)变量a是双是双下标变量,下标共有下标变量,下标共有43个取值,第个取值,第1个下标个下标有有4个取值,第个取值,第2个下标有个下标有3个取值。个取值。 对于双下标的变量,必须定义派生集合。对于双下标的变量,必须定义派生集合。 它第它第1

40、个父集是有个父集是有4个取值,第个取值,第2个父集是有个父集是有3个取值。个取值。 变量变量a已经有具体的数值,它不是决已经有具体的数值,它不是决策变量,故必须在数据段中给出具体的取值。策变量,故必须在数据段中给出具体的取值。 上述数学模型用集合编写的求解程序为:上述数学模型用集合编写的求解程序为:3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max 3131jxibxatsxczjjijijjjj集合段集合段sets: endsets ab/1,2,3/:x,c; abc/1,2,3,4/:b; abcd(abc,ab):a;数据段数据段data: enddata c=8,

41、10,2; b=70,80,15,50; a=2,1,3 4,2,2 3,0,1 2,2,0;3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max 3131jxibxatsxczjjijijjjj目标函数目标函数 max=sum(ab(j):c(j)*x(j);约束条件约束条件for(abc(i):sum(ab(j):a(i,j)*x(j)=b(i);用集合表示的程序为:用集合表示的程序为:model:sets: ab/1,2,3/:x,c; abc/1,2,3,4/:b; abcd(abc,ab):a;endsetsdata: c=8,10,2; b=70,80,15,50

42、; a=2,1,3 4,2,2 3,0,1 2,2,0;enddatamax=sum(ab(j):c(j)*x(j);for(abc(i):sum(ab(j):a(i,j)*x(j)=b(i);end3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max 3131jxibxatsxczjjijijjjj利用软件计算可知,利用软件计算可知,model:sets: ab/1,2,3/:x,c; abc/1,2,3,4/:b; abcd(abc,ab):a;endsetsdata: c=8,10,2; b=70,80,15,50; a=2,1,3 4,2,2 3,0,1 2,2,0;enddatamax=sum

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论