Lingo的基本用法

合集下载

LINGO应用教程

LINGO应用教程

第十章 LINGOLingo 软件是求解线性规划、非线性规划的数学软件,也可用于一些线性和非线性方程组的求解等。

Lingo 实际上也是最优化问题的一种建模语言,包括许多常用的数学函数供使用者建立优化模型时调用,并可以接受与其他数据文件交换数据。

第一节 LINGO 软件的基本使用方法1.1 LINGO 使用入门在windows 操作系统下启动LINGO 后,将进入LINGO 集成环境,包括主框架窗口和模型窗口两部分。

主框架窗口集成了菜单和命令按钮,模型窗口用于输入模型。

例1 求解数学模型12121212max 23..4310351200x x s t x x x x x x ++≤+≤≥≥解:在模型窗口输入LINGO 求解模型如下:输入模型后选择菜单LINGO|Solve 或者按工具栏的,LINGO开始编译模型,如有语法错误将返回一个错误的消息并指明错误出现的位置;如果通过编译,LINGO将激活Solver运算器寻求模型的最优解,首先出现Solver Status状态窗口显示模型求解的运算状态信息:状态窗口显示的信息含义如下:“Global optimal solution found”表示得到全局最优解。

“Objective value: 7.454545”表示最优目标值为7.454545。

“Total solver iterations:2” 表示迭代2次得到结果。

“V alue”给出最优解中各变量的值:x1=1.272727,x2=1.636364。

Reduced Cost 值列出最优单纯形表中判别数所在行的变量的系数,表示当变量有微小变动时,目标函数的变化率。

其中基变量的reduced cost值应为0,对于非基变量xj,相应的reduced cost值表示当某个变量xj 增加一个单位时目标函数减少的量( max型问题)。

本例中此值均为0。

SLACK OR SURPLUS值给出约束条件的松驰变量或剩余变量的值。

Lingo基本用法总结

Lingo基本用法总结

Lingo基本用法总结(除集函数部分)LINGO是用来求解线性和非线性优化问题的简易工具。

Lingo免费版可以支持30个未知数,lingo破解版可以支持几万个未知数、几万个约束条件。

当你在windows下开始运行LINGO系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO的默认模型窗口,建立的模型都都要在该窗口内编码实现。

下面举两个例子。

例1.1 如何在LINGO中求解如下的LP问题:在模型窗口中输入如下代码:min=2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;然后点击工具条上的按钮即可。

得到如下结果:所以当x1为250,x2为100时目标函数得到最大值。

算术运算符Lingo 中变量不区分大小写,以字母开头不超过32个字符算术运算符是针对数值进行操作的。

LINGO 提供了5种二元运算符: ^ 乘方 ﹡ 乘 / 除 ﹢ 加 ﹣ 减 LINGO 唯一的一元算术运算符是取反函数“﹣”。

这些运算符的优先级由高到底为:高 ﹣(取反) ^ ﹡/ 低 ﹢﹣运算符的运算次序为从左到右按优先级高低来执行。

运算的次序可以用圆括号“()”来改变。

例:在x1+x2>=350,x1>=100,2*x1+x2<=600的条件下求2*x1+3*x2的最小值 在代码窗口中编写 min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后单击上面菜单lingo 菜单下solve 键即可。

数学函数标准数学函数:@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返回-1;否则,返回1@floor(x) 返回x 的整数部分。

第3讲LINGO基本使用方法

第3讲LINGO基本使用方法
2020/1/15
新余学院 建模组
目前为止找到的可行 解的最佳目标函数值
有效步数
目标函数值的界
特殊求解程序当前运行步数: 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序)
上一页
下一页
Xinyu University MCM
优优优化化化建建建模模模
(2) min z 3x1 2x2 x3
s.t. 2x1 x2 x3 5, 4x1 3x2 x3 3 x1 x2 x3 2 x1, x2 , x3 0
2020/1/15
新余学院 建模组
上一页
下一页
Xinyu University MCM
二、在LINGO中使用集合
注意:用“[]”表示该部分内容可选。下同,不再赘述。
2020/1/15
新余学院 建模组
上一页
下一页
Xinyu University MCM
优优优化化化建建建模模模
例语1法可:以定se义tn一a个m名e[为/mstuedmenbts的er原_l始is集t/,][它:a具tt有ri成bu员tJeo_hlni、stJ]i;ll、Rose和Mike
MonthM..MonthN Jill 0 Oc1t4..Ja按n 列赋值 Oct,Nov,Dec,Jan
Rose 0 17 MonthYearM..MonthYeMariNkeOc1t201031.;.Jan2002
Oct2001,Nov2001,Dec2001 ,Jan2002
enddata
③ 集成员不放在集定义中,而在随后的数据部分来定义。
2020/1/15
新余学院 建模组

lingo基本用法

lingo基本用法

lingo基本用法以下是 9 条关于“lingo 基本用法”的内容:1. 嘿,你知道吗,lingo 里的变量定义可简单啦!就像给东西起个名字一样自然。

比如说,咱要算一堆苹果的数量,那就可以设个变量叫apple_num 呀,这不就清楚明白啦!2. 哇塞,lingo 的约束条件就像是给问题加上规矩。

就好比说,规定一个房间最多能进 10 个人,这就是个约束呀。

比如限制某种资源不能超过多少,lingo 就能很好地处理呢!3. 哎呀呀,lingo 的目标函数那可重要了!这就好比是你要去追求的目标。

比如你想让利润最大化,那目标函数就是让利润相关的表达式达到最大呀!像算怎么卖东西能赚最多钱,lingo 就能帮你找到答案哟!4. 嘿,lingo 的表达式书写也不难呢!就像写个数学式子一样。

比如 2x +3y 这么简单明了。

要计算一些关系,用它来写表达式再合适不过了!5. 哇哦,lingo 里的集合定义多有意思啊!像是把一群相关的东西归到一起。

比如把不同类型的商品归成一个集合,然后对它们进行统一的处理呀,是不是很方便呀?6. 哎呀,lingo 的求解命令一敲,就等着答案出来啦!就像你按下按钮,机器就开始工作一样。

你看,多神奇啊,一下子就知道结果了呢!7. 嘿,lingo 还能处理复杂的数据呢!就像一个聪明的小助手,不管多乱的数据它都能理清楚。

比如算一大堆乱七八糟数字的关系,lingo 绝对能应付得来呀!8. 哇,lingo 的模型建立虽然要动点脑筋,但一旦建好了,那可太好用啦!就跟盖房子一样,辛苦一点,盖好了住着就舒服啦。

你想想,自己建的模型能用起来,多有成就感呀!9. 哎呀呀,掌握了 lingo 的基本用法,那真的是能解决好多问题呢!不管是算数量还是优化方案,都不在话下。

所以呀,还不赶紧去学学,让它为你服。

Lingo的基本应用

Lingo的基本应用

第十五章Lingo的基本应用1、LINDO和LINGO软件能求解的模型:2、Lingo初级语法:语句分行书写,顺序与数学模型一致;每一条语句都要以“;”结尾;语句不区分大小写,书写方式与代数函数相近;目标函数以“min=”或者“max=”表示;注释语句用“!”开头;“>”和“>=”以及“<”和“<=”没有区别;如果不写明决策变量的取值范围,则默认为非负实数。

3、线性规划案例:生产计划每天:50桶牛奶时间480小时至多加工100公斤A1 要求:制订生产计划,使每天获利最大1)奶制品生产的Lingo模型2)Lingo求解2)Lingo求解报告//结果报告(Solution Report)4)开启灵敏度分析(Range)功能5)查看灵敏度分析(Range)必须先求解才能得到灵敏度分析报告//目标函数系数范围分析当目标函数中x1的系数(产品A1的收益)增加不超过8个单位或者减少不超过2.66667个单位时(x2系数维持不变),不需改变生产计划。

//约束条件右边值灵敏度分析如果牛奶资源的数量增加不超过10桶或者减少不超过6.666667桶(其他模型参数不变),则它将仍然作为紧缺资源;如果A1生产资源减少超过40个单位(其他模型参数不变),则它将转化为紧缺资源。

4、城市垃圾处理问题(最小吨*公里)小区供水问题(最大供水收益)代数式线性规划模型(垃圾运输)代数式线性规划模型(小区供水)5、如何表示具有下标的变量:1)从C语言的类比来理解:2)具有下标的变量可以看作某种数组变量中的元素;3)除去下标后的符号可以看作是数组变量的名称;4)下标可以看作是在数组中的索引值;5)单下标变量对应于一个一维数组,称为“简单集合”;6)多下标变量对应于一个多维数组,而多维数组可以看作是多个一维数组的笛卡尔积,称为“派生集合”。

6、Lingo中如何定义具有下标的变量?1)在Lingo中使用“集合变量”的形式表达规划模型中具有下标的变量2)定义集合变量需要三个基本要素:集合的名称集合的形式(简单集合还是派生集合?集合的元素个数是多少?)集合变量的名称7、定义简单集合的语法:集合名称/下标范围/: 变量列表;(变量之间用“,”分隔)例:brand/1..6/: a, b;(集合的名称是brand,/1..6/表示这种集合包含6个元素,下标的范围是从1到6,并且定义了两个这种集合形式的变量分别用a、b表示,该语句相当于定义了a1~a6以及b1~b6两组变量)例:type/1..4/;(也可以只定义集合形式不定义集合变量)8、定义派生集合的语法:集合名称(分量集合列表): 变量列表;1)分量集合列表分别对应于派生集合的每一个维度,定义了每一个维度分别属于哪一种简单集合2)例:product(brand, type): p, x;(集合的名称是product,该集合的第一个维度与brand集合的类型相同,第二个维度与type 集合的类型相同,并且定义了两个集合变量p和x。

LINGO基本用法与运算函数

LINGO基本用法与运算函数
LINGO的基本用法和运算 函数
例如,目标函数中有求和表达式ΣCijXij(i从1 到10,j从1到20),若用直接输入的方式,将有 200个系数与200个变量相乘再相加,需要输入 长长一大串,既不便于输入,又不便于修改, 别人看不懂,可读性较差.
LINGO提供了建模语言,能够用较少语 句描述目标函数和约束条件,为建立大规 模数学规划模型提供了方便.我们以一个 运输规划模型为例说明其用法。
办法是用现成软件求解.LINGO是专门
用来求解各种规划问题的软件包,其功
能十分强大,是解决最优化问题的最佳
选择。
LINGO的基本用法和运算 函数
§1.1 LINGO 入门
LINGO的基本用法和运算 函数
一、概况
LINGO 是 美 国 LINDO 系 统 公 司 ( Lindo SystemInc)开发的求解数学规划系列软件中的一 个(其它软件为LINDO,GINO,What’s Best等 等),的主要功能是求解大型线性、非线性和整数 规 划 , 目 前 的 版 本 是 11.0 . 可 以 从 Internet 网 址 http://下载该软件的安装文件lingo11.exe,执行该 文件即可在计算机内安装LINGO 软件系统,首次 运行该软件时,要求用户输入密码,如果输入了正 确的密码,则该软件就成了正式版,如果密码不对 或不输入密码,则该软件就成为演示版.
1.目标函数(求某个数学表达式的最大值或最 小值);
2. 决策变量,即目标函数值取决于哪些变量;
3. 约束条件,即对变量附加一些条件限制(等 式或不等式).
LINGO的基本用法和运算 函数
例1:某工厂有两条生产线,分别用来生产 M和P两种型号的产品,利润分别为200元/个 和300元/个,生产线的最大生产能力分别为 每日100和120,生产线每生产一个M产品需 要1个劳动日进行调试、检测等工作,而每个 P产品需要2个劳动日,该厂每天只有160个 劳动日可用,假如原材料等其它条件不受限 制,问应如何安排生产计划,使获得的利润 最大?

LINGO简易用法

LINGO简易用法

LINGO 是用来求解线性和非线性运筹学优化问题的简易工具。

LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LING 高效的求解器可快速求解并分析结果。

1、LINGO快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。

在主窗口内的标题为LINGO Model – LINGO1 的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。

下面举两个例子。

例 1.1 如何在LINGO 中求解如下的LP 问题:在模型窗口中输入如下代码:然后点击工具条上的按钮a134 即可。

例 1.2使用LINGO软件计算6个发点8个收点的最小费用运输问题。

产销单位运价如下表。

使用LINGO 软件,编制程序如下:然后点击工具条上的按钮a134 即可。

2、LINGO中的集对实际问题建模的时候,总会遇到一群或多群相联系的对象,比如工厂、消费者群体、交通工具和雇工等等。

LINGO 允许把这些相联系的对象聚合成集(sets)。

一旦把对象聚合成集,就可以利用集来最大限度的发挥LINGO建模语言的优势。

现在我们将深入介绍如何创建集,并用数据初始化集的属性。

学完本节后,你对基于建模技术的集如何引入模型会有一个基本的理解。

2.1 为什么使用集集是LINGO建模语言的基础,是程序设计最强有力的基本构件。

借助于集,能够用一个单一的、长的、简明的复合公式表示一系列相似的约束,从而可以快速方便地表达规模较大的模型。

2.2 什么是集集是一群相联系的对象,这些对象也称为集的成员。

一个集可能是一系列产品、卡车或雇员。

每个集成员可能有一个或多个与之有关联的特征,我们把这些特征称为属性。

属性值可以预先给定,也可以是未知的,有待于LINGO求解。

LINGO 有两种类型的集:原始集(primitive set)和派生集(derived set)。

LINGO用法

LINGO用法

域名
含义
可能的显示
Model Class
当前模型的类 型
LP,QP,ILP,IQP,PILP, PIQP,NLP, INLP,PINLP (以I开头表示IP,以PI开 头表示PIP)
"Global Optimum", "Local Optimum",
State
"Feasible", "Infeasible"(不可行), 当前解的状态 "Unbounded"(无界),
"Interrupted"(中断),
"Undetermined"(未确定)
Objective
当前解的目标 函数值
实数
当前约束不满 Infeasibility足是的不总满量足(的不约
束的个数)
实数(即使该值=0,当前解也可能不可 行,因为这个量中没有考虑用上下界形式 给出的约束)
Iterations
目前为止的迭 代次数
例1.1 如何在LINGO中求解如下的LP问题: 在模型窗口中输入如下代码: min=2*x1+3*x2; x1+x2>=350; x1>=100;
2*x1+x2<=600;
然后点击工具条上的按钮 即可。 >=和<=可写成>和< 一个表达式可写成多行,如 min=2*x1 +3*x2; LINGO WINDOWS命令
变量框(Variables)
Total显示当前模型的全部变量数,Nonlinear显示其中的非线性变
量数,Integers显示其中的整数变量数。非线性变量是指它至少处于某
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

例2:基金的优化使用(2001年建模竞赛C题)
假设某校基金会得到了一笔数额为M万元的基金, 打算将其存入银行,校基金会计划在n年用部分本 息奖励优秀师生,要求每年的奖金额相同,且在n 年仍保留原基金数额.银行存款税后年利率表如下:
银行存款税后利率表 存期 税后年利率% 1年 1.8 2年 2.16 3年 2.592 5年 2.88
解:设两种产品的生产量分别为 x1 和 x2 , 则该问题的数学模型为: 目标函数:max z = 200 x1 + 300 x2
x1 ≤ 100 x ≤ 120 2 约束条件: x1 + 2 x2 ≤ 160 xi ≥ 0, i = 1, 2
在Model窗口内输入如下模型: max=200*x1+300*x2; x1<=100; x2<=120; x1+2*x2<=160; 注:Lingo默认所有的决策变量都非负,因 而变量非负条件可以不必输入.
Lingo的主要功能特色:
既能求解线性规划问题,也有较强的求解非线性规 划问题的能力; 输入模型简练直观; 运行速度快,计算能力强; 内置建模语言,提供几十个内部函数,从而能以较 少语句,较直观的方式描述较大的优化模型; 将集合的概念引入编程语言,很容易将实际问题转 化为lingo模型; 能方便的与Excel,数据库等其他软件交换数据.
Lingo的语法规定:
求目标函数的最大值或最小值分别用"max="或"min= "来 表示; 每个语句必须以分号";"结束,每行可以有多个语句,语 句可以跨行; 每个语句必须以字母开头,由字母,数字和下划线所组成, 长度不超过32个字符,不区分大小写; 可以给语句加上标号,例如[OBJ] max=200*x1+300*x2; 以!开头,以;结束的语句是注释语句; 如果对变量的取值范围没有作特殊说明,则默认所有决策变 量都非负; Lingo模型以语句"Model:"开头,以"End"结束,对于 比较简单的模型,这两个语句可以省略.
于是得到模型如下:
max S ai xi = S , i = 1, 2,L ,5 6 s.t. ∑ xi = M i =1 a5 x6 = M
这是线性规划模型,用Lingo软件求解,令 M=5000,编写程序如下: Max=S; 1.018*x1=S; 1.0432*x2=S; 1.07776*x3=S; 1.07776*1.018*x4=S; 1.144*x5=S; 1.144*x6=M; M=5000; x1+x2+x3+x4+x5+x6=M; 优化结果:求解得到优化结果:目标函数值, 优化结果 即每年度的奖金数额S=135.2227万元,存款 方案如下表:
校基金会希望获得最佳的基金使用计划,以提高每 年的奖金额,请在M=500万元,n=5年的情况下设 计具体存款方案.
解:分析 分析:假定首次发放奖金的时间是在基金
到位后一年,以后每隔一年发放一次,每年发 放的时间大致相同,校基金会希望获得最佳的 基金使用计划,以提高每年的奖金额,且在n年 末保留原基金数额M,实际上n年中发放的奖金 总额来自于利息.如果全部基金都存为一年定 期,每年都用到期利息发放奖金,则每年奖金 总数为5000*0.018=90万元,这是没有优化的存 款方案.显然,准备在两年后使用的款项应当 存成两年定期,比存两次一年定期的收益高, 以此类推.目标是合理分配基金的存款方案, 使得n年的利息总额最多.
经分析得到两点结论: (1)一次性存成最长期,优于两个(或两个以上) 叫短期的组合(中途转存). (2)当存款年限需要组合时,收益比与组合的 先后次序无关.
建立模型: 建立模型:把总基金M分成5+1份,分别用x1,x2, …,x6表示,其中x1,x2,…,x5分别存成1~5年定期, 到期的本息合计用于当年发放奖金,x6存5年定期, 到期的本息合计等于原基金总数M.用S表示每年 用于奖励优秀师生的奖金额,用ai表示第i年的最 优收益比. 目标函数是每年的奖金额最大,即maxS. 约束条件有3个:各年度的奖金数额相等; 基金总数为M; n年末保留原基金总额M.
定义: 定义:收益比a=(本金+利息)/本金. 于是存2年的收益比a2=1+2.16%*2=1.0432. 按照银行存款税后利率表计算得到各存款年 限对应的最优收益比如下表:
各存款年限对应的最优收益比 存期年限 最优收益比 1年 1.018 2年 1.0432 3年 1.07776 4年(3+1方式) 1.09715968 5年 1.144
最优存款方案 变量 数值/万元 x1 132.8317 x2 129.6230 x3 125.4664 x4 123.2479 x5 118.2016 x6 4370.629

该报告说明:运行0步找到全局最优解,目标函数值为 29000,变量值分别为:x1=100, x2=30. "Reduced Cost" 的含义是缩减成本系数,"Row" 是输入模型中的行号, "Slack or Surplus"的意思是松弛(<=)或剩余(>=) ,当约 束条件的左右两边相等时,其值为零,如果约束条件无 法满足,即没有可行解,则值为负数."Dual Price"为 影子价格,如Row 2影子价格50,含义是如果该生产线 最大生产能力增加1,能使目标函数,即利润增加50.
Lingo的基本用法
Lingo入门
我们遇到的许多优化问题都可以归结为规划问题, 如线划等,当遇到变量较多或者约束条件表 达式较复杂等情况时,想用手工计算来求解这类问题几 乎是不可能的,编程计算虽然可行,但工作量大,程序 长而繁琐,稍不小心就会出错,还可能需要花费大量的 时间和精力.可行的办法是用现成的软件求解,Lingo 是专门用来求解各种规划问题的软件包,其功能十分强 大,是求解优化模型的最佳选择.
如果模型有语法错误,则弹出一个标题为 "LINGO Error Message"的窗口,指出在哪 一行,有怎样的错误.改正错误以后再求解, 如果语法通过,Lingo内部所带的求解程序求出 模型的解,然后弹出一个标题为"LINGO Solver Status"的窗口,其内容为变量个数,约 束条件个数,优化状态,非零变量个数,耗费 内存,所花时间等信息,点击Close关闭该窗口, 屏幕上出现标题为"Solution Report"的信息窗 口,显示优化计算的步数,优化后的目标函数, 列出各变量的计算结果,如下:
Lingo的基本用法
下列的模型窗口用于输入模型,可以在该窗 口内用基本类似于数学公式的输入小模型规划
一个优化模型由以下三部分组成:
目标函数:一般表示成求某个数学表达式的 最大值或最小值; 决策变量:目标函数值取决于哪些变量; 约束条件:对变量附加一些条件限制(通常 用等式或不等式表示)
例1:某工厂有两条生产线,分别用来生 产M和P两种型号的产品,利润分别为200 元/个和300元/个,生产线的最大生产能 力分别为每日100和120,生产线每生产 一个M产品需要1个劳动日(1个工人工作 8小时称为1个劳动日)进行调试,检测等 工作,而每个P产品需要2个劳动日,该 工厂工人每天共计能提供160劳动日,假 如原材料等其他条件不受限制,问应如何 安排生产计划,才能使获得的利润最大?
相关文档
最新文档