lindo常用的基本语法_第1页
lindo常用的基本语法_第2页
lindo常用的基本语法_第3页
lindo常用的基本语法_第4页
lindo常用的基本语法_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

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

2、后的表达式,所所有字符必须是英文状态下输入的。有字符必须是英文状态下输入的。5、lindo软件已规定所有的决策变量均为非负数。软件已规定所有的决策变量均为非负数。6、变量与其系数之间可以有空格,乘号必须省变量与其系数之间可以有空格,乘号必须省略,式中不能有括号略,式中不能有括号;约束条件的右端不能有决约束条件的右端不能有决策变量策变量, 左端不能有常数项左端不能有常数项;没有下标;没有下标, 式中不能式中不能有分母,有分母,式中不能有式中不能有“逗号逗号”和和“句号句号”等等(说明说明语句除外语句除外) 。常用的基本语法常用的基本语法 7 7、约束条件中的符号、约束条件中的符号“”用用 “ “

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

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

5、每行写多个语句,也允许一个语句写成几行,个语句写成几行, 但最好一行只写一个语句,但最好一行只写一个语句, 并且并且按照语句的嵌套关系对语句安排适当的缩进,增按照语句的嵌套关系对语句安排适当的缩进,增强层次感。强层次感。LINGO软件的软件的使用规则使用规则(5)(11) 在在lingo中,以中,以“”开头的都是函数调用,开头的都是函数调用,其中有:整型变量函数(其中有:整型变量函数(bin表示表示0-1变量变量,gin表示表示整数变量整数变量) 和上下界限定等函数和上下界限定等函数(free表示去掉非负限制,表示去掉非负限制,bnd限定变量的限定变量的上限、下限)。上限、下限)。 这些变量的

6、限制要这些变量的限制要放在放在“end”之前,之前,否则这否则这些变量的限制将不起作用些变量的限制将不起作用 。如果如果x1是整数变量,则应在是整数变量,则应在end之前之前写命令:写命令:gin(x1);如果如果x1是是0-1变量,则应在变量,则应在end之前之前写命令:写命令:bin( x1); 如果所有的决策变量共有如果所有的决策变量共有6个,并且所有的决个,并且所有的决策变量都是整数,策变量都是整数,不能写命令不能写命令: bin(6);等其它的命令等其它的命令 如果如果x1,x2都是整数变量,并且不是所有的变都是整数变量,并且不是所有的变量都是整数变量,则要写成量都是整数变量,则要写

7、成gin (x1); gin (x2);不能不能写成写成gin (x1,x2) 或其它的命令或其它的命令练习:练习:0,6 242 . . 2max 132121321321xxxxxxxxtsxxxZ、0,15362 . . 3min 221212121xxxxxxtsxxZ、0,93 62 . . 52min3213232121xxxxxxxtsxxZ、分别用分别用lindo、lingo编写下列数学模型编写下列数学模型的程序的程序(1)可以用于求)可以用于求线性规划线性规划及及非线性规划非线性规划问问题,包括非线性整数规划问题。题,包括非线性整数规划问题。2、lingo的优点的优点(2)l

8、ingo包含内置的建模语言(常称矩阵包含内置的建模语言(常称矩阵生成器),允许以简练、直观的方式描述生成器),允许以简练、直观的方式描述较大规模的优化模型(成千万个约束条件较大规模的优化模型(成千万个约束条件和变量),和变量), 模型中所需的数据可以用一定格模型中所需的数据可以用一定格式保存在独立的文件中,需要时再读取数据。式保存在独立的文件中,需要时再读取数据。 在在lindo中的目标函数最优值、最优解与灵敏度中的目标函数最优值、最优解与灵敏度分析是一起显示出来,分析是一起显示出来, 3、 lingo中的灵敏度分析中的灵敏度分析 而在而在lingo中,最优解、最中,最优解、最优值与灵敏度分析

9、是分别用不同的命令显示出来。优值与灵敏度分析是分别用不同的命令显示出来。 lingo中的灵敏度分析的数据输出结果与中的灵敏度分析的数据输出结果与lindo中的灵敏性分析中输出结果是相同的。中的灵敏性分析中输出结果是相同的。 因为因为lingo的求解结果中是没有灵敏度分析的,的求解结果中是没有灵敏度分析的,所以如果需要灵敏度分析的数据,可以通过修改所以如果需要灵敏度分析的数据,可以通过修改选项来实现。选项来实现。 先修改系统选项,启动灵敏度分析先修改系统选项,启动灵敏度分析通过修改选项得到灵敏度分析数据的步骤:通过修改选项得到灵敏度分析数据的步骤: 执行执行 “ LINGO/ options ”

10、 菜单命令弹出菜单命令弹出 “选项选项” 对话框,在对话框,在“ General solver ”选项卡选项卡中,中,将其中左边列的第二个选项将其中左边列的第二个选项 “ Dual compulations ”(对偶计算)选项的默认设置(对偶计算)选项的默认设置 “prices”改为改为 “ prices and Ranges ”(价格及范围)后,(价格及范围)后,先对规划问题求解一次。先对规划问题求解一次。 执行执行“LINGO/Range”菜单命令,运行后计算菜单命令,运行后计算机则显示只有灵敏度分析的数据。机则显示只有灵敏度分析的数据。 一般情况下,一般情况下,lingo得到的都是局部最

11、优得到的都是局部最优解,要得到全局最优解,解,要得到全局最优解, 激活全局最优求解程序的步骤激活全局最优求解程序的步骤 则要激活全局最优求解则要激活全局最优求解程序,程序,方法如下:方法如下: 执行执行 “LINGO/Options” 菜单命令弹出菜单命令弹出 “选项框选项框” 对话框,对话框, 在在 “Global Solver” 选项选项卡上选择卡上选择 “Use Global Solver” 点确定即可。点确定即可。 由于全局最优求解程序花费的时间可能由于全局最优求解程序花费的时间可能是很长的,所以为了减少计算工作量,我们是很长的,所以为了减少计算工作量,我们应该尽量对变量等做进一步的限

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

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

14、 x的单位是弧度的单位是弧度exp(x) 计算计算e x 的值的值log(x) 计算计算lnx 的值的值pow(x,y) 计算计算x y 的值的值sqr(x) 计算计算x的平方的平方计算计算x的平方根的平方根size(A) 求矩阵求矩阵A的元素个数的元素个数2、集合循环函数集合循环函数 集合循环函数是指对集合中的所有元素集合循环函数是指对集合中的所有元素(下标下标)进行循环操作的函数,如进行循环操作的函数,如sum,for等。等。 具体的使用格式:具体的使用格式:循环函数名循环函数名(循环变量所在的集循环变量所在的集 (循环变量循环变量)过滤条件:循环表达式过滤条件:循环表达式) 其中,如果在

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

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

17、单下标变量,其下标有5个取值个取值;endsets for(number(i): x(i)=i2); !此命令是对此命令是对所有的下标所有的下标i,分别求,分别求i 2;end(2)sum 该函数返回遍历指定的集成员的一个表达该函数返回遍历指定的集成员的一个表达式的和。式的和。 例例4-3 求向量求向量 5,1,3,4,6,10 前前5个数的和。个数的和。model:sets: number/1.6/:x; endsetsdata: x = 5 1 3 4 6 10; !此命令给变量此命令给变量x具体的取值具体的取值;enddatas=sum(number(i) | i #le# 5: x(i

18、); end3、变量定界函数、变量定界函数变量定界函数是对变量的取值范围附加限制。变量定界函数是对变量的取值范围附加限制。bnd(A,x,B): 是指限定变量是指限定变量x的取值为的取值为 AxB(在在LINDO中无此函数中无此函数) gin(x): 限定变量限定变量x 的取值为整数;的取值为整数; bin(x): 限定变量限定变量x为为0-1变量,变量,free(x): 取消变量取消变量x的非负限制,即的非负限制,即x可以可以取负数、取负数、0或正数,因为或正数,因为lingo原来原来默认所有的变量非负取值。默认所有的变量非负取值。 在在lindo是用是用命令命令int,而在,而在lingo

19、中没有中没有int(x) ; 4.2.4 lingo计算输出的结果计算输出的结果 lingo计算的计算的输出结果与输出结果与lindo计算的输出计算的输出结果是完全相同的,只是输出的命令不相同。结果是完全相同的,只是输出的命令不相同。 在在lindo中,最优值、最优解,影子价格中,最优值、最优解,影子价格与灵敏度分析的数据可以同时输出。与灵敏度分析的数据可以同时输出。 而在而在lingo 中,灵敏度分析的数据只有通中,灵敏度分析的数据只有通过修改选项才能输出。过修改选项才能输出。lingo计算输出结果计算输出结果 例例4-1 的数学模型:的数学模型:model:max=32*x1+30*x2;

20、3*x1+4*x2=36;5*x1+4*x2=40;9*x1+8*x2=76;end 输出结果:输出结果:Global optimal solution found. Objective value: 282.6667 Total solver iterations: 3 Variable Value Reduced Cost X1 1.333333 0.000000 X2 8.000000 0.000000 Row Slack or Surplus Dual Price 1 282.6667 1.000000 2 0.000000 1.166667 3 1.333333 0.000000 4

21、 0.000000 3.1666674.2.5 关于关于lingo程序中的段程序中的段 一般来说,一般来说,lingo中建立的优化模型可以中建立的优化模型可以由五部分来组成,或称为五段。下面介绍常由五部分来组成,或称为五段。下面介绍常用的三段:用的三段:集合段,数据段,目标和约束段集合段,数据段,目标和约束段 1、集合段(、集合段(sets):): 这部分要以这部分要以“sets:”开始,以开始,以“endsets”结束。结束。 作用在于定义必要的集合及其元素。作用在于定义必要的集合及其元素。 属性属性相当于变量或数组,相当于变量或数组,集合的成员集合的成员相相当于下标。当于下标。 1、集合段

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

23、的数组,即属性相当于变量,成员相当于下标。即属性相当于变量,成员相当于下标。具体来说,具体来说,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的变量,即的变量,即x1, x2, x3, x4, x5, x6 y1, y2, y3, y4, y5, y6 属性(变量)的具体值如果是常数,则应属性(变量)的具体值如果是常数,则应在数据段中输入具体数据;在数据段中输入具体数据; 如果是未知数(即如果是未知数(即决策变量),则在数据段中不能输入

24、数据,但决策变量),则在数据段中不能输入数据,但可以在初始段输入初值。可以在初始段输入初值。 集合的成员和属性可集合的成员和属性可以在定义时省略,随后在数据段中输入。以在定义时省略,随后在数据段中输入。关于集合的一些说明:关于集合的一些说明: myfile/1.5/:a; 定义原始集合定义原始集合myfile,属性属性a的成员有的成员有5个元素,即定义个元素,即定义a是单下标变量,下是单下标变量,下标有标有5个取值个取值,即,即a1,a2,a3,a4,a5。 myfoes/1.6/:b; 定义原始集合定义原始集合myfoes,属性属性b的成员有的成员有6个元素,即定义个元素,即定义b是单下标变

25、量,下是单下标变量,下标有标有6个取值个取值,即,即b1,b2,b3,b4,b5,b6。 myido(myfoes,myfile):x,c; 定义派生集合定义派生集合myido,属性属性x和和c的成员有的成员有30个元素,即定义个元素,即定义x和和c是双下标变量,第是双下标变量,第1个下标有个下标有6个取值,第个取值,第2个下标有个下标有5个取值。其中个取值。其中myfoes和和myfile称为派称为派生集合的父集。生集合的父集。例例4-4model:sets: myfile/1.5/:a; myfoes/1.6/:b; myido(myfile,myfoes):x,c; endsetsdat

26、a: 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 = sum(myido(i,j):c(i,j)*x(i,j); !产销平衡运输问题的目标函数产销平衡运输问题的目标函数;for(myfile(i):sum(myfoes(j):x(i,j) = a(i); !产销平衡运输问题产地的产量约束产销平衡运输问题产地的产量约束;for(myfoes(j):sum(myfil

27、e(i):x(i,j) = b(j); !产销平衡运输问题销地的销量约束产销平衡运输问题销地的销量约束;end 2、数据段(、数据段(data):): 以以“data:”开始,以开始,以“enddata”结束,结束,作用在于对集合的属性(数组或变量)输作用在于对集合的属性(数组或变量)输入必要的常数数据。入必要的常数数据。具体的使用格式为:具体的使用格式为: 属性(或变量)属性(或变量)= 常数列表;常数列表; 在常数列表中,数据之间用在常数列表中,数据之间用“,”分分隔,也可以隔,也可以空格空格分开(分开(“ctrl+回车回车”的作的作用也等价于一个空格),即变量(或属性)用也等价于一个空格

28、),即变量(或属性)是取等号右边的常数是取等号右边的常数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 在数据段中输入数在数据段中输入数据时,可以分别输入每据时,可以分别输入每个变量对应的数据,也个变量对应的数据,也可以同时输入多个同维可以同时输入多个同维的变量的数据值。的变量的数据值。两种输入方法得到的结果相同两种输入方法得到的结果相同例例4-5等同于x,y =1,-3, 3,4, 0,29, 5,58, 6,3, -7,10; 3、目标和约束段:、目标和约

29、束段: 这部分实际上是定义目标函数、约束条件这部分实际上是定义目标函数、约束条件等,但这部分并没有段的开始及结束的标记。等,但这部分并没有段的开始及结束的标记。 lingo的目标函数和约束条件,一般要用的目标函数和约束条件,一般要用到循环函数:如求和函数到循环函数:如求和函数sum和循环函数和循环函数for等。等。 目标函数是求最大值或最小值目标函数是求最大值或最小值. max=目标函数目标函数; 或或 min=目标函数目标函数; 约束条件的标志是:约束条件的标志是:for(约束条件约束条件);目标函数目标函数的标志是:的标志是: 例如:例如: sets: ABD/1,2,3,4,5,6/:X

30、; AB/1.3/:Y,D; endsets(1)如程序中有约束条件:)如程序中有约束条件: 3 , 2 , 1,61jdyxjjii在在lingo程序中应该表示为程序中应该表示为: for (AB(j):sum(ABD(i):x(i)*y(j)=d(j);(2)如程序中有约束条件:)如程序中有约束条件: 3 , 2 , 1,61idyxijji在在lingo程序中应该表示为程序中应该表示为: for (AB(i):sum(ABD(j):x(i)*y(j)=d(i);循环变量:循环变量:循环变量:循环变量:先计算变量先计算变量 j , 再计算变量再计算变量 i . 先计算变量先计算变量 i ,

31、 再计算变量再计算变量 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=sum(myido(i,j):c(i,j)*x(i,j); for(myfile(i):sum(myfoes(j):x(i,j)=a(i);

32、 for(myfoes(j):sum(myfile(i):x(i,j)=b(j);end分析用分析用lingo编写的程序编写的程序例例4-6 写出下面规划问题的写出下面规划问题的lingo中用集合编中用集合编写的求解程序。如果线性规划问题有最优写的求解程序。如果线性规划问题有最优解,请写出最优解。解,请写出最优解。 0,50 2215 38022 4703 2 . . ) 1 (2108max 3212131321321321xxxxxxxxxxxxxtsxxxz0,1 23 2411 2 . . ) 2(3max 543213153214321321xxxxxxxxxxxxxxxt sxxx

33、z0,50 2215 38022 4703 2. . ) 1 (2108max 3212131321321321xxxxxxxxxxxxxtsxxxz解:解:要写出用要写出用lingo中集中集合的方法求解的程合的方法求解的程序,序, 则应该先把规则应该先把规划模型化为用求和划模型化为用求和形式表示的模型,形式表示的模型, 其中:其中: )2108(321ccccCj ,321xxxxXj ,50158070ibB .02210322431234ijaA0,50 2215 38022 4703 2 . . ) 1 (2108max 3212131321321321xxxxxxxxxxxxxtsx

34、xxz则该规划问题的则该规划问题的用求和形式表示用求和形式表示的模型为:的模型为:3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max 3131jxibxatsxczjjijijjjj用求和形式表示的模型用求和形式表示的模型3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max3131jxibxatsxczjjijijjjj0 . .maxXBAXtsCXz讨论用集合表讨论用集合表示的模型:示的模型:3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max 3131jxibxatsxczjjijijjjj其中:其中:(1)变量)变量c, x是单是

35、单下标,下标有下标,下标有3个取值;变量个取值;变量b是单下标,下标有是单下标,下标有4个取值。个取值。对于单下标的变量,只要直接定义集合即可,对于单下标的变量,只要直接定义集合即可,即要定义两个集合,一个有即要定义两个集合,一个有3个取值的,另一个个取值的,另一个有有4个取值的。个取值的。 由于变量由于变量c,b,a已经有具体的数值,已经有具体的数值,故必须在数据段中给出具体的取值;故必须在数据段中给出具体的取值; 变量变量x没有具体的数值,它是决策变量,故没有具体的数值,它是决策变量,故不能在数据段中给出具体的取值。不能在数据段中给出具体的取值。讨论用集合表讨论用集合表示的模型:示的模型:

36、3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max3131jxibxatsxczjjijijjjj(2)变量)变量a是双是双下标变量,下标共有下标变量,下标共有43个取值,第个取值,第1个个i下下标有标有4个取值,第个取值,第2个下标个下标j有有3个取值。个取值。 对于双下标的变量,必须定义派生集合。对于双下标的变量,必须定义派生集合。 它第它第1个父集是有个父集是有4个取值,第个取值,第2个父集是有个父集是有3个取值。个取值。 变量变量a已经有具体的数值,它不是决已经有具体的数值,它不是决策变量,故必须在数据段中给出具体的取值。策变量,故必须在数据段中给出具体的取值。 上

37、述数学模型用集合编写的求解程序为:上述数学模型用集合编写的求解程序为:3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max3131jxibxatsxczjjijijjjj集合段集合段sets: endsets ab/1,2,3/:x,c; abc/1,2,3,4/:b; abcd(abc,ab):a;数据段数据段data: enddata c=8,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 )( . .max3131jxibxatsxczjjijijjjj目标函数目标函数 m

38、ax=sum(ab(j):c(j)*x(j);约束条件约束条件for(abc(i):sum(ab(j):a(i,j)*x(j)=b(i); ab/1,2,3/:x,c; abc/1,2,3,4/:b; abcd(abc,ab):a;用集合表示的程序为:用集合表示的程序为: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(ab(j):c(j)*x(j);for(abc(i):

39、sum(ab(j):a(i,j)*x(j)=b(i);end3 , 2 , 1, 04 , 3 , 2 , 1 )( . .max3131jxibxatsxczjjijijjjjmodel: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(ab(j):c(j)*x(j);for(abc(i):sum(ab(j):a(i,j)*x(j)=b(i);end Global optimal s

40、olution found.Objective value: 280.0000 Total solver iterations: 2Variable Value Reduced Cost X( 1) 0.000000 2.666667 X( 2) 25.00000 0.000000 X( 3) 15.00000 0.000000 利用软件计算利用软件计算,可知可知:该数学规划模型的最优解为该数学规划模型的最优解为15,25, 0321xxx最优值为:最优值为: 280z(2)把规划问题化为用求和形式表示的模型,把规划问题化为用求和形式表示的模型,0,1 23 2411 2 . . 3max 5

41、43213153214321321xxxxxxxxxxxxxxxtsxxxz其中:其中: )0 0 113()()(54321ccccccCj ,54321xxxxxxXj ,1311ibB 00102102140112153ijaA该规划问题用求和形式表示的模型为:该规划问题用求和形式表示的模型为:0,1 23 2411 2 . . 3max 543213153214321321xxxxxxxxxxxxxxxtsxxxz5 , 4 , 3 , 2 , 1, 03 , 2 , 1 . .max 5151jxibxatsxczjjijijjjj0 . .max XBAXtsAXz该规划问题用集合

42、该规划问题用集合编写的程序为:编写的程序为:5 , 4 , 3 , 2 , 1, 03 , 2 , 1 . .max5151jxibxatsxczjjijijjjj集合段集合段sets: endsets ab/1,2,3,4,5/:x,c; abc/1,2,3/:b; abcd(abc,ab):a;数据段数据段data: enddata c=3,-1,-1,0,0; b=11,3,1; a=1,-2,1,1,0 -4,1,2,0,-1 -2,0,1,0,0;5 , 4 , 3 , 2 , 1, 03 , 2 , 1 . .max5151jxibxatsxczjjijijjjj目标函数目标函数

43、max=sum(ab(j):c(j)*x(j);约束条件约束条件 for(abc(i):sum(ab(j):a(i,j)*x(j)=b(i); ab/1,2,3,4,5/:x,c; abc/1,2,3/:b; abcd(abc,ab):a;model:sets: ab/1,2,3/:b; abc/1,2,3,4,5/:c,x; abcd(ab,abc):a;endsetsdata: c=3,-1,-1,0,0; b=11,3,1; a=1,-2,1,1,0 -4,1,2,0,-1 -2,0,1,0,0;enddatamax=sum(ab(j):c(j)*x(j);for(abc(i):sum(

44、ab(j):a(i,j)*x(j)=b(i);end5 , 4 , 3 , 2 , 1, 03 , 2 , 1 . .max 5151jxibxatsxczjjijijjjj用集合表示的程序为:用集合表示的程序为:model:sets: ab/1,2,3/:b; abc/1,2,3,4,5/:c,x; abcd(ab,abc):a;endsetsdata: c=3,-1,-1,0,0; b=11,3,1; a=1,-2,1,1, 0 -4,1,2,0, -1 -2,0,1,0,0;enddatamax=sum(abc(j):c(j)*x(j);for(ab(i):sum(abc(j):a(i,

45、j)*x(j)=b(i);end Global optimal solution found. Objective value: 2.000000 Total solver iterations: 0 Variable Value Reduced Cost X( 1) 4.000000 0.000000 X( 2) 1.000000 0.000000 X( 3) 9.000000 0.000000 X( 4) 0.000000 0.3333333 X( 5) 0.000000 0.3333333利用软件计算可知利用软件计算可知:该数学规划模型的最优解为该数学规划模型的最优解为最优值为:最优值为

46、: 0, 09, 1, 454321xxxxx2 用用LINGO求解运输问题求解运输问题:某产品有某产品有5个产地个产地A1,A2,A3,A4,A5, 它的产品供应它的产品供应6个销地个销地B1,B2,B3,B4,B5,B6, 产地的产量、销地的销产地的产量、销地的销量及产品从各产地运往各销地的单位运价如下表:量及产品从各产地运往各销地的单位运价如下表:产地产地销地销地B1B2B3B4B5B6产量产量A1122564100A2234693200A3251520100A456791010100A53346679400销量销量100200100150150200900应如何调运,可使总的运输费用最

47、少?应如何调运,可使总的运输费用最少?5655545352514645444342413635343332312625242322211615141312119664433 10109765 02552 396432 4652minxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxz该产销平衡运输问题的数学模型为该产销平衡运输问题的数学模型为:400100100 2001005655545352514645444342413534333231262524232221161514131211xxxxxxxxxxxxxxxxxxxxxxxxxxxxx200150150100200100564636261655453525155444342414534333231352423222125141312111xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx6 , 5 , 4 , 3 , 2 , 1; 5 , 4 , 3 , 2 , 1, 0jixij设决

温馨提示

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

评论

0/150

提交评论