Lingo知识学习的教育资料.doc
《Lingo知识学习的教育资料.doc》由会员分享,可在线阅读,更多相关《Lingo知识学习的教育资料.doc(78页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、LINGOLINGO 教程教程LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立 最优化模型的语言,可以简便地表达大规模问题,利用 LINGO 高效的求解器可 快速求解并分析结果。11 LINGOLINGO 快速入门快速入门 安装:实验室的所有电脑都已经事先安装好了 Lingo 8(或者 9, 10, 11) 。如果要在自己的电脑上安装这个软件,建议从网上下载一个破解版的,按照提示一步一步地安装完毕。 简单例子:当你在 windows 系统下开始运行 LINGO 时,会得到类似于下面 的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含
2、 在主窗口之下。在主窗口内的标题为 LINGO Model LINGO1 的窗口是 LINGO 的默认模型窗口,建立的模型都要在该窗口内编码实现。下面举两个例子。例例 1 1 某工厂在计划期内要安排生产 I、II 两种产品,已知生产单位产品所需 的设备台时及 A、B 两种原材料的消耗,如表所示。产品 I产品 II设备1 28 台时原材料 A4 016kg原材料 B0 412kg该工厂每生产一件产品 I 可获利 2 元,每生产一件产品 II 可获利 3 元,问应 该如何安排生产计划使该厂获利最多?我们用下面的数学模型来描述这个问题。设 x_1、x_2 分别表示在计划期内产品 I、II 的产量。因
3、为设备的有效台时是 8,这是一个限制产量的条件,所以在确定产品 I、II 的产量时,要考虑不超 过设备的有效台时数,即可用不等式表示为x_1 + 2x_2 =0一般来说,一个优化模型将由以下三部分组成: 1.目标函数(Objective Function):要达到的目标。 2.决策变量(Decision variables):每组决策变量的值代表一种方案。在优化 模型中需要确定决策变量的最优值,优化的目标就是找到决策变量的最优 值使得目标函数取得最优。 3.约束条件(Constraints):对于决策变量的一些约束,它限定决策变量可以 取的值。在写数学模型时,一般第一行是目标函数,接下来是约束
4、条件,再接着是一些 非负限制等。在模型窗口输入如下代码:Max = 2*x1+3*x2; !This is a linear program. X1+2*x2代替大于等于。 3.我们可以添加一些注释,增加程序的可读性。注释以一个!(叹号必须在英 文状态下输入,它会自动变为绿色)开始,以;(分号)结束。 4Lingo 中不区分变量名的大小写。变量名必须以字母(A-Z)开头,后面的 字符可以是字母、数字、下划线。变量名不能超过 32 个字符。点击工具栏上的按钮或者用 Lingo 菜单下的 solve 求解这个模型,如果模型 没有语法错误,即可得到如下结果。Global optimal soluti
5、on found. 已 经找到全局最优解Objective value: 14.00000 目标 函数值Infeasibilities: 0.000000 不可 行的约束数Total solver iterations: 1 迭代 次数 Variable Value Reduced CostX1 4.000000 0.000000X2 2.000000 0.000000Row Slack or Surplus Dual Price1 14.00000 1.0000002 0.000000 1.5000003 0.000000 0.12500004 4.000000 0.000000Reduce
6、d Cost() 非基变量变为基变量时目标函数的系数必须的增加值。 Dual Price(对偶价格或者影子价格)在编译阶段没有语法错误,lingo会调用内部的求解器开始为你的模型搜索最 优解,还最后会显示一个求解状态窗口:求解状态窗口内各项:VariablesVariables BoxBox(变量框)(变量框)TotalTotal: 模型中的变量总个数 (total number of variables in the model)NonlinearNonlinear: 模型中非线形变量的个数(the number of the total variables that are nonline
7、ar)注: X * X + Y = 100; 中 X 是非线性变量,Y 是线性变量。IntegerInteger: 模型中整数变量的个数(total number of integer variables in the model)注意:计算各种变量个数时,不计算可以确定变量值的变量。如:如果约束条 件中 x=10,那么这个变量不被看做是一个变量ConstraintsConstraints BoxBoxTotalTotal:所有的约束条件个数(total constraints in the expanded model)NonlinearNonlinear:所有的非线性约束的个数(the n
8、umber of these constraints that are nonlinear)NonzeroesNonzeroes BoxBox(约束框)(约束框)Total:模型中非零系数的个数。Nonlinear:非线性变量个数。如果一个约束条件里中的所有变量都是确定的,则约束条件不进行计数。The Nonzeros box shows the total nonzero coefficients in the model and the number of these that appear on nonlinear variablesNonzeroesNonzeroes BoxBox(非
9、零框)(非零框)显示该模型的总非零系数和非线性的这些变量出现的数目。GeneratorGenerator MemoryMemory UsedUsed BoxBox求解时使用的内存量ElapsedElapsed RuntimeRuntime BoxBox求解模型时用的时间,这个会受电脑运行的其他程序的影响。SolverSolver StatusStatus BoxBoxFieldFieldDescriptionDescriptionModelModel ClassClassDisplays the models classification. Possible classes are “LP(线
10、性规划)“, “QP(二次规划)“, “ILP(整数线性规划)“, “IQP(整数二次规划)“, “PILP(纯整数线性规 划)“, “PIQP(纯整数二次规划)“, “NLP(非 线性规划)“, “INLP(整数非线性规划)“, and “PINLP(纯整数非线性规划)“.StateStateGives the Status of the current solution. Possible states are “Global Optimum(全局 最优)“, “Local Optimum(局部最优)“, “Feasible(可行)“, “Infeasible(不可行) “, “Unbou
11、nded(无界)“, “Interrupted(中断) “, and “Undetermined(不确定)“.ObjectiveObjective目标函数的当前值 Current value of the objective function.InfeasibilityInfeasibility约束条件冲突的个数IterationsIterationsNumber of solver iterations.(算法的迭代次 数)ExtendedExtended SolverSolver StatusStatus BoxBoxFieldFieldDescriptionDescriptionSolv
12、erSolver TypeTypeThe type of specialized solver in use, and will be either “B-and-B(分支定界法)“, “Global(全局最优求解法)“, or “Multistart(多个初始点求解法)“.BestBest ObjObjThe objective value of the best solution found so far.(目前得到的最优解对应的目标函 数值)ObjObj BoundBoundThe theoretical bound on the objective.(目 标函数值的理论上下界)Step
13、sStepsThe number of steps taken by the extended solver.(特殊的几种求解程序运行的步骤数:如 分支定界法已求解的分支数,全局最优法已求解的 子问题数)ActiveActiveThe number of active subproblems remaining to be analyzed(有效的步数)。Lingo 程序的一些规则: 1. 在 Lingo 中最开始都是“MAX=”或者“MIN=”开始表示求目标函数的最大 或者最小值。 2. 变量和它前面的系数之间要用“*”连接, 中间可以有空格。 3. 变量名不区分大小写,但必须以字母开始,
14、不超过 32 个字符。 4. 数学表达式结束时要用分号“;”表示结束。表达式可以写在多行上,但 是表达式中间不能用分号。 5. 在电脑系统中一般没有“小于等于”符号,在 Lingo 采用“=”表示“大于等于”。小于等于也可以用更简单 的“”表示。Lingo 模型语言:例例 1.21.2 运输问题 使用 LINGO 软件计算 6 个仓库 8 个销售地的最小费用运输问题。产销单位 运价如下表。 单 位 销 地 运 价 产地V1V1V2V2V3V3V4V4V5V5V6V6V7V7V8V8库 存 量WH1WH16267425960WH2WH24953858255WH3WH35219743351WH4W
15、H47673927143WH5WH52395726541WH6WH65522814352需求量3537223241324338 设 VOLUME_i_j 为从仓库 i 运送到销售地 j 那里的货物量, 那么我们的目 标函数可以表示为:MIN = 6 * VOLUME_1_1 + 2 * VOLUME_1_2 + 6 * VOLUME_1_3 + 7 * VOLUME_1_4 + 4 * VOLUME_1_5 + . . . 8 * VOLUME_6_5 + VOLUME_6_6 + 4 * VOLUME_6_7 + 3 * VOLUME_6_8; 这里我们只列出了 48 个项中的 9 项,输入
16、这么多的数据非常麻烦,而且容易出 错。而运用 Lingo 提供的模型语言则可以很容易的来描述这个目标函数,而且 很容易扩充模型。在数学上可以用数学符号表示目标函数为: Minimize ij COST ij VOLUME ij 运用 Lingo 模型语言来描述上面的目标函数,这样的描述简短,容易输入,容 易读,更容易理解。MIN = SUM( LINKS(I,J): COST(I,J) * VOLUME(I,J);也就是说,在仓库和销售地之间的所有可能运送调价下求运送总运费最小。下面比较一些数学表述和 Lingos 的语法Math NotationLINGO SyntaxMinimizeMIN
17、 =ijSUM( LINKS( I, J): )COST ijCOST(I,J)*VOLUME ijVOLUME(I,J)接下来看约束条件: 在模型里有两类约束,第一类是销售地要得到需要的货物量,我们称这类约束 为需求约束。第二类称为容量限制,每个仓库运出的货物量不能大于它的库存 量。先考虑第一个销售地的约束, VOLUME_1_1 + VOLUME_2_1 + VOLUME_3_1 +VOLUME_4_1 + VOLUME_5_1 +VOLUME_6_1 = 35;剩下还要输入 7 个类似的约束。用运用数学符号表述这个约束: i VOLUMEij = DEMANDj, 对每个销售地 j 成立
18、。 对应的 Lingo 模型语言描述是: FOR( VENDORS( J): SUM( WAREHOUSES( I): VOLUME( I, J) = DEMAND( J);比较一些数学符号和 Lingo 语法Math NotationLINGO Syntax对于每个销售地 jFOR( VENDORS( J): iSUM( WAREHOUSES( I): VOLUME ijVOLUME( I, J)=DEMAND jDEMAND( J);类似的仓库的容量限制用 Lingo 语言描述为: FOR( WAREHOUSES( I): SUM( VENDORS( J): VOLUME( I, J)=”
19、 。LINGO 中还能用“”表示大于等于关系。LINGO 并不支持严格小于和严格大 于关系运算符。然而,如果需要严格小于和严格大于关系,比如让 A 严格小于 B: A= 4.24.2 数学函数数学函数 LINGO 提供了大量的标准数学函数: abs(x) 返回 x 的绝对值 sin(x) 返回 x 的正弦值,x 采用弧度制 cos(x) 返回 x 的余弦值 tan(x) 返回 x 的正切值 exp(x) 返回常数 e 的 x 次方 log(x) 返回 x 的自然对数lgm(x) 返回 x 的 gamma 函数的自然对数 sign(x) 如果 x=0 时,返回不超过 x 的最大整 数;当 x=
20、required(J); end 计算的部分结果为 Global optimal solution found at iteration: 0Objective value: 22.00000Variable Value Reduced CostREQUIRED( MON) 20.00000 0.000000REQUIRED( TUE) 16.00000 0.000000REQUIRED( WED) 13.00000 0.000000REQUIRED( THU) 16.00000 0.000000REQUIRED( FRI) 19.00000 0.000000REQUIRED( SAT) 14
21、.00000 0.000000REQUIRED( SUN) 12.00000 0.000000START( MON) 8.000000 0.000000START( TUE) 2.000000 0.000000START( WED) 0.000000 0.3333333START( THU) 6.000000 0.000000START( FRI) 3.000000 0.000000START( SAT) 3.000000 0.000000START( SUN) 0.000000 0.000000 从而解决方案是:每周最少需要 22 个职员,周一安排 8 人,周二安排 2 人,周 三无需安排人
22、,周四安排 6 人,周五和周六都安排 3 人,周日无需安排人。4.84.8 输入和输出函数输入和输出函数 输入和输出函数可以把模型和外部数据比如文本文件、数据库和电子表格 等连接起来。 1 1filefile 函数函数该函数用从外部文件中输入数据,可以放在模型中任何地方。该函数的语 法格式为file(filename)。这里 filename 是文件名,可以采用相对路径 和绝对路径两种表示方式。file 函数对同一文件的两种表示方式的处理和对 两个不同的文件处理是一样的,这一点必须注意。 例例 4.144.14 以例 1.2 来讲解file 函数的用法。 注意到在例 1.2 的编码中有两处涉及
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Lingo 知识 学习 教育 资料
限制150内