Lindo软件的基本使用方法.docx
《Lindo软件的基本使用方法.docx》由会员分享,可在线阅读,更多相关《Lindo软件的基本使用方法.docx(9页珍藏版)》请在冰豆网上搜索。
Lindo软件的基本使用方法
Lindo软件的基本使用方法
2.1Lindo软件入门
2.1.1编写一个简单的Lindo程序
下面通过一个简单的例子,说明如何编写、运行一个Lindo程序的完整过程.
例2.1求解下面的简单线性规划(LP)问题:
我们可以直接在这个新的、空白的模型窗口中输入这个LP模型:
图2-1输入一个简单的优化模型
我们看到这段程序有以下特点:
(1)这个Lindo程序以“max”开头,表示目标是最大化问题(容易想到,对于最小化问题,自然以“min”开头),后面直接写出目标函数的表达式和约束的表达式(目标函数和约束之间用
“ST”分开)程序以“end”结尾(end也可以省略);
Lindo运行状态窗口
名称
含义
Status(当前状态)
显示当前求解状态:
“optimal”表示已经达到最优解;其它可能的显示还有:
feasible,infeasible,unbounded
Interations(迭代次数)
显示迭代次数,2表示已经迭代了两次
Infeasible(不可行性)
约束不满足的量(即各个约束条件不满足的“数量”的和;特别注意不是“不满足的约束的个数”):
“0”表示这个解是可行的
Objective(当前的目标值)
目标函数显示的值为:
7.45455
BestIP(整数规划当前的最佳目标值)
显示整数规划当前的最佳目标值:
“N/A”(Noanwser或NotApplicable)表示无答案或无意义,因为整个模型中没有整数变量,不是整数规划
IPbound(整数规划的界)
显示整数规划的界(对最大化问题显示上界;对最小化问题显示下界):
“N/A”含义同上
Branches(分支数)
显示分支定界算法已经计算的分支数:
“N/A”含义同上
Elapsedtime(所用时间)
显示计算所用时间(单位:
s)“0.00”表示计算太快了,用时还不到0.05秒
UpdateInterval(刷新本界面的时间间隔)
显示和控制刷新本界面的时间间隔:
“1”表示“1s”;用户可以在界面上修改该时间
InterruptSolver(中断求解程序)
当模型规模比较大时(尤其对整数规划),可能求解时间会很长,如果不想再等待下去,可以在程序运行时单击此按钮中断运行
Close(关闭)
该按钮只是关闭窗口,不终止计算.如果你关闭了状态窗口,可以在Window|openStausWindow菜单命令来打开它
灵敏性分析对话框
这个对话框询问你是否需要作灵敏性分析(DORANGE(SENS-
ITIVITY)ANALYSIS?
)
Lindo的结果报告窗口
“LPOPTIMUMFOUNDATSTEP2”表示单纯形法在两次迭代(旋转)后得到最优解;
“OBJECTIVEFUNCTIONVALUE
1)7.454545表示最优目标值为7.454545(注意:
Lindo中目标函数所在的行总是被认为是第1行,这就是这里1)的含义).
“VALUE”给出最优解中各变量(VARIABLE)的值:
“REDUCEDCOST”给出最优的单纯形表中目标函数(第1行)中变量对应的系数(即各个变量的检验数(也称为判别数)).其中,基变量的REDUCEDCOST值一定为0;对于非基变量(注意:
非基变量本身取值一定为0),相应的REDUCEDCOST值表示当该非基变量增加一个单位(其他非基变量保持不变)时目标函数减少的量(对Max问题).
“SLACKORSURPLUS(松弛或剩余)”给出约束对应的松弛变量的值:
第2,3行松弛变量均为0,说明对最优解来说。
两个约束(第2、3行)均取等号,即都是紧约束.
“DUALPRICES”给出对偶价格的值:
第2、3行对偶价格分别为:
0.090909,0.545455.
“NO.ITERATIONS=2”表示用单纯形算法进行了两次迭代(旋转).
2.1.2一些注意事项
(1)Lindo中的变量名由数字和字母组成,但必须以字母开头,且长度不能超过8个字符.Lindo中不区分大小写。
包括LINDO中的关键字也不区分大小写.
(2)可以在模型的End后面用命令“SUB(即设置上界(setupperbound)的英文缩写)设置变量的上界,用命令“SLB”设置变量的下界,其用法是:
subvnamevalue,将变量vname的上限设置为value.
Subx110!
作用等价于x1<=10
但用SUB和SLB表示上下界约束不计入模型的约束,因此LINDO也不能给出其松紧约束和敏感性分析.
(3)简单错误的检查和避免
当你将一个线性规划问题的数学模型输入LINDO系统时,如果有错误,可以使用如下命令:
Report|Picture(Alt+5),它的功能是将目标函数和约束表达式中的非零系数通过列表或者图形显示出来.
例2:
输入如下语句,用Reports|picture命令来检验错误.
输入中含有错误的例子
系数矩阵显示方式的控制对话框
系数矩阵的图形显示
从图中很直观地发现,其实错误的原因只不过在于输入有空格,第5)行中的o和O弄混淆了.
下面用一个例子来说明三个变量范围限定命令(FREE,SUB,SLB).
例3:
求解下面的线性规划问题.
这个模型中对变量
没有非负限制,对
有上限限制,对
有下限限制.用free、SUB、SLB可以实现这些功能.
模型的LINDO输入语句
例3的输出结果
从结果报告表中可以知道:
最大值为122,最优解为
.
2.2敏感性分析
下面来看一个具体的例子.
例4某家具公司制造书桌、餐桌和椅子,所用的资源有三种:
木材、木工和漆工.生成数据如下表.若要求桌子的生产量不超过5件,如何安排三种产品的生产使得利润最大?
家具公司生产数据
每个书桌每个餐桌每把椅子现有资源总量
木材8单位6单位1单位48单位
漆工4单位2单位1.5单位20单位
木工2单位1.5单位0.5单位8单位
成品单价60单位30单位20单位
用desk、table和chair分别表示三种产品的生产量(决策变量),容易建立LP模型,在LINDO中输入如下: