好文档 - 专业文书写作范文服务资料分享网站

Lingo教程 - 图文 

天下 分享 时间: 加入收藏 我要投稿 点赞

LINGO教程

days/mon..sun/: required,start; endsets data:

!每天所需的最少职员数;

required = 20 16 13 16 19 14 12;

@text('d:\\out.txt')=days '至少需要的职员数为' start; enddata

!最小化每周所需职员数; min=@sum(days: start); @for(days(J):

@sum(days(I) | I #le# 5:

start(@wrap(J+I+2,7))) >= required(J)); end

3.@ole函数

@OLE是从EXCEL中引入或输出数据的接口函数,它是基于传输的OLE技术。OLE传输直接在内存中传输数据,并不借助于中间文件。当使用@OLE时,LINGO先装载EXCEL,再通知EXCEL装载指定的电子数据表,最后从电子数据表中获得Ranges。为了使用OLE函数,必须有EXCEL5及其以上版本。OLE函数可在数据部分和初始部分引入数据。

@OLE可以同时读集成员和集属性,集成员最好用文本格式,集属性最好用数值格式。原始集每个集成员需要一个单元(cell),而对于n元的派生集每个集成员需要n个单元,这里第一行的n个单元对应派生集的第一个集成员,第二行的n个单元对应派生集的第二个集成员,依此类推。

@OLE只能读一维或二维的Ranges(在单个的EXCEL工作表(sheet)中),但不能读间断的或三维的Ranges。Ranges是自左而右、自上而下来读。

例4.16 sets:

PRODUCT; !产品; MACHINE; !机器; WEEK; !周;

ALLOWED(PRODUCT,MACHINE,WEEK):x,y; !允许组合及属性; endsets data:

rate=0.01;

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

代替在代码文本的数据部分显式输入形式,我们把相关数据全部放在如下电子数据表中来输入。下面是D:\\IMPORT.XLS的图表。

除了输入数据之外,我们也必须定义Ranges名:PRODUCT,MACHINE,WEEK,ALLOWED,x,y. 明确的,我们需要定义如下的Ranges名:

Name Range PRODUCT B3:B4 MACHINE C3:C4

共53页 31

LINGO教程

WEEK D3:D5 ALLOWED B8:D10

X F8:F10 Y G8:G10 rate C13

为了在EXCEL中定义Ranges名:

① 按鼠标左键拖曳选择Range, ② 释放鼠标按钮,

③ 选择“插入|名称|定义”, ④ 输入希望的名字, ⑤ 点击“确定”按钮。

我们在模型的数据部分用如下代码从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(通常需要关闭“预处理”选项后重新求解

共53页 32

LINGO教程

模型,以确定模型究竟是不可行还是无界)

6 Local Optimum(局部最优)

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

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

9 Numeric Error(求解器因在某约束中遇到无定义的算术运算而停止) 通常,如果返回值不是0、4或6时,那么解将不可信,几乎不能用。该函数仅被用在模型的数据部分来输出数据。 例4.17 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)s.t.?100?2x,f(x)???2x,?60?3y,g(y)???2y,x?y?30x,y?0其LINGO代码如下: model:

min=fx+fy;

共53页 33

x?0x?0y?0y?0

LINGO教程

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命令

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

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

2. 2. 打开(Open)

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

3. 3. 保存(Save)

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

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

5. 5. 关闭(Close)

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

6. 6. 打印(Print)

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

7. 7. 打印设置(Print Setup...) 在文件菜单中选用“打印设置...”命令或直接按F8键可以将文件输出到指定的打印机。

8. 8. 打印预览(Print Preview) 在文件菜单中选用“打印预览...”命令或直接按Shift+F8键可以进行打印预览。

共53页 34

LINGO教程

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

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

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

优化模型输出到文件,有两个子菜单,分别表示两种输出格式(都是文本文件):

MPS Format(MPS格式):是IBM公司制定的一种数学规划文件格式。

MPI Format(MPI格式):是LINDO公司制定的一种数学规划文件格式。

12. User Database Info

弹出对话框,用户输入用户使用数据库时需要验证的用户名(User ID)和密码(Password),这些信息在使用@ODBC()函数访问数据库时要用到 13. 退出(Exit)

从文件菜单中选用“Exit”命令或直接按F10键可以退出LINGO系统。

5.2 编辑菜单(Edit Menu) 1. 1. 恢复(Undo)

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

2. 2. Redo

3. 3. 剪切(Cut)

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

4. 4. 复制(Copy)

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

5. 5. 粘贴(Paste)

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

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

与上面的命令不同,它可以用于剪贴板中的内容不是文本的情形。

7. 7. 全选(Select All)

从编辑菜单中选用“Select All”命令或按Ctrl+A组合键可选定当前窗口中的所有内容。

8. 8. Find

9. 9. Find Next 10. Replace 11. Go to Line

12. 匹配小括号(Match Parenthesis)

共53页 35

Lingo教程 - 图文 

LINGO教程days/mon..sun/:required,start;endsetsdata:!每天所需的最少职员数;required=20161316191412;
推荐度:
点击下载文档文档为doc格式
5m4ob1oaqr0fluh9baxd
领取福利

微信扫码领取福利

微信扫码分享