运筹学软件(LINGO)简介
(运筹学)Lindo软件

模型求解
用鼠标点击工具栏中的图标 , 或从菜单中选择Solve|Solve(Ctrl+S)命令 或从菜单中选择 命令
LINDO首先开始编译 首先开始编译 这个模型, 编译没有 这个模型 , 错误则开始求解; 错误则开始求解; 求解时会首先显示如 右 图 所 示 的 LINDO “求解器运行状态窗 口 ”。
显示整数规划当前的最佳目标值: 显示整数规划当前的最佳目标值:“N/A” (No Best IP Answer或Not Applicable)表示无答案或无意义, 表示无答案或无意义, 或 表示无答案或无意义 (整数规划当前的最佳 整数规划当前的最佳 因为这个模型中没有整数变量,不是整数规划(IP) 因为这个模型中没有整数变量,不是整数规划 目标值) 目标值 。
保存文件
选择File|Save(F5)命令把 结果报告”保存在一个文件中 选择 命令把“结果报告 保存在一个文件中 命令把 结果报告 (缺省的后缀名为 缺省的后缀名为LTX,即LINDO文本文件 文本文件) 缺省的后缀名为 即 文本文件 类似地,回到模型窗口, 类似地,回到模型窗口,可以把输入的模型保存在一个 文件中。保存的文件将来可以用File |Open(F3)和File | 文件中。保存的文件将来可以用 和 View(F4)重新打开,用前者打开的程序可以进行修改, 重新打开,用前者打开的程序可以进行修改, 重新打开 而后者只能浏览。 而后者只能浏览。 如果模型有错误,运行时会弹出出错信息报告窗口 (LINDO Error Message),则需要修改模型。 ,则需要修改模型。
一个简单的LINDO程序 一个简单的LINDO程序
例1:简单的线性规划 (LP)问题 简单的线性规划 问题
Max s .t .
2024年度LINGO软件

结果分析
对求解结果进行分析,验证模型的有 效性和可行性。
模型调整
根据结果分析,对模型进行调整和优 化,提高模型的实用性和准确性。
24
05 LINGO软件在各 个领域的应用案 例
2024/3/23
25
生产计划与调度问题
2024/3/23
生产线平衡
LINGO可以用于解决生产线平衡问题,通过优化生产线上 各个工位的任务分配,提高生产效率和资源利用率。
一些学术机构和研究团队也会分享他们的 LINGO使用经验和案例,为学习者提供更多 的学习资源和合作机会。
37
THANKS
感谢观看
2024/3/23
38
LINGO可用于金融市场预测和决策分析,通过建立预测模型和分析工具
,揭示金融市场的运行规律和趋势,为投资决策提供支持。
29
06 LINGO软件与其 他工具的集成与 应用
2024/3/23
30
与Excel的集成与应用
2024/3/23
数据交换
LINGO可以直接从Excel中导入数据,也可以将结果导出到Excel ,实现数据的无缝对接。
2024/3/23
28
金融工程与投资组合优化问题
01
投资组合优化
LINGO可以用于解决投资组合优化问题,通过优化投资组合中各个资产
的配置比例,实现风险和收益的平衡。
02
期权定价与风险管理
利用LINGO建立期权定价模型,可以准确计算期权的价值,为风险管理
提供决策依据。
2024/3/23
03
金融市场预测与决策分析
2024/3/23
整数规划算法
分支定界法、割平面法等适用于整数规划问 题的求解。
运筹学___的LINGO软件

当你在 windows 下开始运行 LINGO 系统时,会得到一个窗口: 外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主 窗口之下。在主窗口内的标题为 LINGO Model – LINGO1 的窗口是 LINGO 的默认模型窗 口,建立的模型都都要在该窗口内编码实现。下面举两个例子。 例 2.1 如何在 LINGO 中求解如下的 LP 问题:
§3 LINGO 中的集
对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群 体、交通工具和雇工等等。LINGO 允许把这些相联系的对象聚合成集(sets)。一旦把 对象聚合成集,就可以利用集来最大限度的发挥 LINGO 建模语言的优势。
-316-
3.1 什么是集 集是一群相联系的对象,这些对象也称为集的成员。一个集可能是一系列产品、卡 车或雇员。每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。 属性值可以预先给定,也可以是未知的,有待于 LINGO 求解。例如,产品集中的每个产 品可以有一个价格属性;卡车集中的每辆卡车可以有一个牵引力属性;雇员集中的每位 雇员可以有一个薪水属性,也可以有一个生日属性等等。 LINGO 有两种类型的集:原始集(primitive set)和派生集(derived set)。 一个原始集是由一些最基本的对象组成的。 一个派生集是用一个或多个其它集来定义的,也就是说,它的成员来自于其它已存 在的集。
(iii)LINGO 可以用来求解线性,非线性和整数规划问题。 (iv)LINGO NL (LINGO2) 可以用来求解线性,非线性和整数规划问题。 与 LINDO 和 GINO 不同的是,LINGO 和 LINGO NL (LINGO2) 包含了內置的建模 语言,允许以简练,直观的方式描述较大规模的优化问题,模型中所需的数据可以以一 定格式保存在独立的文件中。 (v)“what’s best!” 组件主要用于数据文件是由电子表格软件(如 LUTOS1-2-3 和 MS OFFICE 等)生成的情形。 LINDO 软件包有多种版本,但其软件內核和使用方法基本上是类似的。下面介绍 LINGO 组件的基本使用方法。
Lingo简介

6. “ltx”:Lindo格式的模型文件;
7. “mps”:MPS(数学规划系统) Lingo软件模型一般由5部分组成: 1. 集合段(SETS):“SETS:”开始,“ENDSETS”结束; 2. 目标与约束段; 3. 数据段(DATA):“DATA:”开始,“ENDDATA”结束; 4. 初始化段(INIT):“INIT:”开始,“ENDINIT”结束;
无限
800 3200
无限
4000 16000
无限
Lindo/Lingo 软件简介
Lindo是英文Linear INteractive and Discrete Optimizer 字母的缩写,可求解线性规划(LP)和二次规划(QP)。
Lingo是英文Linear INteractive and General Optimizer 字母的缩写,除了具有Lindo所有功能之外,还可以用于求 解非线性规划(NLP),也可用于一些线性和非线性方程 的求解等。
Lindo/Lingo 软件简介
Lindo/Lingo内部求解器: 1. 直接求解程序(Direct Solver)
2. 线性优化求解程序(Linear Solver)
3. 非线性优化求解程序(Nonlinear Solver) 4. 分支定界管理程序(Branch and Bound Manager)
Lindo/Lingo 软件简介
美国芝加哥大学 Linus Schrage 教授于1980年前后开发 的一套专门用于求解最优化问题的软件包。 软件包括:Lindo、Lingo、Lindo API以及What’sBest! 这四款软件分为演示版(试用版)和正式版,两者的区别 在于求解问题的规模不同。正式版又可以分为求解包 (Solver Suite)、高级版(Super)、超级版(Hyper)、 工业版(Industrial)、扩展版(Extended)。
LINGO软件介绍

LINGO 程序设计介绍在运筹学中中会遇到如规划类的题型,在这种模型中总存在着一个目标,并希望这个目标的取值尽可能的大或小,同时与这个目标有关的一系列变量之间存在一些约束。
在构造出目标函数和约束条件的表达式后,我们需要对求出这个最值和各变量的取值。
一般我们用LINGO 来对模型进行求解,本文将通过举一个简单的例子,围绕这个例子逐步学习LINGO 的使用。
LINGO 只是一个求解工具,我们主要的任务还是模型的建立!当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
一.变量、常量定义在lingo 中变量在使用前是无需定义也可以使用的。
在描述类似ij i a x ,带有下标的变量时,我们可以在使用时一一例举,即,x1,x2,x3….x8, 但这样显然很麻烦(刚接触LINGO 的时候大部分是这样使用的)。
Lingo 中可以使用sets 来预先定义这些变量,然后就可以在loop 语句方便地访问这一组变量,也可以用小x(2), a(2,3)的形式访问个别变量,这和C 语言中的数组是类似的。
1.SETS 的使用:为了定义ij i a x ,那么首先要确定下标i 和j 的取值范围。
在lingo 中用sets 来表示。
代码:SETS :Xb1 /1..8/ ;Xb2 /1..6/ ;ENDSETS其中xb1、xb2分别为下标1..8 ,1..6的名字(sets_name),这些名字在loop语句中要使用。
对于sets_name一般将它命名为有意义的名称,这个sets_name必须以字母或下划线(_)开始。
二维下标是在两个一维下标定义的基础上给定的,定义a(i,j)下标的代码如下:SETS :Xb1 /1..8/;Xb2 /1..6/ ;Xb3 (xb1,xb2);ENDSETS现在下标已经定义完成了,定义数组变量时则需在下标后加上冒号再写上变量名,代码如下:SETS :Xb1 /1..8/:x,c,b ;Xb2 /1..6/ ;Xb3 (xb1,xb2):a;ENDSETS2.DATA的使用(常量定义):在lingo中把常量理解为已经被给定某常数的变量,在DATA 中对一些变量赋值,使之成为常量。
运筹学lingo实验报告(一)

运筹学lingo实验报告(一)运筹学lingo实验报告介绍•运筹学是一门研究在给定资源约束下优化决策的学科,广泛应用于管理、工程、金融等领域。
•LINGO是一种常用的运筹学建模和求解软件,具有丰富的功能和高效的求解算法。
实验目的•了解运筹学的基本原理和应用。
•掌握LINGO软件的使用方法。
•运用LINGO进行优化建模和求解实际问题。
实验内容1.使用LINGO进行线性规划的建模和求解。
2.使用LINGO进行整数规划的建模和求解。
3.使用LINGO进行非线性规划的建模和求解。
4.使用LINGO进行多目标规划的建模和求解。
实验步骤1. 线性规划•确定决策变量、目标函数和约束条件。
•使用LINGO进行建模,设定目标函数和约束条件。
•运行LINGO求解线性规划问题。
2. 整数规划•在线性规划的基础上,将决策变量的取值限制为整数。
•使用LINGO进行整数规划的建模和求解。
3. 非线性规划•确定决策变量、目标函数和约束条件。
•使用LINGO进行非线性规划的建模和求解。
4. 多目标规划•确定多个目标函数和相应的权重。
•使用LINGO进行多目标规划的建模和求解。
实验结果•列举各个实验的结果,包括最优解、最优目标函数值等。
结论•运筹学lingo实验是一种有效的学习运筹学和应用LINGO的方法。
•通过本实验能够提高对运筹学概念和方法的理解,并掌握运用LINGO进行优化建模和求解的技能。
讨论与建议•实验过程中是否遇到困难或问题,可以进行讨论和解决。
•提出对于实验内容或方法的建议和改进方案。
参考资料•提供参考书目、文献、教材、网站等资料,以便学生深入学习和研究。
致谢•对与实验指导、帮助或支持的人员表示感谢,如老师、助教或同学等。
以上为运筹学lingo实验报告的基本框架,根据实际情况进行适当调整和补充。
实验报告应简洁明了,清晰表达实验目的、内容、步骤、结果和结论,同时可以加入必要的讨论和建议,以及参考资料和致谢等信息。
lingo在运筹学中的运用

lingo在运筹学中的运用
Lingo在运筹学中是一类特别有用的工具,它是一种针对非线性优
化问题的建模语言。
它提供了一种实现复杂求解过程的有效方法,可
以帮助企业创建可衡量的、可控的模型,本质上提高解决难题的能力。
Lingo在运筹学中的应用如下:
一、数据建模
Lingo可以帮助企业更好地利用数据分析,通过数据可视化,实时监测,以及建立超级等式和复合对象,更好地实现数据建模。
这样可以提高
数据管理能力,让企业能够更好地组织、管理、分析及设计数据模型。
二、决策模型
Lingo可以帮助企业构建复杂的决策模型,允许运筹学家在多变量制约
条件下建立决策模型。
Lingo可以在多种应用场景中使用,从传统的精
确方程求解到组合优化多目标问题,从分布式系统的模拟到深度学习
的应用模型,Lingo都有着重要的用途。
三、数学优化
Lingo可以帮助企业有效地实现数学优化目标,在模型本身的表述上,Lingo具有更快的执行速度,并且可以处理大量的数量和变量,可以表
示复杂的最优化目标函数,从而提供最佳的运行数值。
四、机器学习
Lingo在运筹学中也可以应用于机器学习领域,可以用来构建收敛性更
强的机器学习模型,比如基于复杂决策树的模型,或者用Lingo设计的模型来处理视觉捕获和多机实时分析的问题。
总结:Lingo在运筹学中具有重要的作用,它可以帮助企业更加有效地实现数据建模、决策模型、数学优化和机器学习等方面的目标,进而提高企业的解决问题的能力。
LINGO软件简介

LINGO 软件简介LINGO 软件是一个处理优化问题的专门软件,它尤其擅长求解线性规划、非线性规划、整数规划等问题.一个简单示例有如下一个混合非线性规划问题:⎪⎩⎪⎨⎧≥≤≤+++---+为整数2132121321322212121,;0,,210022..15023.027798max x x x x x x x x x x t s x x x x x x x .LINGO 程序模型:max =98x1+277x2-x1^2-0.3x1x2-2x2^2+150x3; x1+2x2+2x3<=100; x1<=2x2;gin x1;gin x2; Lingo 默认变量非负注意:binx 表示x 是0-1变量;ginx 表示x 是整数变量;bndL,x,U表示限制LxU ;freex 表示取消对x 的符号限制,即可正、可负.结果:Global optimal solution found.Objective value: 9561.200 Extended solver steps: 0 Total solver iterations: 45 Variable Value Reduced CostX1 6.000000 -76.70000X2 31.00000 -151.2000X3 16.00000 -150.0000Row Slack or Surplus Dual Price1 9561.200 1.0000002 0.000000 0.0000003 56.00000 0.000000———————— 非常简单在LINGO 中使用集合为了方便地表示大规模的规划问题,减少模型、数据表示的复杂程度,LINGO 引进了“集合”的用法,实现了变量、系数的数组化下标表示.例如:对⎪⎪⎩⎪⎪⎨⎧==-++-==≤++∑=.,,;10)0(;4,3,2,1),()())()1()(;4,3,2,1,20)(..)}(20)(450)(400{min4,3,2,1均非负INV OP RP INV I I DEM I OP I RP I INV I INV I I RP t s I INV I OP I RP I求解程序:model :sets :mark/1,2,3,4/:dem,rp,op,inv;也可以vmark/1..4/:dem,rp,op,inv;endsetsmin=sum mark:400rp+450op+20inv;也可以markI:400rpI+450opI+20invI;for markI: rpI<40;for markI|Igt1: invI=invI-1+rpI+opI-demI;inv1=10+rp1+op1-dem1;data:dem=40,60,75,35;enddataend上面程序在model…end之间有1集合定义、2数据输入和3其他三部分内容.集合定义部分从sets:到endsets:定义了一个指标集合mark可以理解为数组下标及其范围和其4个属性dem、rp、op、inv用此向量的数组变量.数据输入部分从data:到enddata依次给出常量dem的值.其他部分:给出优化目标及约束.一般而言,LINGO中建立优化模型的程序可以由五部分组成,或称为五段section:1集合段SETS:这部分以“SETS:”开始,以“ENDSETS”结束,作用在于定义必要的集合变量SET及其元素member,含义类似于数组的下标和属性attribute,含义类似于数组.2目标与约束段:这部分实际上定义了目标函数、约束条件等,但这部分没有段的开始和结束标记;该段一般常用到LINGO内部函数,尤其是和集合相关的求和函数SUM和循环函数FOR等.3数据段DATA:这部分以“DATA:”开始,以“ENDDATA”结束,作用在于对集合的属性数组输入必要的常数数据.格式为:attribute属性=value_list常数列表;常数列表中的数据之间可以用逗号、空格或回车符分隔.如果想要在运行时才对参数赋值,可以在数据段使用输入语句,其格式为“变量名=;”,但仅限对单个变量赋值,而不能用于属性变量数组的单个元素.4初始段INIT:这部分以“INIT:”开始,以“ENDINIT”结束,作用在于对集合的属性数组定义初值因为求解算法一般是迭代算法,提供一个较好的初值,能提高计算效果.定义初值的语句格式为:attribute属性=value_list常数列表;这与数据段中的用法类似.5计算段CALC:这部分以“CALC:”开始,以“ENDCALC”结束,作用在于对一些原始数据进行预处理加工,使其成为模型直接需要的数据.该段中通常是计算赋值语句.基本集合与派生集合为了处理二维数组变量等有多个下标的问题,LINGO引入了“派生集”的概念.我们把直接列出元素的指标集合叫“基本集合”,而基于其他集合派生出来的二维或多维指标集合称为“派生集”.派生集的定义格式为:派生集名原始集合1,原始集合2,…,原始集合n:属性变量列表;实际上就是笛卡儿积的意思,即:派生集={i1,i2, (i)n| i1集合1, i2集合2,…, in集合n}.1一个应用例子布局问题:某些建筑工地的位置用平面坐标a,b表示及水泥日用量d已知.现有A、B两临时料场位于P5,1、Q2,7,日储量20.问A、B两料场分别向各工地运输多少吨水泥,使总吨公里数最小若重新安排两料场的位置,应怎样安排才能使总吨公里数最小这样安排可节省多少吨公里设工地位置ai ,bi,水泥日用量为dii=1,2,…,6;料场位置xi,yi,日储量ej,j=1,2;从料场j向工地i运送量为cij.该问题的数学模型为:LINGO求解程序为:MODEL:sets:Imark/1..6/:a,b,d;Jmark/1,2/:x,y,e;IJmarkImark,Jmark:c;endsetsdata:Location for demand需求点位置;a=1.25,8.75,0.5,5.75,3,7.25;b=1.25,0.75,4.75,5,6.5,7.75;Quantities of the demand and supply供需量;d=3,5,4,7,6,11;e=20,20;enddatainit:Initial location for the supply初始点;x,y=5,1,2,7;endinitObjective function目标;OBJ min=sum IJmarki,j: ci,jxj-ai^2+yj-bi^2^1/2; demand contraints需求约束;for Imarki:DEMAND_CON SUM Jmarkj:ci,j=di;; supply constrains供给约束;for Jmarkj:SUPPLY_CON SUM Imarki:ci,j<=ej;;for Jmark: free x;free y;;2一个动态规划的例子:最短路问题从S城市到T城市之间找一条最短路径,道路情况如下:数学模型为:LINGO求解程序:model:sets:cities/s,a1,a2,a3,b1,b2,c1,c2,t/:L; 属性Li表示城市S到城市i的最优行驶路线的里程;roadscities,cities/ 派生集合roads表示的是网络中的道路;s,a1 s,a2 s,a3 由于并非所有城市间都有道路直接连接,所以将路具体列出;a1,b1 a1,b2 a2,b1 a2,b2 a3,b1 a3,b2b1,c1 b1,c2 b2,c1 b2,c2 属性Di,j是城市i到城市j的直接距离已知;c1,t c2,t/:D;endsetsD= 6 3 36 5 8 67 46 7 8 95 6;L=0,,,,,,,,; 因为Ls=0;enddatafor citiesi|igt index s: 这行中"indexs"可以直接写成"1";Li=min roadsj,i:Lj+Dj,i;; 这就是最短路关系式;endVariable ValueL S0.000000L A16.000000L A23.000000L A33.000000L B110.00000L B27.000000L C115.00000L C216.00000L T20.00000最短路径为: S-〉A3-〉B2-〉C1-〉T3指派问题设有6个人做6件事.其中cij表示第i人做第j事的收益;设第i人做第j事时xij =1,否则xij=0.该问题的规划模型:说明:其中“-”表示某人无法做该事.可令其为-表示绝对不行或0领薪不用干活LINGO求解程序:MODEL:sets:Imark/1..6/:i;Jmark/1..6/:j;IJmarkImark,Jmark:c,x;endsetsdata:第i人做第j事的收益;c=20,15,16,5,4,717,15,33,12,8,69,12,18,16,30,1312,8,11,27,19,14-99,7,10,21,10,32-99,-99,-99,6,11,13;enddataOBJ max=sum IJmarki,j: cx;每人做一项工作;for Imarki: SUM Jmarkj:xi,j=1;;每事一人做;for Jmarkj: SUM Imarki:xi,j=1;;for IJmark: bin x;本约束可以不要,因为有解时必为0或1; END4生产与销售计划问题某公司用两种原油A 和B 混合加工成两种汽油甲和乙.甲、乙两种汽油含原油A 的最低比例分别为50%和60%,每吨售价分别是4800元和5600元.该公司现有原油A 和B 的库存量分别为500吨和1000吨,还可以从市场上买到不超过1500吨的原油A.原油A 的市场价为:购买量不超500吨时单价为10000元/吨;购买量超过500吨但不超1000吨时,超过500吨部分单价为8000元/吨;购买量超过1000吨部分的单价是6000元/吨.该公司应如何安排原油的采购和加工以获得最大利润数学模型: 设原油A 用于生产甲、乙两种汽油的数量分别是x11和x12,原油B 用于生产甲、乙两种汽油的数量分别是x21和x22;购买原油A 的数量是x 吨,采购支出为cx 千元/吨.为了处理分段函数cx,将原油采购量x 分解为对应价格10千元/吨的采购量x1、对应对应价格8千元/吨的采购量x2和对应价格6千元/吨的采购量x3,它们应满足:0)500(21=-x x 表示要么x1=500要么x2=0,即x1的量不达到500时x2=00)500(32=-x x 表示要么x2=500要么x3=0,即x2的量不达到500时x3=0此时采购支出3216810)(x x x x c ++=模型改变为:LINGO 求解程序:model :init:x1=500;x2=500;x3=0;x12=1500;x22=1000;x11=0;x21=0;endinitmax=4.8x11+4.8x21+5.6x12+5.6x22-10x1-8x2-6x3; x11+x12<=x+500;x21+x22<=1000;0.5x11-0.5x21>=0;0.4x12-0.6x22>=0;x=x1+x2+x3;x1-500x2=0;x2-500x3=0;bnd0,x1,500;bnd0,x2,500;bnd0,x3,500;。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
目标与约束段
对于产品数量的平衡方程而言, 由于下标I=1时的约束关系 与I=2,3,4时有所区别(因为定义的变量INV是不包含INV(0)), 因 此把I=1的约束关系单独写出“INV(1)=10+RP(1)+OP(1)-DEM(1);”, 而对I=2,3,4对应的约束, 增加了一个逻辑表达式来刻划: @FOR(QUARTERS(I)|I#GT#1: INV(I)=INV(I-1)+RP(I)+OP(I)-DEM(I););
② 变量定界函数 @GIN(X): @BIN(X): @FREE(X): 限制X为整数. 限制X为0或1. 取消对X的符号限制.
@BND(L,X,U): 限制 L ≤ X ≤ U .
注: 有关其它函数的介绍, 请参考LINGO的帮助文件.
4、运算符说明 ① 运算符 算数运算符: +(加法), -(减法或负号), *(乘法), /(除法), ^(求幂). 关系运算符: <(即<=,小于等于), >(即>=,大于等于). 注:优化模型中的约束一般没有严格小于、严格大于关系. =(等于),
逻辑运算符: #AND#(与), #EQ#(等于), #OR#(或), #NE#(不等于), #NOT#(非); #GT#(大于).
#GE#(大于等于), #LT#(小于),#LE#(小于等于).
注: 逻辑运算的结果为“真”(TRUE)和“假”(FALSE), LINGO 中用数字1代表TRUE, 其它值都是FALSE.
2、状态窗口说明(例1)
Variables(变量数量) Total(变量总数) Nonlinear(非线性变量) Integer(整数数量)
注:由于LINGO对中文操作系 统的兼容性不好, 所以有些 显示字符和单词被截掉了.
状态窗口说明
Constraints(约束数量) Nonzeros(非零系数数量) 内存使用量 求解花费的时间
软件简介
一、集合的基本用法 二、基本集合与派生集合 三、集合的使用小结
一、集合的基本用法
例2: 某帆船公司需要决定下四个季度的帆船生产量. 下四个季度的帆船需求量分别是40条,60条,75条,25条, 这些需求必须按时满足. 每个季度正常的生产能力是40 条帆船, 每条船的生产费用为400美元. 如果加班生产, 每条船的生产费用为450美元. 每个季度末, 每条船的库 存费用为20美元. 假定生产提前期为0, 初始库存为10条 帆船. 如何安排生产可使总费用最小?
LINGO: Linear INteractive and General Optimizer 即“交互式的线性和通用优化求解器”, 它是一种专门用 于求解最优化问题的软件,由美国芝加哥大学的 Linus Schrage 教授于1980年开发, 其公司(LINDO系统公司) 的网址为: 线性规划(LP) LINGO软件能求解的优化模型: 非线性规划(NLP) 二次规划(QP)
例1的运算结果:
主 窗 口 模型窗口 报告窗口 状态窗口
1、主窗口与模型窗口说明
定 位 某 行
模 型 求 解
模 型 图 示
查 找
匹 配 括 号
显 示 解 答
选 项 设 置
文件类型
*.lg4:LINGO格式的模型文件 *.lng:文本格式的模型文件 *.ldt: LINGO数据文件 *.ltf: LINGO命令脚本文件 *.lgr: LINGO报告文件 *.ltx: LINGO格式的文本文件 *.mps: 数学规划系统格式的模型文件
⑥ 在LINGO中, 以@开头的 都是函数的调用. ⑦ LINGO已假定所有变量 非负, 可用限定变量取值 范围的函数@BIN、@GIN、@FREE 、@BND改变变 量的非负假定.
2、关键字说明 MODEL: END TITLE 主要关键字:
(多为蓝色字符)
模型的开始 模型的结束 对模型命名 目标最大化 集合段开始 集合段结束 数据段开始 数据段结束
分析: 该问题考虑的是4个季度, 求解过程中需要设16 个变量(需求量、正常生产的产量、加班生产的产量、库 存量等), 若考虑的是更多季度(如1000个)的时候, 则问 题比较麻烦. 下面利用集合的概念, 可简化问题的求解. 解: 用DEM,RP,OP,INV分别表示需求量、正常生产的产 量、加班生产的产量、库存量, 则DEM,RP,OP,INV对每 个季度都应该有一个对应的值, 即它们都是由4个元素组 成的数组.
,6; j = 1,2 .
目标函数: 总吨公里数最小
min f = ∑∑ cij ( x j − ai ) 2 + ( y j − bi ) 2
j =1 i =1 2 6
约束条件:①各工地的日用量必需满足
∑c
j =1
2
ij
= di , i = 1,
,6
约束条件:②各料场的运送量不能超过日储量
∑c
i =1
集合QUARTERS的属性
DEM
RP
OP
INV
1
集合QUARTERS
2
3
4
该模型的LINGO程序为:
集 合 段 数 据 段
目标与约束段
①集合段
语句“QUARTERS/1,2,3,4/:DEM,RP,OP,INV;”就是定 义了集合QUARTERS={1,2,3,4},以及对应于该集合的属性 DEM,RP,OP,INV,其结果正是定义了16个变量名DEM(1), DEM(2), DEM(3), ‥‥‥.
状态窗口说明
求解器状态框 模型的类型 解的状态
Objective(解的目标函数值) Infeasibility(约束不满足总量)
到目前为止的迭代次数 扩展的求解器状态框
3、报告窗口说明(例1)
得到局部最优解 变量的检验数
扩展求解步骤数
松弛或剩余变量的值
对偶价格的值
第二节 在LINGO中使用集合
② 运算符的优先级 优先级
最高
运算符
#NOT#,-(负号) ^ *,/ +,-(减法) #EQ#, #NE#, #GT#, #GE#, #LT#, #LE# #AND#,#OR#
最低
<,=,>
二、LINGO的窗口介绍
LINGO的主窗口 LINGO模型窗口 LINGO的窗口: LINGO状态窗口 LINGO报告窗口
一、LINGO的基本特征
例1: 用LINGO求解二次规划问题:
目标函数
2 max 98 x1 + 277 x2 − x12 − 0.3 x1 x2 − 2 x2
100 ⎪ ⎨ x1 ≤ 2 x2 ⎪ x , x ≥ 0 为整数 ⎩ 1 2
解: 直接在LINGO的模型窗口中输入程序:
MAX SETS: ENDSETS DATA: ENDDATA
3、LINGO函数说明 基本的数学函数 变量定界函数 文件输入输出函数 LINGO主要函数: 集合循环函数 集合操作函数 概率中的函数 结果报告函数
① 基本的数学函数 @ABS(X): @COS(X): @EXP(X): @LOG(X): 绝对值函数, 返回X的绝对值. 余弦函数,返回X的余弦值(X为弧度). 指数函数, 返回 e X 的值. 自然对数函数, 返回X的自然对数值.
目标函数是所有费用的和:
min ∑ [400 RP( I ) + 450OP ( I ) + 20 INV ( I )]
I =1
4
约束条件有:
⑴能力限制 RP ( I ) ≤ 40, I = 1, ⑵产品数量的平衡方程
,4
INV (0) = 10
INV ( I ) = INV ( I − 1) + RP ( I ) + OP ( I ) − DEM ( I ) I = 1,
运行该LINGO程序得到解答报告: 全局最优解: RP=(40,40,40,25) OP=( 0,10,35,0 ) 最小成本=78450
二、基本集合与派生集合
例3: 建筑工地的位置(用平面坐标a,b表示,距离单 位: km)及水泥日用量d(单位:t)由表2-1给出. (1)目前有两个临时料场位于P(5,1),Q(2,7), 日储量 各有20t. 求从P,Q两料场分别向各工地运送多少吨水泥, 使总的吨公里数最小. (2)为进一步减少吨公里数, 打算改建两个日储量仍各 为20t的新料场, 两个新的料场应建在何处, 节省的吨公 里数有多大?
1、程序语言说明
① LINGO程序以“MODEL”开始,以“END”结束. 它们之间由 语句组成, 且每个语句都以分号“;”结尾. ② 一行中感叹号“!”后面的文字将被认为是注释语句, 不参与模型的建立(内容为绿色字符).
③ LINGO中的语句顺序 是不重要的,因为LINGO 总是根据“Max=”或“Min=” 语句寻找目标函数,其它语句都是约束条件. ④ LINGO程序中不区分大小写字母.(实际上任何小写字 符将被转换为大写字符) ⑤ LINGO中的变量必须以字母开头,且最多不能超过32个 字符.
6
ij
≤ e j , j = 1,2
当使用临时料场时(问题(1)),决策变量只有 cij ,所以 此时的优化模型为线性规划模型; 当为新建料场选址时 (问题(2)), 决策变量为 cij 和 x j , y j ,所以在新建料场时的 优化模型是非线性规划模型(NLP).
2 6 下面先用集合的概念求解NLP模型(问题(2)), 而把现 min f = ∑∑ cij ( x j − ai ) 2 + ( y j − bi ) 2 j =1 i =1 有临时料场的位置作为初始解告诉LINGO.
大学数学建模竞赛系列讲座
主讲人:薛 震
中北大学数学系
E-mail:xuezhen@
主要内容: