5Lingo中的Windows命令.docx
- 文档编号:29032325
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:32
- 大小:35.85KB
5Lingo中的Windows命令.docx
《5Lingo中的Windows命令.docx》由会员分享,可在线阅读,更多相关《5Lingo中的Windows命令.docx(32页珍藏版)》请在冰豆网上搜索。
5Lingo中的Windows命令
§5LINGOWINDOWS命令
5.1文件菜单(FileMenu)
1.新建(New)
从文件菜单中选用“新建”命令、单击“新建”按钮或直接按F2键可以创建一个新的“Model”窗口。
在这个新的“Model”窗口中能够输入所要求解的模型。
2.打开(Open)
从文件菜单中选用“打开”命令、单击“打开”按钮或直接按F3键可以打开一个已经存在的文本文件。
这个文件可能是一个Model文件。
3.保存(Save)
从文件菜单中选用“保存”命令、单击“保存”按钮或直接按F4键用来保存当前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件。
4.另存为...(SaveAs...)
从文件菜单中选用“另存为...”命令或按F5键可以将当前活动窗口中的内容保存为文本文件,其文件名为你在“另存为...”对话框中输入的文件名。
利用这种方法你可以将任何窗口的内容如模型、求解结果或命令保存为文件。
5.关闭(Close)
在文件菜单中选用“关闭”(Close)命令或按F6键将关闭当前活动窗口。
如果这个窗口是新建窗口或已经改变了当前文件的内容,LINGO系统将会提示是否想要保存改变后的内容。
6.打印(Print)
在文件菜单中选用“打印”(Print)命令、单击“打印”按钮或直接按F7键可以将当前活动窗口中的内容发送到打印机。
7.打印设置(PrintSetup...)
在文件菜单中选用“打印设置...”命令或直接按F8键可以将文件输出到指定的打印机。
8.打印预览(PrintPreview)
在文件菜单中选用“打印预览...”命令或直接按Shift+F8键可以进行打印预览。
9.输出到日志文件(LogOutput...)
从文件菜单中选用“LogOutput...”命令或按F9键打开一个对话框,用于生成一个日志文件,它存储接下来在“命令窗口”中输入的所有命令。
10.提交LINGO命令脚本文件(TakeCommands...)
从文件菜单中选用“TakeCommands...”命令或直接按F11键就可以将LINGO命令脚本(commandscript)文件提交给系统进程来运行。
11.引入LINGO文件(ImportLingoFile...)
从文件菜单中选用“ImportLingoFile...”命令或直接按F12键可以打开一个LINGO格式模型的文件,然后LINGO系统会尽可能把模型转化为LINGO语法允许的程序。
12.退出(Exit)
从文件菜单中选用“Exit”命令或直接按F10键可以退出LINGO系统。
5.2编辑菜单(EditMenu)
1.恢复(Undo)
从编辑菜单中选用“恢复”(Undo)命令或按Ctrl+Z组合键,将撤销上次操作、恢复至其前的状态。
2.剪切(Cut)
从编辑菜单中选用“剪切”(Cut)命令或按Ctrl+X组合键可以将当前选中的内容剪切至剪贴板中。
3.复制(Copy)
从编辑菜单中选用“复制”(Copy)命令、单击“复制”按钮或按Ctrl+C组合键可以将当前选中的内容复制到剪贴板中。
4.粘贴(Paste)
从编辑菜单中选用“粘贴”(Paste)命令、单击“粘贴”按钮或按Ctrl+V组合键可以将粘贴板中的当前内容复制到当前插入点的位置。
5.粘贴特定..(PasteSpecial。
。
)
与上面的命令不同,它可以用于剪贴板中的内容不是文本的情形。
6.全选(SelectAll)
从编辑菜单中选用“SelectAll”命令或按Ctrl+A组合键可选定当前窗口中的所有内容。
7.匹配小括号(MatchParenthesis)
从编辑菜单中选用“MatchParenthesis”命令、单击“MatchParenthesis”按钮或按Ctrl+P组合键可以为当前选中的开括号查找匹配的闭括号。
8.粘贴函数(PasteFunction)
从编辑菜单中选用“PasteFunction”命令可以将LINGO的内部函数粘贴到当前插入点。
5.3LINGO菜单
1.求解模型(Slove)
从LINGO菜单中选用“求解”命令、单击“Slove”按钮或按Ctrl+S组合键可以将当前模型送入内存求解。
2.求解结果...(Solution...)
从LINGO菜单中选用“Solution...”命令、单击“Solution...”按钮或直接按Ctrl+O组合键可以打开求解结果的对话框。
这里可以指定查看当前内存中求解结果的那些内容。
3.查看...(Look...)
从LINGO菜单中选用“Look...”命令或直接按Ctrl+L组合键可以查看全部的或选中的模型文本内容。
4.灵敏性分析(Range,Ctrl+R)
用该命令产生当前模型的灵敏性分析报告:
研究当目标函数的费用系数和约束右端项在什么范围(此时假定其它系数不变)时,最优基保持不变。
灵敏性分析是在求解模型时作出的,因此在求解模型时灵敏性分析是激活状态,但是默认是不激活的。
为了激活灵敏性分析,运行LINGO|Options…,选择GeneralSolverTab,在DualComputations列表框中,选择PricesandRanges选项。
灵敏性分析耗费相当多的求解时间,因此当速度很关键时,就没有必要激活它。
下面我们看一个简单的具体例子。
例5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:
木料、木工和漆工。
生产数据如下表所示:
每个书桌
每个餐桌
每个椅子
现有资源总数
木料
8单位
6单位
1单位
48单位
漆工
4单位
2单位
1.5单位
20单位
木工
2单位
1.5单位
0.5单位
8单位
成品单价
60单位
30单位
20单位
若要求桌子的生产量不超过5件,如何安排三种产品的生产可使利润最大?
用DESKS、TABLES和CHAIRS分别表示三种产品的生产量,建立LP模型。
max=60*desks+30*tables+20*chairs;
8*desks+6*tables+chairs<=48;
4*desks+2*tables+1.5*chairs<=20;
2*desks+1.5*tables+.5*chairs<=8;
tables<=5;
求解这个模型,并激活灵敏性分析。
这时,查看报告窗口(ReportsWindow),可以看到如下结果。
Globaloptimalsolutionfoundatiteration:
3
Objectivevalue:
280.0000
VariableValueReducedCost
DESKS2.0000000.000000
TABLES0.0000005.000000
CHAIRS8.0000000.000000
RowSlackorSurplusDualPrice
1280.00001.000000
224.000000.000000
30.00000010.00000
40.00000010.00000
55.0000000.000000
“Globaloptimalsolutionfoundatiteration:
3”表示3次迭代后得到全局最优解。
“Objectivevalue:
280.0000”表示最优目标值为280。
“Value”给出最优解中各变量的值:
造2个书桌(desks),0个餐桌(tables),8个椅子(chairs)。
所以desks、chairs是基变量(非0),tables是非基变量(0)。
“SlackorSurplus”给出松驰变量的值:
第1行松驰变量=280(模型第一行表示目标函数,所以第二行对应第一个约束)
第2行松驰变量=24
第3行松驰变量=0
第4行松驰变量=0
第5行松驰变量=5
“ReducedCost”列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率。
其中基变量的reducedcost值应为0,对于非基变量Xj,相应的reducedcost值表示当某个变量Xj增加一个单位时目标函数减少的量(max型问题)。
本例中:
变量tables对应的reducedcost值为5,表示当非基变量tables的值从0变为1时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值=280-5=275。
“DUALPRICE”(对偶价格)表示当对应约束有微小变动时,目标函数的变化率。
输出结果中对应于每一个约束有一个对偶价格。
若其数值为p,表示对应约束中不等式右端项若增加1个单位,目标函数将增加p个单位(max型问题)。
显然,如果在最优解处约束正好取等号(也就是“紧约束”,也称为有效约束或起作用约束),对偶价格值才可能不是0。
本例中:
第3、4行是紧约束,对应的对偶价格值为10,表示当紧约束
3)4DESKS+2TABLES+1.5CHAIRS<=20
变为3)4DESKS+2TABLES+1.5CHAIRS<=21
时,目标函数值=280+10=290。
对第4行也类似。
对于非紧约束(如本例中第2、5行是非紧约束),DUALPRICE的值为0,表示对应约束中不等式右端项的微小扰动不影响目标函数。
有时,通过分析DUALPRICE,也可对产生不可行问题的原因有所了解。
灵敏度分析的结果是
Rangesinwhichthebasisisunchanged:
ObjectiveCoefficientRanges
CurrentAllowableAllowable
VariableCoefficientIncreaseDecrease
DESKS60.000000.00.0
TABLES30.000000.00.0
CHAIRS20.000000.00.0
RighthandSideRanges
RowCurrentAllowableAllowable
RHSIncreaseDecrease
248.000000.00.0
320.000000.00.0
48.0000000.00.0
55.0000000.00.0
目标函数中DESKS变量原来的费用系数为60,允许增加(AllowableIncrease)=4、允许减少(AllowableDecrease)=2,说明当它在[60-4,60+20]=[56,80]范围变化时,最优基保持不变。
对TABLES、CHAIRS变量,可以类似解释。
由于此时约束没有变化(只是目标函数中某个费用系数发生变化),所以最优基保持不变的意思也就是最优解不变(当然,由于目标函数中费用系数发生了变化,所以最优值会变化)。
第2行约束中右端项(RightHandSide,简写为RHS)原来为48,当它在[48-24,48+∞]=[24,∞]范围变化时,最优基保持不变。
第3、4、5行可以类似解释。
不过由于此时约束发生变化,最优基即使不变,最优解、最优值也会发生变化。
灵敏性分析结果表示的是最优基保持不变的系数范围。
由此,也可以进一步确定当目标函数的费用系数和约束右端项发生小的变化时,最优基和最优解、最优值如何变化。
下面我们通过求解一个实际问题来进行说明。
例5.2一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。
根据市场需求,生产的A1,A2全部能售出,且每公斤A1获利24元,每公斤A2获利16元。
现在加工厂每天能得到50桶牛奶的供应,每天正式工人总的劳动时间480小时,并且甲车间每天至多能加工100公斤A1,乙车间的加工能力没有限制。
试为该厂制订一个生产计划,使每天获利最大,并进一步讨论以下3个附加问题:
1)若用35元可以买到1桶牛奶,应否作这项投资?
若投资,每天最多购买多少桶牛奶?
2)若可以聘用临时工人以增加劳动时间,付给临时工人的工资最多是每小时几元?
3)由于市场需求变化,每公斤A1的获利增加到30元,应否改变生产计划?
模型代码如下:
max=72*x1+64*x2;
x1+x2<=50;
12*x1+8*x2<=480;
3*x1<=100;
求解这个模型并做灵敏性分析,结果如下。
Globaloptimalsolutionfoundatiteration:
0
Objectivevalue:
3360.000
VariableValueReducedCost
X120.000000.000000
X230.000000.000000
RowSlackorSurplusDualPrice
13360.0001.000000
20.00000048.00000
30.0000002.000000
440.000000.000000
Rangesinwhichthebasisisunchanged:
ObjectiveCoefficientRanges
CurrentAllowableAllowable
VariableCoefficientIncreaseDecrease
X172.0000024.000008.000000
X264.000008.00000016.00000
RighthandSideRanges
RowCurrentAllowableAllowable
RHSIncreaseDecrease
250.0000010.000006.666667
3480.000053.3333380.00000
4100.0000INFINITY40.00000
结果告诉我们:
这个线性规划的最优解为x1=20,x2=30,最优值为z=3360,即用20桶牛奶生产A1,30桶牛奶生产A2,可获最大利润3360元。
输出中除了告诉我们问题的最优解和最优值以外,还有许多对分析结果有用的信息,下面结合题目中提出的3个附加问题给予说明。
3个约束条件的右端不妨看作3种“资源”:
原料、劳动时间、车间甲的加工能力。
输出中SlackorSurplus给出这3种资源在最优解下是否有剩余:
原料、劳动时间的剩余均为零,车间甲尚余40(公斤)加工能力。
目标函数可以看作“效益”,成为紧约束的“资源”一旦增加,“效益”必然跟着增长。
输出中DUALPRICES给出这3种资源在最优解下“资源”增加1个单位时“效益”的增量:
原料增加1个单位(1桶牛奶)时利润增长48(元),劳动时间增加1个单位(1小时)时利润增长2(元),而增加非紧约束车间甲的能力显然不会使利润增长。
这里,“效益”的增量可以看作“资源”的潜在价值,经济学上称为影子价格,即1桶牛奶的影子价格为48元,1小时劳动的影子价格为2元,车间甲的影子价格为零。
读者可以用直接求解的办法验证上面的结论,即将输入文件中原料约束milk)右端的50改为51,看看得到的最优值(利润)是否恰好增长48(元)。
用影子价格的概念很容易回答附加问题1):
用35元可以买到1桶牛奶,低于1桶牛奶的影子价格48,当然应该作这项投资。
回答附加问题2):
聘用临时工人以增加劳动时间,付给的工资低于劳动时间的影子价格才可以增加利润,所以工资最多是每小时2元。
目标函数的系数发生变化时(假定约束条件不变),最优解和最优值会改变吗?
这个问题不能简单地回答。
上面输出给出了最优基不变条件下目标函数系数的允许变化范围:
x1的系数为(72-8,72+24)=(64,96);x2的系数为(64-16,64+8)=(48,72)。
注意:
x1系数的允许范围需要x2系数64不变,反之亦然。
由于目标函数的费用系数变化并不影响约束条件,因此此时最优基不变可以保证最优解也不变,但最优值变化。
用这个结果很容易回答附加问题3):
若每公斤A1的获利增加到30元,则x1系数变为30×3=90,在允许范围内,所以不应改变生产计划,但最优值变为90×20+64×30=3720。
下面对“资源”的影子价格作进一步的分析。
影子价格的作用(即在最优解下“资源”增加1个单位时“效益”的增量)是有限制的。
每增加1桶牛奶利润增长48元(影子价格),但是,上9
面输出的CURRENTRHS的ALLOWABLEINCREASE和ALLOWABLEDECREASE给出了影子价格有意义条件下约束右端的限制范围:
milk)原料最多增加10(桶牛奶),time)劳动时间最多增加53(小时)。
现在可以回答附加问题1)的第2问:
虽然应该批准用35元买1桶牛奶的投资,但每天最多购买10桶牛奶。
顺便地说,可以用低于每小时2元的工资聘用临时工人以增加劳动时间,但最多增加53.3333小时。
需要注意的是:
灵敏性分析给出的只是最优基保持不变的充分条件,而不一定是必要条件。
比如对于上面的问题,“原料最多增加10(桶牛奶)”的含义只能是“原料增加10(桶牛奶)”时最优基保持不变,所以影子价格有意义,即利润的增加大于牛奶的投资。
反过来,原料增加超过10(桶牛奶),影子价格是否一定没有意义?
最优基是否一定改变?
一般来说,这是不能从灵敏性分析报告中直接得到的。
此时,应该重新用新数据求解规划模型,才能做出判断。
所以,从正常理解的角度来看,我们上面回答“原料最多增加10(桶牛奶)”并不是完全科学的。
5.模型通常形式...(Generate...)
从LINGO菜单中选用“Generate...”命令或直接按Ctrl+G组合键可以创建当前模型的代数形式、LINGO模型或MPS格式文本。
6.选项...(Options...)
从LINGO菜单中选用“Options...”命令、单击“Options...”按钮或直接按Ctrl+I组合键可以改变一些影响LINGO模型求解时的参数。
该命令将打开一个含有7个选项卡的窗口,你可以通过它修改LINGO系统的各种参数和选项。
如上图。
修改完以后,你如果单击“Apply(应用)”按钮,则新的设置马上生效;如果单击“OK(确定)”按钮,则新的设置马上生效,并且同时关闭该窗口。
如果单击“Save(保存)”按钮,则将当前设置变为默认设置,下次启动LINGO时这些设置仍然有效。
单击“Default(缺省值)”按钮,则恢复LINGO系统定义的原始默认设置(缺省设置)。
(1)Interface(界面)选项卡
选项组
选项
含义
General
(一般选项)
ErrorsInDialogs(错误对话框)
如果选择该选项,求解程序遇到错误时将打开一个对话框显示错误,你关闭该对话框后程序才会继续执行;否则,错误信息将在报告窗口显示,程序仍会继续执行
SplashScreen
(弹出屏幕)
如果选择该选项,则LINGO每次启动时会在屏幕上弹出一个对话框,显示LINGO的版本和版权信息;否则不弹出
StatusBar
(状态栏)
如果选择该选项,则LINGO系统在主窗口最下面一行显示状态栏;否则不显示
StatusWindow
(状态窗口)
如果选择该选项,则LINGO系统每次运行LINGO|Solve命令时会在屏幕上弹出状态窗口;否则不弹出
TerseOutput
(简洁输出)
如果选择该选项,则LINGO系统对求解结果报告等将以简洁形式输出;否则以详细形式输出
Toolbar
(工具栏)
如果选择该选项,则显示工具栏;否则不显示
SolutionCutoff
(解的截断)
小于等于这个值的解将报告为“0”(缺省值是10-9)
FileFormat
(文件格式)
lg4(extended)
(lg4,扩展格式)
模型文件的缺省保存格式是lg4格式(这是一种二进制文件,只有LINGO能读出)
lng(textonly)
(lng,纯文本格式)
模型文件的缺省保存格式是lng格式(纯文本)
SyntaxColoring
(语法配色)
Linelimit
(行数限制)
语法配色的行数限制(缺省为1000)。
LINGO模型窗口中将LINGO关键此显示为兰色,注释为绿色,其他为黑色,超过该行数限制后则不再区分颜色。
特别地,设置行数限制为0时,整个文件不再区分颜色。
Delay(延迟)
设置语法配色的延迟时间(秒,缺省为0,从最后一次击键算起)。
ParenMatch
(括号匹配)
如果选择该选项,则模型中当前光标所在处的括号及其相匹配的括号将以红色显示;否则不使用该功能
CommandWindow
(命令窗口)
SendReportstoCommandWindow
(报告发送到命令窗口)
如果选择该选项,则输出信息会发送到命令窗口;否则不使用该功能
EchoInput
(输入信息反馈)
如果选择该选项,则用File|TakeCommand命令执行命令脚本文件时,处理信息会发送到命令窗口;否则不使用该功能
LineCountLimits
(行数限制)
命令窗口能显示的行数的最大值为Maximum(缺省为800);如果要显示的内容超过这个值,每次从命令窗口滚动删除的最小行数为Minimum(缺省为400)
PageSizeLimit(页面大小限制)
命令窗口每次显示的行数的最大值为Length(缺省为没有限制),显示这么多行后会暂停,等待用户响应;每行最大字符数为Width(缺省为74,可以设定为64-200之间),多余的字符将被截断
(2)GeneralSolver(通用求解器)选项卡
选项组
选项
含义
GeneratorMemoryLimit(MB)矩阵生成器的内存限制(兆)
缺省值为32M,矩阵生成器使用的内存超过该限制,LINGO将报告"Themodelgeneratorranoutofmemory"
RuntimeLimits
运行限制
Iterations
迭代次数
求解一个模型时,允许的最大迭代次数(缺省值为无限)
Time(sec)
运行时间(秒)
求解一个模型时,允许的最大运行时间(缺省值为无限)
DualComputations
(对偶计算)
求解时控制对偶计算的级别,有三种可能的设置:
·None:
不计算任何对偶信息;
·Prices:
计算对偶价格(缺省设置);
·PricesandRanges:
计算对偶价格并分析敏感性。
ModelRegeneration
(模型的重新生成)
控制重新生成模型的频率,有三种可能的设置:
·Onlywhentextchanges:
只有当模型的文本修改后才再生成模型;
·Whentextchangesorwithexternalreferences:
当模型的文本修改或模型含有外部引用时(缺省设置);
·Always:
每当有需要时。
Lineariz
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lingo 中的 Windows 命令