1、=”可分别用“”代替。 一行中感叹号“!”后面的文字为是注释语句,可增强程序的可读性,不参与模型的建立。名称含义IP Bound (整数规划的界)显示整数规划的界(对最大化问题显示上界;对最小化问题,显示下界):“N/A”含义同上。Branches (分枝数)显示分枝定界算法已经计算的分枝数: “N/A”含义同上。Elapsed Time (所用时间)显示计算所用时间(秒):“0.00”说明计算太快了,用时还不到0.005秒。Update Interval (刷新本界面的时间间隔)显示和控制刷新本界面的时间间隔:“1”表示1秒;用户可以直接在界面上修改这个时间间隔。Interrupt Solv
2、er (中断求解程序)当模型规模比较大时(尤其对整数规划),可能求解时间会很长,如果不想再等待下去时,可以在程序运行过程中用鼠标点击该按钮终止计算。求解结束后这个按钮变成了灰色,再点击就不起作用了。Close(关闭)该按钮只是关闭状态窗口,并不终止计算。如果你关闭了状态窗口,将来随时可以选择WINDOW | OPEN STATUS WINDOW 菜单命令来再次打开这个窗口。输出结果表示的意思是:“LP OPTIMUM FOUND AT STEP2” 表示单纯形法在两次迭代(旋转)后得到最优解“OBJECTIVE FUNCTION VALUE 1) 7.4545450 ”表示最优目标值为7.45
3、45450.(注意:在LINDO中目标函数所在的行总是被认为是第1行,这就是这里“1)”的含义)。“VALUE”给出最优解中各变量(VARIABLE)的值:X =1.272727, Y =1.636364. “REDUCED COST” 给出最优的单纯形表中目标函数行(第1行)中变量对应的系数(即各个变量的检验数(也称为判别数). 其中基变量的reduced cost值一定为0;对于非基变量(注意:非基变量本身取值一定为0), 相应的 reduced cost值表示当该非基变量增加一个单位(其他非基变量保持不变)时目标函数减少的量( 对max型问题)。本例最优解中两个变量都是基变量,所以对应的
4、REDUCED COST的值均为0。“SLACK OR SURPLUS(松驰或剩余)” 给出约束对应的松驰变量的值: 第2、3行松驰变量均为0, 说明对于最优解来讲,两个约束(第2、3行)均取等号,即都是紧约束。 “DUAL PRICES” 给出对偶价格的值: 第2、3行对偶价格分别为 .090909,.545455。“NO. ITERATIONS= 2” 表示用单纯形法进行了两次迭代(旋转)。LINDO模型的一些注意事项 1.变量名由字母和数字组成,但必须以字母开头,且长度不能超过8个字符,不区分大小写字母,包括关键字(如MAX、MIN等)也不区分大小写字母。2.对目标函数和约束用行号(行名
5、)进行标识,这些标识会在将来的求解结果报告中用到。行名可以和变量名一样命名,也可以只用数字命名,还可以含有中文字符,但长度同样不能超过8个字符。为了方便将来阅读求解结果报告,建议用户总是自觉地对每个约束进行命名。行名结束标志符号、即右括号“)”必须是英文字符,否则会出现错误。3.可以用“TITLE”语句对输入的模型命名,用法是在TITLE后面写出其名字(最多72个字符,可以有汉字),在程序中单独占一行,可以在模型的任何地方。模型命名的第一个作用类似于对模型的注释和说明。模型命名的另一个目的,是为了方便将来阅读求解结果报告。因为用户有可能同时处理多个模型,很容易混淆模型与求解结果的对应关系。这时
6、如果对不同模型分别进行了命名,就可以随时(例如在求解当前模型前)使用菜单命令“FILE|TITLE”将当前模型的名字显示在求解结果报告窗口中,这样就容易判别每个求解结果与每个模型的对应关系。4.模型中以感叹号“!” 开头的是注释行(注释语句,或称为说明语句),可以帮助他人或以后自己理解这个模型。实际上,每行中“!”符号后面的都是注释或说明。注释语句中可以使用汉字字符 。5.变量不能出现在一个约束条件的右端(即约束条件的右端只能是常数);变量与其系数间可以有空格(甚至回车),但不能有任何运算符号(包括乘号“*”等)。6.模型中不接受括号“( )”和逗号“,”等符号(除非在注释语句中)。 例如:
7、4(X1+X2)需写为4X1+4X2;“10,000”需写为10000。7.表达式应当已经经过化简。如不能出现2X1 + 3X2 - 4X1,而应写成 -2X1 + 3X2等。8.LINDO 中已假定所有变量非负。若要取消变量的非负假定,可在模型的“END”语句后面用命令“FREE”。例如,在“END”语句后输入FREE vname,可将变量vname的非负假定取消。9.可以在模型的“END”语句后面用命令“SUB”(即设置上界(SET UPPER BOUND)的英文缩写)设定变量的上界,用命令“SLB” (即设置下界(SET LOWER BOUND)的英文缩写)设定变量的上下界。其用法是:“
8、SUB vname value”将变量vname的上限设定为value;“SLB”的用法类似。用“SUB”和“SLB”表示的上下界约束不计入模型的约束,因此LINDO也不能给出其松紧判断和敏感性分析。10.数值均衡化考虑:如果约束系数矩阵中各非零元的绝对值的数量级差别很大(相差1000倍以上),则称其为数值不均衡的。为了避免数值不均衡引起的计算问题, 使用者应尽可能自己对矩阵的行列进行均衡化。此时还有一个原则, 即系数中非零元的绝对值不能大于100000 或者小于.0001。LINDO 不能对LP 中的系数自动进行数值均衡化,但如果LINDO 觉得矩阵元素之间很不均衡, 将会给出警告。11.
9、简单错误的检查和避免: 输入模型时可能会有某些输入错误. 当问题规模较大时, 要查找错误是比较困难的。在LINDO 中有一些可帮助寻找错误的功能,其中之一就是菜单命令“Report | Picture(Alt+5)” , 它的功能是可以将目标函数和约束表达式中的非零系数通过列表(或图形)显示出来。例2.2 菜单命令“Report | Picture(Alt+5)” 的功能对如下的一个有错误的模型输入:MIN 5 A0 +6 A1 +2 A2 +4 B0 +3 B1 +7 B2 +2 C0 +9 C1 +8 C2 SUBJECT TO 2) A0 +Al +A2 =8 3) B0 +B1 +B2
10、 =9 4) C0 +C1 +C2 =6 5) A0 +B0 +CO =6 6) A1 +B1 +C1 =5 7)A2 +B2 +C2 =9 END 用Report | Picture命令,将弹出一个对话框,在弹出的对话框中采用缺省选项(即不采用下三角矩阵形式,并以图形方式显示),直接按“OK”按钮可得到一个输出图形。可以从图中很直观地发现,其实错误原因只不过是在输入5)行的表达式中C0与CO弄混了(英文字母O与数字0弄混了)。在图中,还可以用鼠标控制显示图形的缩放,这对于规模较大的模型是有用的。例2.3 三个变量范围限定命令(FREE、SUB、SLB)的作用 求解如下的LP问题:这个模型中对
11、变量x没有非负限制,对y有上限限制,对z有下限限制。用FREE、SUB、SLB三个命令可以实现这些功能。具体输入如下:MAX 2x 3y + 4z S.T. con2) 4 x + 3y + 2z = 10 con3) -3x + 5 y - z 8 con5) -5x - y - z 2 free x ! 说明:变量x没有非负限制 sub y 20 !变量y的上界为20 slb z 30 !变量z的下界为30 解得到的结果:最大值为122,最优解为x=-17,y=0,z=39。可以看出y的上界(20)在最优解中并没有达到,z的下界(30)也没有达到,因此模型中去掉“sub y 20”和“slb z 30”两个语句,得到的结果应该是不变的。但由于最优解中x的取值为负值,所以“free x”这个语句确实是不能少的。不妨试一下,去掉这个语句后效果会怎样?
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1