LINGO使用教程 - 图文(5)

2019-08-31 21:03

Lingo使用教程

我们在模型的数据部分用如下代码从EXECL中引入数据:

PRODUCT,MACHINE,WEEK,ALLOWED,x,y=@OLE('D:\\IMPORT.XLS'); @OLE('D:\\IMPORT.XLS')=rate; 等价的描述为

PRODUCT,MACHINE,WEEK,ALLOWED,x,y

=@OLE('D:\\IMPORT.XLS', PRODUCT,MACHINE,WEEK,ALLOWED,x,y); @OLE('D:\\IMPORT.XLS',rate)=rate;

这一等价描述使得变量名和Ranges不同亦可。 4.@ranged(variable_or_row_name)

为了保持最优基不变,变量的费用系数或约束行的右端项允许减少的量。 5.@rangeu(variable_or_row_name)

为了保持最优基不变,变量的费用系数或约束行的右端项允许增加的量。 6.@status()

返回LINGO求解模型结束后的状态: 0 Global Optimum(全局最优) 1 Infeasible(不可行) 2 Unbounded(无界) 3 Undetermined(不确定) 4 Feasible(可行)

5 Infeasible or Unbounded(通常需要关闭―预处理‖选项后重新求解模型,以确定模型究竟是不可行还是无界)

6 Local Optimum(局部最优)

7 Locally Infeasible(局部不可行,尽管可行解可能存在,但是LINGO并没有找到一个)

8 Cutoff(目标函数的截断值被达到)

9 Numeric Error(求解器因在某约束中遇到无定义的算术运算而停止)

通常,如果返回值不是0、4或6时,那么解将不可信,几乎不能用。该函数仅被用在模型的数据部分来输出数据。

例4.17

第21页(共59页)

Lingo使用教程

model:

min=@sin(x); data:

@text()=@status(); enddata end

部分计算结果为:

Local optimal solution found at iteration: 33

Objective value: -1.000000 6

Variable Value Reduced Cost X 4.712388 0.000000

结果中的6就是@status()返回的结果,表明最终解是局部最优的。 7.@dual

@dual(variable_or_row_name)返回变量的判别数(检验数)或约束行的对偶(影子)价格(dual prices)。

4.9 辅助函数

1.@if(logical_condition,true_result,false_result)

@if函数将评价一个逻辑表达式logical_condition,如果为真,返回true_ result,否则返回false_result。

例4.18 求解最优化问题 minf(x)?g(y)??100?2xx?0?f(x)??x?0?2x???60?3yy?0 s.t.?g(y)??y?0?2y??s?y?30?x,y?0?其LINGO代码如下: model: min=fx+fy;

fx=@if(x #gt# 0, 100,0)+2*x; fy=@if(y #gt# 0,60,0)+3*y; x+y>=30; end

2.@warn(’text’,logical_condition)

如果逻辑条件logical_condition为真,则产生一个内容为’text’的信息框。 例4.19 示例。 model: x=1;

@warn('x是正数',x #gt# 0); end

§5 LINGO WINDOWS命令

第22页(共59页)

Lingo使用教程

5.1 文件菜单(File Menu) 1. 新建(New)

从文件菜单中选用―新建‖命令、单击―新建‖按钮或直接按F2键可以创建一个新的―Model‖窗口。在这个新的―Model‖窗口中能够输入所要求解的模型。

2. 打开(Open)

从文件菜单中选用―打开‖命令、单击―打开‖按钮或直接按F3键可以打开一个已经存在的文本文件。这个文件可能是一个Model文件。

3. 保存(Save)

从文件菜单中选用―保存‖命令、单击―保存‖按钮或直接按F4键用来保存当前活动窗口(最前台的窗口)中的模型结果、命令序列等保存为文件。

4. 另存为...(Save As...)

从文件菜单中选用―另存为...‖命令或按F5键可以将当前活动窗口中的内容保存为文本文件,其文件名为你在―另存为...‖对话框中输入的文件名。利用这种方法你可以将任何窗口的内容如模型、求解结果或命令保存为文件。

5. 关闭(Close)

在文件菜单中选用―关闭‖(Close)命令或按F6键将关闭当前活动窗口。如果这个窗口是新建窗口或已经改变了当前文件的内容,LINGO系统将会提示是否想要保存改变后的内容。

6. 打印(Print)

在文件菜单中选用―打印‖ (Print)命令、单击―打印‖按钮或直接按F7键可以将当前活动窗口中的内容发送到打印机。

7. 打印设置(Print Setup...)

在文件菜单中选用―打印设置...‖命令或直接按F8键可以将文件输出到指定的打印机。 8. 打印预览(Print Preview)

在文件菜单中选用―打印预览...‖命令或直接按Shift+F8键可以进行打印预览。 9. 输出到日志文件(Log Output...)

从文件菜单中选用―Log Output...‖命令或按F9键打开一个对话框,用于生成一个日志文件,它存储接下来在―命令窗口‖中输入的所有命令。

10.提交LINGO命令脚本文件(Take Commands...)

从文件菜单中选用―Take Commands...‖命令或直接按F11键就可以将LINGO命令脚本(command script)文件提交给系统进程来运行。

11.引入LINGO文件(Import Lingo File...)

从文件菜单中选用―Import Lingo File...‖命令或直接按F12键可以打开一个LINGO格式模型的文件,然后LINGO系统会尽可能把模型转化为LINGO语法允许的程序。

12.退出(Exit)

从文件菜单中选用―Exit‖命令或直接按F10键可以退出LINGO系统。 5.2 编辑菜单(Edit Menu) 1. 恢复(Undo)

从编辑菜单中选用―恢复‖(Undo)命令或按Ctrl+Z组合键,将撤销上次操作、恢复至其前的状态。

2. 剪切(Cut)

从编辑菜单中选用―剪切‖(Cut)命令或按Ctrl+X组合键可以将当前选中的内容剪切至

第23页(共59页)

Lingo使用教程

剪贴板中。

3. 复制(Copy)

从编辑菜单中选用―复制‖(Copy)命令、单击―复制‖按钮或按Ctrl+C组合键可以将当前选中的内容复制到剪贴板中。

4. 粘贴(Paste)

从编辑菜单中选用―粘贴‖(Paste)命令、单击―粘贴‖按钮或按Ctrl+V组合键可以将粘贴板中的当前内容复制到当前插入点的位置。

5. 粘贴特定..(Paste Special。。)

与上面的命令不同,它可以用于剪贴板中的内容不是文本的情形。 6. 全选(Select All)

从编辑菜单中选用―Select All‖命令或按Ctrl+A组合键可选定当前窗口中的所有内容。 7. 匹配小括号(Match Parenthesis)

从编辑菜单中选用―Match Parenthesis‖命令、单击―Match Parenthesis‖按钮或按Ctrl+P组合键可以为当前选中的开括号查找匹配的闭括号。

8. 粘贴函数(Paste Function)

从编辑菜单中选用―Paste Function‖命令可以将LINGO的内部函数粘贴到当前插入点。 5.3 LINGO菜单 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…,选择General Solver Tab, 在Dual Computations列表框中,选择Prices and Ranges选项。灵敏性分析耗费相当多的求解时间,因此当速度很关键时,就没有必要激活它。

下面我们看一个简单的具体例子。

例5.1某家具公司制造书桌、餐桌和椅子,所用的资源有三种:木料、木工和漆工。生产数据如下表所示:

木料 漆工 木工 成品单价 每个书桌 8单位 4单位 2单位 60单位 每个餐桌 6单位 2单位 1.5单位 30单位 每个椅子 1单位 1.5单位 0.5单位 20单位 现有资源总数 48单位 20单位 8单位

第24页(共59页)

Lingo使用教程

若要求桌子的生产量不超过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;

求解这个模型,并激活灵敏性分析。这时,查看报告窗口(Reports Window),可以看到如下结果。

Global optimal solution found at iteration: 3

Objective value: 280.0000 Variable Value Reduced Cost DESKS 2.000000 0.000000 TABLES 0.000000 5.000000 CHAIRS 8.000000 0.000000 Row Slack or Surplus Dual Price 1 280.0000 1.000000 2 24.00000 0.000000 3 0.000000 10.00000 4 0.000000 10.00000 5 5.000000 0.000000

―Global optimal solution found at iteration: 3‖表示3次迭代后得到全局最优解。 ―Objective value:280.0000‖表示最优目标值为280。 ―Value‖给出最优解中各变量的值:造2个书桌(desks), 0个餐桌(tables), 8个椅子(chairs)。所以desks、chairs是基变量(非0),tables是非基变量(0)。

―Slack or Surplus‖给出松驰变量的值:

第1行松驰变量 =280(模型第一行表示目标函数,所以第二行对应第一个约束) 第2行松驰变量 =24 第3行松驰变量 =0 第4行松驰变量 =0 第5行松驰变量 =5

―Reduced Cost‖列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时, 目标函数的变化率。其中基变量的reduced cost值应为0, 对于非基变量 Xj, 相应的 reduced cost值表示当某个变量Xj 增加一个单位时目标函数减少的量( max型问题)。本例中:变量tables对应的reduced cost值为5,表示当非基变量tables的值从0变为 1时(此时假定其他非基变量保持不变,但为了满足约束条件,基变量显然会发生变化),最优的目标函数值 = 280 - 5 = 275。

―DUAL PRICE‖(对偶价格)表示当对应约束有微小变动时, 目标函数的变化率。输出结果中对应于每一个约束有一个对偶价格。 若其数值为p, 表示对应约束中不等式右端项若增加1 个单位,目标函数将增加p个单位(max型问题)。显然,如果在最优解处约束正好取等号(也就是―紧约束‖,也称为有效约束或起作用约束),对偶价格值才可能不是0。本例中:第3、4行是紧约束,对应的对偶价格值为10,表示当紧约束

3) 4 DESKS + 2 TABLES + 1.5 CHAIRS <= 20

第25页(共59页)


LINGO使用教程 - 图文(5).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:成都九中高2014届12月生物考试题

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: