数模论坛

 找回密码
 注-册-帐-号
搜索
热搜: 活动 交友 discuz
查看: 4576|回复: 7

lingo使用讨论,有兴趣的GG,MM快来参加!!!!

[复制链接]
发表于 2004-5-5 21:07:34 | 显示全部楼层 |阅读模式
<>lingo使用说明:</P>
<> </P>
<><A>§2.1  LINGO </A>的基本用法<p></p></P>
<P ><A>一、概况</A></P>
<P >LINGO是美国LINDO系统公司(Lindo System Inc)开发的求解数学规划系列软件中的一个(其它软件为LINDO,GINO,What’s Best等等),它的主要功能是求解大型线性、非线性和整数规划,目前的版本是7.0.可以从Internet网址<a href="http://www.lindo.com/" target="_blank" >http://www.lindo.com</A>下载该软件的安装文件lingo6.exe或者lingo7.exe,执行该文件即可在计算机内安装LINGO 软件系统,首次运行该软件时,要求用户输入密码,如果输入了正确的密码,则该软件就成了正式版,如果密码不对或不输入密码,则该软件就成为演示版.根据你付出的美金的多少,LINGO的不同版本对模型的变量和约束条件的数量作出不同的限制,如下表所示:<p></p></P>
<P> <p></p></P>
<DIV align=center>
<TABLE  cellSpacing=0 cellPadding=0 border=1>

<TR>
<TD  width=115>
<P  align=center>版  本<p></p></P></TD>
<TD  width=84>
<P  align=center>变量总数<p></p></P></TD>
<TD  width=98>
<P  align=center>非线性变量<p></p></P></TD>
<TD  width=85>
<P  align=center>整数变量<p></p></P></TD>
<TD  width=106>
<P  align=center>约束条件数量<p></p></P></TD></TR>
<TR>
<TD  width=115>
<P  align=center>Demo<p></p></P></TD>
<TD  width=84>
<P  align=center>300<p></p></P></TD>
<TD  width=98>
<P  align=center>30<p></p></P></TD>
<TD  width=85>
<P  align=center>30<p></p></P></TD>
<TD  width=106>
<P  align=center>150<p></p></P></TD></TR>
<TR>
<TD  width=115>
<P  align=center>Solve  Suite<p></p></P></TD>
<TD  width=84>
<P  align=center>500<p></p></P></TD>
<TD  width=98>
<P  align=center>50<p></p></P></TD>
<TD  width=85>
<P  align=center>50<p></p></P></TD>
<TD  width=106>
<P  align=center>250<p></p></P></TD></TR>
<TR>
<TD  width=115>
<P  align=center>Super<p></p></P></TD>
<TD  width=84>
<P  align=center>2000<p></p></P></TD>
<TD  width=98>
<P  align=center>200<p></p></P></TD>
<TD  width=85>
<P  align=center>200<p></p></P></TD>
<TD  width=106>
<P  align=center>1000<p></p></P></TD></TR>
<TR>
<TD  width=115>
<P  align=center>Hyper<p></p></P></TD>
<TD  width=84>
<P  align=center>8000<p></p></P></TD>
<TD  width=98>
<P  align=center>800<p></p></P></TD>
<TD  width=85>
<P  align=center>800<p></p></P></TD>
<TD  width=106>
<P  align=center>4000<p></p></P></TD></TR>
<TR>
<TD  width=115>
<P  align=center>Industrial<p></p></P></TD>
<TD  width=84>
<P  align=center>32000<p></p></P></TD>
<TD  width=98>
<P  align=center>3200<p></p></P></TD>
<TD  width=85>
<P  align=center>3200<p></p></P></TD>
<TD  width=106>
<P  align=center>16000<p></p></P></TD></TR></TABLE></DIV>
 楼主| 发表于 2004-5-5 21:13:48 | 显示全部楼层
< 21.6pt; LINE-HEIGHT: 19pt"><A>二、LINGO</A>的基本用法LINGO  的主要功能特色为:<p></p></P>< 39.6pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 19pt; tab-stops: list 39.6pt; mso-list: l43 level1 lfo31">1.输入模型简便直观;<p></p></P>< 39.6pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 19pt; tab-stops: list 39.6pt; mso-list: l43 level1 lfo31">2.运行速度很快;<p></p></P><P 39.6pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 19pt; tab-stops: list 39.6pt; mso-list: l43 level1 lfo31">3.内置建模语言,提供几十个内部函数,从而能以较少语句,较直观的方式描述较大规模的优化模型;<p></p></P>能方便地与EXCEL、数据库等其它软件交换数据
 楼主| 发表于 2004-5-5 21:36:09 | 显示全部楼层
<v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:path connecttype="rect" gradientshapeok="t"></v:path></v:shapetype>< 24pt; LINE-HEIGHT: 19pt"><v:shape><v:textbox style="mso-next-textbox: #_x0000_s1026"><TABLE cellSpacing=0 cellPadding=0 width="100%"><TR><TD><DIV><><v:shapetype><v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path connecttype="rect" gradientshapeok="t" extrusionok="f"></v:path><lock aspectratio="t" v:ext="edit"></lock></v:shapetype><v:shape><v:imagedata></v:imagedata></v:shape></P>< center" align=center>图2.1.1  LINGO的主窗口和模型窗口</P></DIV></TD></TR></TABLE></v:textbox><w:wrap type="square"></w:wrap></v:shape>启动LINGO后,在主窗口上弹出标题为“LINGO Model-LINGO1”(模型)的窗口,如图2.1.1所示,用于输入模型,你可以在该窗口内用基本类似于数学公式的形式输入小型规划模型.通常,模型有以下三部分所组成:</P><P 24pt; LINE-HEIGHT: 19pt"> </P><P 42pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 19pt; tab-stops: list 42.0pt; mso-list: l75 level1 lfo32">1.目标函数(求某个数学表达式的最大值或最小值);<p></p></P><P 42pt; TEXT-INDENT: -18pt; LINE-HEIGHT: 19pt; tab-stops: list 42.0pt; mso-list: l75 level1 lfo32">2.决策变量,即目标函数值取决于哪些变量;<p></p></P><P 24pt; LINE-HEIGHT: 19pt">约束条件,即对变量附加一些条件限制(等式或不等式)<p></p></P>
 楼主| 发表于 2004-5-5 21:37:20 | 显示全部楼层
<> </P>< 24pt; LINE-HEIGHT: 19pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt">例如有这样一个优化问题:某工厂有两条生产线,分别用来生产M和P两种型号的产品,利润分别为200元/个和300元/个,生产线的最大生产能力分别为每日100和120,生产线每生产一个M产品需要1个劳动日进行调试、检测等工作,而每个P产品需要2个劳动日,该厂每天只有160劳动日可用,假如原材料等其它条件不受限制,问应如何安排生产计划,使获得的利润最大?<p></p></P>< 24pt; LINE-HEIGHT: 19pt">设两种产品的生产量分别为<v:shapetype> <v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path connecttype="rect" gradientshapeok="t" extrusionok="f"></v:path><lock aspectratio="t" v:ext="edit"></lock></v:shapetype><v:shape><v:imagedata></v:imagedata></v:shape>和<v:shape> <v:imagedata></v:imagedata></v:shape>,则该问题的数学模型为:<p></p></P><P 24pt">目标函数  <v:shape><v:imagedata></v:imagedata></v:shape>.<p></p></P><P 24pt">约束条件  <v:shape><v:imagedata></v:imagedata></v:shape><p></p></P><P 24pt; LINE-HEIGHT: 19pt">    在Model窗口内输入<p></p></P><P 24pt; LINE-HEIGHT: 19pt">    MAX=200*X1+300*X2;<p></p></P><P 24pt; LINE-HEIGHT: 19pt">    X1&lt;=100;<p></p></P><P 24pt; LINE-HEIGHT: 19pt">    X2&lt;=120;<p></p></P><P 24pt; LINE-HEIGHT: 19pt">    X1+2*X2&lt;=160;<p></p></P><P 19pt">注:LINGO默认所有决策变量都大于零,因而变量非负条件可以不必输入.<p></p></P><P 24pt; LINE-HEIGHT: 19pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt">选菜单File|Save As(或按F<SUB>5</SUB>)将输入的模型存盘,默认文件格式为扩展名 .lg4.选File|Print(或按F<SUB>7</SUB>)可以在打印机上输出该模型.<p></p></P><P 24pt; LINE-HEIGHT: 19pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt">LINGO的语法规定:<p></p></P><P 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 19pt; tab-stops: list 21.0pt; mso-list: l38 level1 lfo129">1.        求目标函数的最大值或最小值分别用MAX=…或MIN=…来表示;<p></p></P><P 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 19pt; tab-stops: list 21.0pt; mso-list: l38 level1 lfo129">2.        每个语句必须以分号“;”结束,语句可以跨行;<p></p></P><P 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 19pt; tab-stops: list 21.0pt; mso-list: l38 level1 lfo129">3.        变量名称必须以字母(A—Z)开头,由字母、数字(0—9)和下划线所组成,长度不超过32个字符,不区分大小写;<p></p></P><P 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 19pt; tab-stops: list 21.0pt; mso-list: l38 level1 lfo129">4.        可以给语句加上标号,例如??[OBJ]  MAX=200*X1+300*X2;<p></p></P><P 21pt; TEXT-INDENT: -21pt; LINE-HEIGHT: 19pt; tab-stops: list 21.0pt; mso-list: l38 level1 lfo129">5.        以!开头的语句是注释语句.<p></p></P><P>选菜单Lingo|Solve(或按Ctrl+S),或鼠标点击“求解”按钮,如果模型有语法错误,则弹出一个标题为“LINGO Error Message”(错误信息)的窗口,指出在哪一行,有怎样的错误,改正错误以后再求解,如果语法通过,LINGO用内部所带的求解程序解出所给模型的解,然后弹出一个标题为“LINGO </P>
 楼主| 发表于 2004-5-5 21:37:51 | 显示全部楼层
< 24pt; LINE-HEIGHT: 19pt">Solver Status”(求解状态)的窗口,其内容为变量个数、约束条件个数、优化状态、非零变量个数、耗费内存、所花时间等等信息,点击Close关闭该窗口,屏幕上出现标题为“Solution Report”(解的报告)的信息窗口,显示优化计算的步数、优化后的目标函数值、列出各变量的计算结果,具体内容如下:<p></p></P>< left; mso-layout-grid-align: none" align=left>Global optimal solution found at step:        2<p></p></P>< left; mso-layout-grid-align: none" align=left>Objective value:                         29000.00<p></p></P><P left; mso-layout-grid-align: none" align=left> <p></p></P><P left; mso-layout-grid-align: none" align=left>        Variable         Value           Reduced Cost<p></p></P><P left; mso-layout-grid-align: none" align=left>               X1        100.0000           0.0000000<p></p></P><P left; mso-layout-grid-align: none" align=left>               X2        30.00000           0.0000000<p></p></P><P left; mso-layout-grid-align: none" align=left> <p></p></P><P left; mso-layout-grid-align: none" align=left>              Row    Slack or Surplus     Dual Price<p></p></P><P left; mso-layout-grid-align: none" align=left>                1        29000.00            1.000000<p></p></P><P left; mso-layout-grid-align: none" align=left>                2       0.0000000            50.00000<p></p></P><P left; mso-layout-grid-align: none" align=left>                3         90.0000           0.0000000<p></p></P><P left; mso-layout-grid-align: none" align=left>                4       0.0000000            150.0000<p></p></P><P 24pt; LINE-HEIGHT: 20pt; mso-char-indent-count: 2.0; mso-char-indent-size: 12.0pt; mso-line-height-rule: exactly">该报告说明,求解步骤为2步,目标函数值为29000,变量值分别为X1=100,X2=30,“Row”指的是输入模型中的行号,“Slack or Suplus”的意思为松弛或剩余,“Dual Price”的意思是影子价格,如报告中Row  2的剩余为0,意思是说第二行的约束条件,即第一条生产线最大生产能力没有剩余,影子价格为50,含义是:如果该生产线最大生产能力增加1,能使目标函数值,即利润增加50,由29000增加到29050.报告中Row  4的剩余为0,意思是说第四行的约束条件,即劳动日资源已经全部用完,影子价格为150,含义是:如果增加1个劳动日资源,能使目标函数值,即利润增加150,达到29150元.<p></p></P><P 10pt; LINE-HEIGHT: 20pt; mso-line-height-rule: exactly">以上结果可以保存到文件中(扩展名为.lgr),也可以通过打印机打印出来.<p></p></P><P 6pt 0cm; TEXT-INDENT: 23.65pt"><A>三、用LINGO编程语言建立模型</A></P>前面介绍的基本方法,优点是输入模型较直观,通常的数学表达式(目标函数表达式、约束条件等式或不等式)无须作大的变换即可直接输入.对于规模较小的规划模型,用直接输入的方式是有利的,如果模型的变量和约束条件个数都比较多,若仍然用直接输入方式,虽然也能求解并得出结果,但是这种做法有明显的不足之处:模型的篇幅很长,不便于分析修改和扩展,例如,目
 楼主| 发表于 2004-5-5 21:43:10 | 显示全部楼层
不支持公式输入,以上教程无法继续输入。十分抱歉!!!
发表于 2004-5-5 22:06:28 | 显示全部楼层
哪位仁兄有关于LINGO的高级用法的资料。
发表于 2005-8-2 23:50:03 | 显示全部楼层
<>是有啊!</P>
您需要登录后才可以回帖 登录 | 注-册-帐-号

本版积分规则

小黑屋|手机版|Archiver|数学建模网 ( 湘ICP备11011602号 )

GMT+8, 2024-11-27 12:50 , Processed in 0.061811 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表