最优化算法第1次实验内容1.docx
《最优化算法第1次实验内容1.docx》由会员分享,可在线阅读,更多相关《最优化算法第1次实验内容1.docx(31页珍藏版)》请在冰点文库上搜索。
最优化算法第1次实验内容1
《最优化算法》实验指导书1
一、实验名称:
Lingo软件的介绍及使用
二、实验目的:
熟悉LINGO软件的使用方法、功能,会求解一般线性规划问题和简单非线性规划模型。
针对实际问题,会建立线性规划模型并求解。
三、实验内容
1、熟悉LINGO软件的启动步骤。
2、熟悉LINGO软件的各菜单、命令按钮的作用。
3、学会如何使用LINGO的帮助文件。
4、学会输入线性规划模型和简单非线性规划模型的基本格式,并能看懂求
解结果。
四、实验步骤
1启动LINGO软件的步骤。
当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:
外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGOModel–LINGO1的窗口是LINGO的默认模型窗口,建立的模型都要在该窗口内编码实现。
LINGO包含了内置的建模语言,允许以简练、直观的方式描述较大规模的优化问题。
模型中所需数据可以以一定的格式保存在独立的文件中。
下面举两个例子。
2、示例:
用LINGO求解线性规划
则在LINGO的模型窗口中输入如下代码:
min =2*x1+2*x2;
2*x1+5*x2>=12;
x1+2*x2<=10;
注:
(1)在输入目标函数时,因变量Z可不要输,只输“=”及后面表达式;
(2)用*号表示乘号
(3)每一个约束条件或目标函数后用分号“;”结束;
(4)非负约束可以不要输入,软件默认变量是非负的。
(5)可以用“!
”开始写说明语句,但说明语句后也要用分号“;”结束。
然后点击工具条上的运行图标
,屏幕上出现
Rows=3Vars=2No.integervars=0(allarelinear)
Nonzeros=8Constraintnonz=4(1are+-1)Density=0.889
Smallestandlargestelementsinabsvalue=1.0000012.0000
No.<:
1No.=:
0No.>:
1,Obj=MIN,GUBs<=1
Singlecols=0
(以上这段是对模型的描述)
Optimalsolutionfoundatstep(最优解在第1步被找到):
1
Objectivevalue(目标函数值):
4.800000
(下列显示的是最优解)
Variable(变量)Value(值)ReducedCost
(缩减成本系数)
X10.00000001.200000
X22.4000000.0000000
(下列显示的是松驰变量或剩余变量)
RowSlackorSurplusDualPrice
(行)(松弛变量或剩余变量)(检验数,对偶问题的解)
14.800000-1.000000
20.0000000-0.4000000
35.2000000.0000000
结论:
原规划的最优解是x1=0,x2=2.4;最优值为4.8
注释:
Reducedcost是指缩减成本系数,基变量的一定为0,对非基变量表示该变量每增加一个单位,目标函数值减少的量(对求解max的函数而言)。
Dualprice对偶价格,表示当对应的约束有微小变动时,目标函数的变化率。
3、LINGO软件的菜单命令(LINGOWINDOWS命令 )
(一)文件菜单(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系统。
(二)编辑菜单(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的内部函数粘贴到当前插入点。
(三)LINGO菜单
(1)求解模型(Slove)
从LINGO菜单中选用“求解”命令、单击“Slove”按钮或按Ctrl+S组合键可以将当前模型送入内存求解。
(2)求解结果...(Solution...)
从LINGO菜单中选用“Solution...”命令、单击“Solution...”按钮或直接按Ctrl+O组合键可以打开求解结果的对话框。
这里可以指定查看当前内存中求解结果的那些内容。
(3)查看...(Look...)
从LINGO菜单中选用“Look...”命令或直接按Ctrl+L组合键可以查看全部的或选中的模型文本内容。
(5)模型通常形式...(Generate...)
从LINGO菜单中选用“Generate...”命令或直接按Ctrl+G组合键可以创建当前模型的代数形式、LINGO模型或MPS格式文本。
(6)选项...(Options...)
从LINGO菜单中选用“Options...”命令、单击“Options...”按钮或直接按Ctrl+I组合键可以改变一些影响LINGO模型求解时的参数。
该命令将打开一个含有7个选项卡的窗口,你可以通过它修改LINGO系统的各种参数和选项。
如上图。
修改完以后,你如果单击“Apply(应用)”按钮,则新的设置马上生效;如果单击“OK(确定)”按钮,则新的设置马上生效,并且同时关闭该窗口。
如果单击“Save(保存)”按钮,则将当前设置变为默认设置,下次启动LINGO时这些设置仍然有效。
单击“Default(缺省值)”按钮,则恢复LINGO系统定义的原始默认设置(缺省设置)。
6。
1Interface(界面)选项卡
选项组
选项
含义
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之间),多余的字符将被截断
6.2 GeneralSolver(通用求解器)选项卡
选项组
选项
含义
GeneratorMemoryLimit(MB)矩阵生成器的内存限制(兆)
缺省值为32M,矩阵生成器使用的内存超过该限制,LINGO将报告"Themodelgeneratorranoutofmemory"
RuntimeLimits
运行限制
Iterations
迭代次数
求解一个模型时,允许的最大迭代次数(缺省值为无限)
Time(sec)
运行时间(秒)
求解一个模型时,允许的最大运行时间(缺省值为无限)
DualComputations
(对偶计算)
求解时控制对偶计算的级别,有三种可能的设置:
·None:
不计算任何对偶信息;
·Prices:
计算对偶价格(缺省设置);
·PricesandRanges:
计算对偶价格并分析敏感性。
ModelRegeneration
(模型的重新生成)
控制重新生成模型的频率,有三种可能的设置:
·Onlywhentextchanges:
只有当模型的文本修改后才再生成模型;
·Whentextchangesorwithexternalreferences:
当模型的文本修改或模型含有外部引用时(缺省设置);
·Always:
每当有需要时。
Linearization(线性化)
Degree
(线性化程度)
决定求解模型时线性化的程度,有四种可能的设置:
SolverDecides:
若变量数小于等于12个,则尽可能全部线性化;否则不做任何线性化(缺省设置)
·None:
不做任何线性化
·Low:
对函数@ABS(),@MAX(),@MIN(),@SMAX(),@SMIN(),以及二进制变量与连续变量的乘积项做线性化
·High:
同上,此外对逻辑运算符#LE#,#EQ#,#GE#,#NE#做线性化
BigM(线性化的大M系数)
设置线性化的大M系数(缺省值为106)。
Delta(线性化的误差限)
设置线性化的误差限(缺省值为10-6)。
AllowUnrestrictedUseofPrimitiveSetMemberNames
(允许无限制地使用基本集合的成员名)
选择该选项可以保持与LINGO4.0以前的版本兼容:
即允许使用基本集合的成员名称直接作为该成员在该集合的索引值(LINGO4.0以后的版本要求使用@INDEX函数)。
CheckforDuplicateNamesinDataandModel(检查数据和模型中的名称是否重复使用)
选择该选项,LINGO将检查数据和模型中的名称是否重复使用,如基本集合的成员名是否与决策变量名重复。
UseR/CformatnamesforMPSI/O(在MPS文件格式的输入输出中使用R/C格式的名称)
在MPS文件格式的输入输出中,将变量和行名转换为R/C格式
6.3LinearSolver(线性求解器)选项卡
选项组
选项
含义
Method
求解方法
求解时的算法,有四种可能的设置:
·SolverDecides:
LINGO自动选择算法
(缺省设置)
·PrimalSimplex:
原始单纯形法
·DualSimplex:
对偶单纯形法
·Barrier:
障碍法(即内点法)
InitialLinearFeasibilityTol初始线性可行性误差限
控制线性模型中约束满足的初始误差限(缺省值为3*10-6)
FinalLinearFeasibilityTol.最后线性可行性误差限
控制线性模型中约束满足的最后误差限(缺省值为10-7)
ModelReduction
模型降维
控制是否检查模型中的无关变量,从而降低模型的规模:
·Off:
不检查
·On:
检查
·SolverDecides:
LINGO自动决定(缺省设置)
PricingStrategies
价格策略(决定出基变量的策略)
PrimalSolver
原始单纯形法
有三种可能的设置:
·SolverDecides:
LINGO自动决定(缺省设置)
·Partial:
LINGO对一部分可能的出基变量进行尝试
·Devex:
用Steepest-Edge(最陡边)近似算法对所有可能的变量进行尝试,找到使目标值下降最多的出基变量
DualSolver对偶单纯形法
有三种可能的设置:
·SolverDecides:
LINGO自动决定(缺省设置)
·Dantzig:
按最大下降比例法确定出基变量
·Steepest-Edge:
最陡边策略,对所有可能的变量进行尝试,找到使目标值下降最多的出基变量
MatrixDecomposition
矩阵分解
选择该选项,LINGO将尝试将一个大模型分解为几个小模型求解;否则不尝试
ScaleModel
模型尺度的改变
选择该选项,LINGO检查模型中的数据是否平衡(数量级是否相差太大)并尝试改变尺度使模型平衡;否则不尝试
6.4 NonlinearSolver(非线性求解器)选项卡
选项组
选项
含义
InitialNonlinearFeasibilityTol.初始非线性可行性误差限
控制模型中约束满足的初始误差限(缺省值为10-3)
FinalNonlinearFeasibilityTol.最后非线性可行性误差限
控制模型中约束满足的最后误差限(缺省值为10-6)
NonlinearOptimalityTol.
非线性规划的最优性误差限
当目标函数在当前解的梯度小于等于这个值以后,停止迭代(缺省值为2*10-7)
SlowProgressIterationLimit缓慢改进的迭代次数的上限
当目标函数在连续这么多次迭代没有显著改进以后,停止迭代(缺省值为5)
Derivatives
导数
Numerical
数值法
用有限差分法计算数值导数(缺省值)
Analytical
解析法
用解析法计算导数(仅对只含有算术运算符的函数使用)
Strategies
策略
CrashInitialSolution
生成初始解
选择该选项,LINGO将用启发式方法生成初始解;否则不生成(缺省值)
QuadraticRecognition
识别二次规划
选择该选项,LINGO将判别模型是否为二次规划,若是则采用二次规划算法(包含在线性规划的内点法中);否则不判别(缺省值)
SelectiveConstraintEval
有选择地检查约束
选择该选项,LINGO在每次迭代时只检查必须检查的约束(如果有些约束函数在某些区域没有定义,这样做会出现错误);否则,检查所有约束(缺省值)
SLPDirections
SLP方向
选择该选项,LINGO在每次迭代时用SLP(SuccessiveLP,逐次线性规划)方法寻找搜索方向(缺省值)
SteepestEdge
最陡边策略
选择该选项,LINGO在每次迭代时将对所有可能的变量进行尝试,找到使目标值下降最多的变量进行迭代;缺省值为不使用最陡边策略
6.5 IntegerPre-Solver(整数预处理求解器)选项卡
选项组
选项
含义
Heuristics
启发式方法
Level
控制采用启发式搜索的次数(缺省值为3,可能的值为0-100).启发式方法的目的是从分枝节点的连续解出发,搜索一个好的整数解。
MinSeconds
每个分枝节点使用启发式搜索的最小时间(秒)
ProbingLevel
探测水平(级别)
控制采用探测(Probing)技术的级别(探测能够用于混合整数线性规划模型,收紧变量的上下界和约束的右端项的值)。
可能的取值为:
·SolverDecides:
LINGO自动决定(缺省设置)
·1-7:
探测级别逐步升高。
ConstraintCuts
约束的割(平面)
Application
应用节点
控制在分枝定界树中,哪些节点需要增加割(平面),可能的取值为:
·RootOnly:
仅根节点增加割(平面)
·AllNodes:
所有节点均增加割(平面)
·SolverDecides:
LINGO自动决定(缺省设置)
RelativeLimit
相对上限
控制生成的割(平面)的个数相对于原问题的约束个数的上限(比值),缺省值为0.75
MaxPasses
最大迭代检查的次数
为了寻找合适的割,最大迭代检查的次数。
有两个参数:
·Root:
对根节点的次数(缺省值为200)
·Tree:
对其他节点的次数(缺省值为2)
Types
类型
控制生成的割(平面)的策略,共有12种策略可供选择。
(如想了解细节,请参阅整数规划方面的专著)
6.6 IntegerSolver(整数求解器)选项卡
整数预处理程序只用于整数线性规划模型(ILP模型),对连续规划和非线性模型无效。
选项组
选项
含义
Branching
分枝
Direction
控制分枝策略中优先对变量取整的方向,有三种选择:
·Both:
LINGO自动决定(缺省设置)
·Up:
向上取整优先
·Down:
向下取整优先
Priority
控制分枝策略中优先对哪些变量进行分枝,有两种选择:
·LINGODecides:
LINGO自动决定(缺省设置)
·Binary:
二进制(0-1)变量优先
Integrality
整性
Absolute
绝对误差限
当变量与整数的绝对误差小于这个值时,该变量被认为是整数。
缺省值为10-6
Relative
相对误差限
当变量与整数的相对误差小于这个值时,该变量被认为是整数。
缺省值为8*10-6
LPSolver
LP求解程序
WarmStart
热启动
当以前面的求解结果为基础,热启动求解程序时采用的算法,有四种可能的设置:
·LINGODecides:
LINGO自动选择算法(缺省设置)
·PrimalSimplex:
原始单纯形法
·DualSimplex:
对偶单纯形法
·Barrier:
障碍法(即内点法)
ColdStart
冷启动
当不以前面的求解结果为基础,冷启动求解程序时采用的算法,有四种可能的设置:
(同上,略)
Optimality
最优性
Absolute
目标函数的绝对误差限
当当前目标函数值与最优值的绝对误差小于这个值时,当前解被认为是最优解(也就是说:
只需要搜索比当前解至少改进这么多个单位的解)。
缺省值为8*10-8
Relative
目标函数的相对误差限
当当前目标函