lingo软件及其应用(经典)
LINGO软件及应用
LINGO8.0 软件及应用(编译)LINGO 是用来求解线性和非线性优化问题的简易工具。
LINGO 内置了一种建立最优化模型的语言,可以简便地表达大规模问题,利用LINGO 高效的求解器可快速求解并分析结果。
§1 LINGO 快速入门当你在windows 下开始运行LINGO 系统时,会得到类似下面的一个窗口:外层是主框架窗口,包含了所有菜单命令和工具条,其它所有的窗口将被包含在主窗口之下。
在主窗口内的标题为LINGO Model – LINGO1的窗口是LINGO 的默认模型窗口,建立的模型都都要在该窗口内编码实现。
下面举两个例子。
例1.1 如何在LINGO 中求解如下的LP 问题:,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x在模型窗口中输入如下代码: min =2*x1+3*x2; x1+x2>=350; x1>=100;2*x1+x2<=600;然后点击工具条上的按钮 即可。
例1.2 使用LINGO 软件计算6个发点8个收点的最小费用运输问题。
产销单位运价如下表。
model:!6发点8收点运输问题;sets:warehouses/wh1..wh6/: capacity;vendors/v1..v8/: demand;links(warehouses,vendors): cost, volume; endsets!目标函数;min=@sum(links: cost*volume);!需求约束;@for(vendors(J):@sum(warehouses(I): volume(I,J))=demand(J)); !产量约束;@for(warehouses(I):@sum(vendors(J): volume(I,J))<=capacity(I)); !这里是数据;data:capacity=60 55 51 43 41 52;demand=35 37 22 32 41 32 43 38;cost=6 2 6 7 4 2 9 54 95 3 8 5 8 25 2 1 9 7 4 3 37 6 7 3 9 2 7 12 3 9 5 7 2 6 55 5 2 2 8 1 4 3;enddataend然后点击工具条上的按钮即可。
Lingo 数学软件的使用方法
仓库 10 6 7 17 4 12 4 19 4 13 16
客 11 客 12 客 13 客 14 客 15 客 16 客 17 客 18 客 19 客 20
3 6 4 10 12 19 8 7 10 4
2 17 18 19 15 18 16 9 8 8
4 8 16 2 15 11 8 8 3 14
Lingo 数学软件的使用方法
一、Lingo 使用介绍
LINGO 是用来求解线性和非线性优化问题的简易工具。LINGO 内置了一种建立最优化模型 的语言,可以简便地表达大规模问题,利用 LINGO 高效的求解器可快速求解并分析结果。 功能:可以求解非线性规划。也可以做线性规划、整数规划。 特点:运算速度快,允许使用集合来描述大规模的优化问题;
(2) 某仓库供应某客户全部需求量时的运费(单位:万元) 仓库 1 客1 客2 客3 客4 客5 客6 客7 客8 客9 客 10 9 14 6 15 6 19 11 19 4 5 仓库 2 10 16 9 12 8 14 4 20 9 13 仓库 3 2 10 2 18 4 19 8 13 15 9 仓库 4 6 4 1 9 3 3 5 15 6 10 仓库 5 7 10 20 17 7 9 13 16 9 15 仓库 6 15 18 14 18 11 4 20 20 13 1 仓库 7 仓库 8 15 14 20 12 6 15 20 3 1 16 1 1 5 2 2 5 16 8 7 7 仓库 9 18 16 20 18 5 20 8 6 17 20
@SMAX(x1,x2,x3,…,xn)
@FLOOR(x) 最接近 x 的整数 5. 变量定界函数 @BND(L,x,U) @BIN(x) @FREE(x) @GIN(x) 限制 x 的范围 L<=x<=U x为0或1 取消对 x 的限制 x 为整数
Lingo的应用实例
Lingo应用——旅游路线最短问题题目:从北京乘飞机到东京、纽约、墨西哥城、伦敦、巴黎五个城市做旅游,每个城市去且仅去一次,再回到东京,问如何安排旅游线路,使总旅程最短。
各城市之间的航线距离如下表:运用lingo软件求解模型建立前问题分析:1.这是一个求路线最短的问题,题目给出了两两城市之间的距离,而在最短路线中,这些城市有的两个城市是直接相连接的(即紧接着先后到达的关系),有些城市之间就可能没有这种关系,所以给出的两两城市距离中有些在最后的最短路线距离计算中使用到了,有些则没有用。
这是一个0-1规划的问题,也是一个线性规划的问题。
2.由于每个城市去且仅去一次,最终肯定是形成一个圈的结构,这就导致了这六个城市其中有的两个城市是直接相连的,另外也有两个城市是不连接的。
这就可以考虑设0-1变量,如果两个城市紧接着去旅游的则为1,否则为0。
就如同下图实线代表两个城市相连为1,虚线代表没有相连为03. 因为每个城市只去一次,所以其中任何一个城市的必有且仅有一条进入路线和一条出去的路线。
求解:为了方便解题,给上面六个城市进行编号,如下表(因为北京是起点, 将其标为1)假设:设变量x ij 。
如果x ij =1,则表示城市i 与城市j 直接相连(即先后紧接到达关系),否则若x ij =0,则表示城市i 与城市j 不相连。
特别说明:x ij 和x ji 是同一变量,都表示表示城市i 与城市j 是否有相连的关系。
这里取其中x ij (I<j)的变量。
模型建立:由于这是一个最短路线的问题,且变量已经设好。
目标函数:min z=51*x12+78*x13+68*x14+51*x15+13*x16+56*x23+35*x24+21*x25+60*x26+21*x34+57*x35+70*x36+36*x45+68*x46+61*x56约束条件:1. 上面目标函数中的变量是表示两个城市是否直接相连接的关系,且最短路线是可以形成圈的,如下图实线代表两个城市相连为1,虚线代表没有相连为0如上图城市a和城市b有直接相连接的关系,所以之间变量为1,而城市a 与城市e则没有直接相连接的关系,之间变量为0。
数学软件应用之lingo
注:LINGO不询问对灵敏度进行分析,灵敏度分析需要 通过修改系统选项启动灵敏度分析后,再调用 “REPORT|RANGE”菜单命令来实现。我们可以把模 型和结果报告保存在文件中。
•运行状态窗口
Variables(变量数量) 变量总数(Total): 非线性变量数(Nonlinear): 整数变量数(Integer): Conatraints(约束数量) 约束总数(Total): 非线性约束个数( Nonlinear ):
返回本节
集循环函数
集循环函数遍历整个集进行操作。其语法为 @function(setname[(set_index_list)[|conditional_qualifier ]]:expression_list); @function相应于下面罗列的四个集循环函数之一;setname是要 遍历的集;set_ index_list是集索引列表; conditional_qualifier是用来限制集循环函数的范围,当集循环 函数遍历集的每个成员时,LINGO都要对conditional_qualifier 进行评价,若结果为真,则对该成员执行@function操作,否则跳 过,继续执行下一次循环。expression_list是被应用到每个集成 员的表达式列表,当用的是@for函数时,expression_list可以包 含多个表达式,其间用逗号隔开。这些表达式将被作为约束加到 模型中。当使用其余的三个集循环函数时,expression_list只能 有一个表达式。如果省略set_index_list,那么在 expression_list中引用的所有属性的类型都是setname集。
在LINGO中使用LINGO模型 1、在 LINGO中可以直接使用LINGO语法编写的优化 模型(优化程序)。举一个简单例题:在名为 LINGO1.lg4的模型文件中保存了一个LINGO模型, 我们现在看看如何打开它 (1)选择菜单命令“File|open(F3)”可以看到“打开文件” 对话框。 (2)打开“LINGO1.lg4”文件。 (3)选择“LINGO|Solve(Ctrl+S)”来运行这个程序。 (运行状态窗口如下图)
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软件介绍•使用Lingo解决线性规划问题步目录骤•经典线性规划问题案例解析•Lingo在解决线性规划问题中的优势•总结与展望01线性规划问题概述定义:线性规划(Linear Programming,简称LP)是数学规划的一个分支,它研究的是在一组线性约束条件下,一个线性目标函数的最大或最小值问题。
特点目标函数和约束条件都是线性的。
可行域是凸集,即对于任意两个可行解,它们的凸组合仍然是可行解。
最优解如果存在,则一定在可行域的某个顶点上达到。
定义与特点生产计划资源分配运输问题金融投资01020304企业如何安排生产,使得在满足市场需求和资源限制的前提下,成本最低或利润最大。
如何合理分配有限的资源(如资金、人力、时间等),以达到最佳的效果。
如何安排货物的运输路线和数量,使得在满足供需关系的前提下,总运费最低。
投资者如何在一定的风险水平下,使得投资收益最大。
决策变量表示问题的未知量,通常用$x_1, x_2, ldots, x_n$表示。
目标函数表示问题的优化目标,通常是决策变量的线性函数,形如$z = c_1x_1 + c_2x_2 + ldots + c_nx_n$。
约束条件表示问题的限制条件,通常是决策变量的线性不等式或等式,形如$a_{11}x_1 + a_{12}x_2 + ldots + a_{1n}x_n leq (=, geq) b_1$。
01$begin{aligned}02& text{max} quad z = c_1x_1 + c_2x_2 + ldots +c_nx_n03& text{s.t.} quad a_{11}x_1 + a_{12}x_2 + ldots + a_{1n}x_n leq (=, geq) b_1& quadquadquad vdots& quadquadquad a_{m1}x_1 + a_{m2}x_2 + ldots + a_{mn}x_n leq (=, geq) b_m•& \quad\quad\quad x_i \geq 0, i = 1, 2, \ldots, n线性规划问题数学模型end{aligned}$其中,“s.t.”表示“subject to”,即“满足……的条件下”。
Lingo软件在运筹学中的应用
Lingo软件在运筹学中的应用Lingo软件在运筹学中的应用随着信息技术的不断发展,计算机软件在各个领域中的应用越来越广泛,尤其是在运筹学领域。
运筹学是研究在复杂决策环境下,如何高效地进行决策的学科。
Lingo软件作为一款运筹学建模和求解工具,为运筹学的研究和应用带来了很大的便利和效率。
本文将介绍Lingo软件在运筹学中的应用,并通过实例来说明其实际效果。
首先,Lingo软件在线性规划问题中的应用非常广泛。
线性规划是一种数学优化技术,用于在给定的约束条件下最大化或最小化线性目标函数。
Lingo软件提供了直观的图形用户界面,使得用户可以轻松地建立线性规划模型,并通过内置的求解器进行求解。
用户只需输入决策变量、约束条件和目标函数,Lingo就能自动找到最优解。
这对于一些复杂的决策问题,如生产规划、资源调度和供应链优化等,提供了很大的帮助。
其次,Lingo软件在整数规划和混合整数规划问题中也有着广泛的应用。
整数规划是在线性规划的基础上,将决策变量限制为整数解的优化问题。
混合整数规划在整数规划的基础上,允许部分决策变量取非整数解。
这种类型的决策问题在实际中很常见,如生产工作安排、旅行路线规划和仓储优化等。
Lingo软件提供了强大的分支定界算法和割平面算法,能够有效地求解整数规划和混合整数规划问题。
用户只需调整问题的参数,Lingo就能快速找到最优解,大大减少了优化问题的求解时间。
此外,Lingo软件还可以用于非线性规划问题的建模和求解。
非线性规划是在线性规划的基础上,将决策变量限制为非线性函数的优化问题。
非线性规划在许多实际问题中都有着广泛的应用,如投资组合优化、工程设计和市场定价等。
Lingo软件提供了多种求解算法,如牛顿法、拟牛顿法和遗传算法等,能够有效地求解非线性规划问题。
用户只需选择合适的算法和调整参数,Lingo就能找到最优解或是近似最优解。
最后,Lingo软件还具有灵活的扩展性和集成性。
它可以与其他优化软件和模拟软件进行集成,提供更强大的求解能力和模型分析能力。
lingo软件的使用具体例子
1
4
0
0
3
2
3
1
0
1
3
2
0
1
3
4
1
2
0
3
5
1
1
1
1
6
0
3
0
1
7
0
0
2
3
需求
50
20
15
约束 满足需求
4 x13 x22 x3x4x550 整数约束:
x22x4x53x620
x3x52x715
xi 为整数
钢管下料问题1
当余料没有用处时,通常以总根数最少为目标
目标2(总根数) M Z 2 i x 1 n x 2 x 3 x 4 x 5 x 6 x 7
客户需求
原料钢管:每根19米
4米50根
6米20根
8米15根
问题1. 如何下料最节省 ? 节省的标准是什么?
问题2. 客户增加需求:
5米10根
由于采用不同切割模式太多,会增加生产和管理成本, 规定切割模式不能超过3种。如何下料最节省?
钢管下料
切割模式
按照客户需要在一根原料钢管上安排切割的一种组合。
4米1根 6米1根
切割多少根原料钢管,最为节省?
两种 标准
1. 原料钢管剩余总余量最小 2. 所用原料钢管总根数最少
决策变量 xi ~按第i 种模式切割的原料钢管根数(i=1,2,…7)
目标1(总余量) M Z 1 3 i x 1 n x 2 3 x 3 3 x 4 x 5 x 6 3 x 7
模式 4米根数 6米根数 8米根数 余料
vk(xk,uk)gk(uk)
资源分配问题
LINGO软件及其应用
LINGO软件及其应用LINGO 软件及其应用一、求解线性规划例题1:目标函数:max z=2x1+3x2约束条件:x1+2x2<=84x1<=174x2<=13x1,x2>=0输入语句:model:max=2*x1+3*x2;x1+2*x2<8;4*x1<17;4*x2<13;end说明:1)问题模型由MODEL:命令开始,END 结束,对简单模型可以省略。
2)目标函数必须由“min =”或“max =”开头。
3)分号是LINGO的分隔符。
LINGO中的每一行都以分号结束,如果缺少,模型将无法求解。
若一个命令或语句一行写不下,可以分多行写,但是,最后结束命令时,一定别忘了打个分号“;”,一行内也可写多个命令,只要每个用分号分开即可。
4)语句中乘号(*)不能省略,支持()的输入。
5)LINGO中<与<=均代表<=,>与>=也均代表>=。
6)LINGO中的注解必须用感叹号“!”开始,用分号结束。
在感叹号和分号之间的所有内容都将被LINGO忽略。
注释可以占据多行,也可以插入LINGO 表达式之中。
7)LINGO的命令从来不区分大小写,当你在LINGO中定义变量时,每个变量都要以26个字母开始,后面可跟数字或者下划线,最多可以是32个字符。
8)软件默认决策变量是非负的。
如果需要一个变量取负数、整数或一定范围内的值,可以通过变量限定函数加以限制。
@bin(x) 限制x为0或1@bnd(L,x,U) 限制L≤x≤U@free(x) 取消对变量x的默认下界为0的限制,即x可以取任意实数@gin(x) 限制x为整数在默认情况下,LINGO规定变量是非负的,也就是说下界为0,上界为+∞。
@free取消了默认的下界为0的限制,使变量也可以取负值。
@bnd 用于设定一个变量的上下界,它也可以取消默认下界为0的约束。
求解结果如下:Global optimal solution found.Objective value: 14.12500Total solver iterations: 1Variable Value Reduced Cost X1 4.250000 0.000000 X2 1.875000 0.000000Row Slack or Surplus Dual Price1 14.12500 1.0000002 0.000000 1.5000003 0.000000 0.12500004 5.500000 0.000000例题2 一奶制品加工厂用牛奶生产A1,A2两种奶制品,1桶牛奶可以在甲车间用12小时加工成3公斤A1,或者在乙车间用8小时加工成4公斤A2。
Lingo软件应用举例
Lingo 软件应用举例1. 简单的优化问题---- Lingo 软件的体验1.1 线性规划及线性整数规划例1. 在LINGO 中求解如下问题(线性规划):0,6002100350..32min 212112121≥≤+≥≥++x x x x x x x t s x x %----------------------------------------------------------其LINGO 代码如下:min =2*x1+3*x2;x1+x2>=350;x1>=100;2*x1+x2<=600;说明:(1) 在这里之所以没有对x1和x2进行非负的限制,是由于在默认情况下,Lingo 规定变量取非负实数(即非负要求,取值连续)(2) 若要求取整数,则函数@gin(x)限定x 取值为整数;(3) 若要求无约束,则函数@free(x)取消x 默认下界为0的限制,使x 可以取任意实数;(4) 若要求取非正数,则函数@bnd(L,x,U)可以限定L ≤x ≤U 。
%----------------------------------------------------------计算结果:Global optimal solution found at iteration: 2Objective value: 800.0000Variable Value Reduced CostX1 250.0000 0.000000X2 100.0000 0.000000Row Slack or Surplus Dual Price1 800.0000 -1.0000002 0.000000 -4.0000003 150.0000 0.0000004 0.000000 1.000000结果的解释:(1) “Global optimal solution found at iteration: 2”表示2次迭代后得到全局最优解。
Lingo的典型应用举例
下料问题 配料问题 选址问题 指派问题 投资问题 装箱问题
下料问题
例1:圆钢原材料每根长5.5m,现需要A,B,C三 种圆钢材料,长度分别为3.00根试安排下料方 式,使所需圆钢原材料的总数最少.
解:假设切割时没有损耗,一根长5.5m的圆钢截 出A,B,C三种材料的切割方式有哪些?所有可能 的下料方式见下表:
最优调运方案 最优调运方案 工地 运 量 料场A 料场B 合计 1 3 0 5 2 0 5 5 3 4 0 4 4 7 0 7 5 6 0 6 6 0 11 11 合计 20 16 36
指派问题
设有n项工作需分配给n个人去做,每人做一 项,由于各人的工作效率不同,因而完成 同一项工作所需时间也就不同,设人员i完 成工作j所需时间为 cij (称为效率矩阵),问如 何分配工作,使完成所有工作所用的总时 间最少?这类问题称为指派问题,也称最 优匹配问题,它是一类重要的组合优化问 题.
求解结果为目标函数最优值(总吨.千米数)为: 136.2275,调匀方案见下表:
最优调运方案 最优调运方案 工地 运 量 料场A 料场B 合计 1 1.25 1.25 3 2 8.75 0.75 5 3 0.5 4.75 4 4 5.75 5 7 5 3 6.5 6 6 7.25 7.75 11 合计 16 20 36
每周最低需求
a 解:用 xi表示6种蔬菜的份数, i表示蔬菜单价, bj cij 表示每周最低营养需求, 表示第i种蔬菜的 第j种养分含量,建立如下整数规划模型:
min z = ∑ ai xi
i =1 6
6 ∑ cij xi ≥ b j , j = 1, 2,L ,5 i =1 6 s.t. ∑ xi = 14 i =1 x2 ≤ 3, x4 ≤ 2 1 ≤ xi ≤ 4, i = 1,3,5, 6
LINGO软件介绍
(1) LINGO 软件介绍LINGO 是一种专门用于求解数学规划问题的软件包。
LINGO 主要用于求解线性规划、非线性规划、二次规划、动态规划和整数规划等问题,也可以用于求解一些线性和非线性方程组及代数方程求根等。
LINGO 中包含了一种建模语言和大量的常用函数,可供使用者在建立数学规划问题的模型时调用。
(2) 示例例如,用LINGO 求解线性规划问题:⎪⎪⎪⎪⎩⎪⎪⎪⎪⎨⎧==≥≥+≥+≥+≥+≥+++≥++++++++++=4,3,2,1;2,1,01002001100170010002000..153751511572521min 241423132212211124232221141312112423222114131211j i x x x xx x x x x x x x x x x x x t s x x x x x x x x z ij只需要打开LINGO ,然后按照下面的操作进行即可。
1、 模型的输入当打开LINGO 后,屏幕将出现如图1所示的窗口。
标题为“LINGO ”的窗口是主窗口,它包含所有的其他窗口以及所有命令菜单和工具栏。
里面的空白窗口用于输入LINGO 的程序代码,代码格式如下:MODEL:图1min=21*x11+25*x12+7*x13+15*x14+51*x21+51*x22+37*x23+15*x24; x11+x12+x13+x14>=2000; x21+x22+x23+x24>=1000; x11+x21>=1700;x12+x22>=1100;x13+x23>=200; x14+x24>=100; END2、 执行从Solve 菜单选择Solve 命令,或者在窗口顶部的工具栏里按Solve 按钮,LINGO 就会先对模型进行编译,检查模型是否具有数学意义以及是否符合语法要求。
如果模型不能通过这一步检查,会看到报错信息,并指出出错的语句。
第10章 Lingo软件包及其应用
第十章Lingo软件包及其应用Lingo软件包是一种专门用来求解数学规划和优化问题的软件包,由美国芝加哥大学的Linus Schrage教授创立的Lindo系统公司开发出来,可以在Windows 和Linux环境下运行,同一版次具有不同的版本,如:演示版(试用版)、学生班、高级版、超级版、工业版、扩展版等等,不同的版本对求解问题的规模、变量数目和约束条件的限制不同。
对于Lingo软件包来说,编写很简单的程序就能调用大量的外部已有数据进行优化计算,是其出色的亮点。
§9.1 Lingo软件包的基础知识(一)Lingo软件包的运算符(1)算术运算符(Arithmetic Operators)—取反(negation)^ 乘方(Exponentiation)* 乘法(Multiplication)/ 除(Division)+ 加(Addition)—减(Subtraction)(2)逻辑运算符Lingo软件包的逻辑运算符,主要用于优化计算中定义各种逻辑条件。
逻辑运算符为:#NOT# 非运算#EQ# 相等#NE# 不相等#GT# 严格大于#GE# 大于等于#LT# 严格小于#LE# 小于等于#AND# 与#OR# 或(3)关系运算符Lingo软件包中的关系运算符用在数学表达式中。
=等号<=小于等于>=大于等于注:Lingo软件包不支持严格大于和严格小于,即,在Lingo软件包的数学表达式中“>”等价于“>=”,“<”等价于“<=”。
运算符的运算优先级(Priority Level)由高到低依次为:优先级运算符最高级#NOT# —(negation)^* /+ -#EQ# #NE# #GT# #GE# #LT# #LE##AND# #OR#最低级<= = >=(4)Lingo软件包的内部函数Lingo软件包提供下列内部函数:@ABS( X) 绝对值函数@COS( X) 余弦函数e函数@EXP( X) x@FLOOR( X) 小于X的最大整数@LGM( X) ))!1(-X的自然对数X,即)!1log((-@LOG( X) 自然对数@SIGN( X) 符号函数,当X < 0时,取值-1,否则取值+1@SIN( X) 正弦函数@SMAX( X1, X2,..., XN) 求最大@SMIN( X1, X2,..., XN) 求最小@TAN( X) 正切函数@IF If函数,使用格式为:@IF(条件,T,F),即,条件为真时,得到T,否则得到F。
LINGO软件的简介与使用
LINGO软件的使用
运算符的优先级: 优先级 运算符 最高 #NOT# —(负号) ^ * / + —(减法) #EQ# #NE# #GT# #GE# #LT# #LE# #AND# #OR# <(=) = >(=) 最低
LINGO软件的使用
常用函数: ABS(X) 绝对值函数 COS(X) 余弦函数 EXP(X) 指数函数 FLOOR(X) 取整函数 LOG(X) 自然对数函数 MOD(X,Y) 模函数 POW(X,Y) 指数函数 SIGN(X) 符号函数 SIN(X) 正弦函数 SQR(X) 平方函数 SQRT(X) 平方根函数 TAN(X) 正切函数 BIN(X) 限定0-1变量 FREE(X) 取消符号限制 GIN(X) 限制整数 等等还有很多~
absx绝对值函数cosx余弦函数expx指数函数floorx取整函数logx自然对数函数modxy模函数powxy指数函数signx符号函数sinx正弦函数sqrx平方函数sqrtx平方根函数tanx正切函数binx限定01变量freex取消符号限制ginx限制整数等等还有很多lingosolverstatus求解程序状态框
LINGO软件的使用
Solver Status 求解程 序状态框: Model 模型类型 State 解的状态 Objective 最优值 Infeasibility 不满足约 束总数 Iterations 迭代次数
பைடு நூலகம்
LINGO软件的使用
Solution Report 解答报告: 解的状态 Objective value 最优值 Extended solver steps 特 殊求解程序运行步数 Total solver iterations 迭 代次数
LINGO软件应用简介
LINGO软件应用简介程序:MODEL:MAX=100*X+150*Y; !求100x+150y的最大值X<=100;Y<=120;X+2*Y<=160;END在感叹号后为注解点击求解。
首先出现求解状态框。
Array模型等级:LP 线性;QP 二次;ILP 线性整数;IQP 二次整数;PILP 线性纯整数;PIQP 二次纯整数;NLP 非线性;INLP 整数非线性;PINLP 纯整数非线性。
解的输出:Global optimal solution found at iteration: 0(找出全局最优解反复的次数)Objective value: 14500.00(目标函数值)Variable Value Reduced Cost(变量) (值) (减少的成本)X 100.0000 0.000000Y 30.00000 0.000000Row Slack or Surplus Dual Price(行) (松驰变量或剩余) (影子价格)1 14500.00 1.0000002 0.000000 25.000003 90.00000 0.0000004 0.000000 75.00000Lingo 程序可以设置数组格式:sets: 数组1名/1..k1/:变量列;数组2名/1..k2/:变量列;…;endsets二维数组数组名(数组1名,数组2名):变量列;注意冒号、分号、斜线使用。
定义好的数组(变量列)可以直接输入数据,格式:data: 变量1=数据列;变量2=数据列;……; enddata初始值输入格式:init:变量列=数据列; endinit逻辑运算:#not# 操作数不为右侧,返回真,否则返回假;#eq# 操作数等于右侧,返回真或后面两个选项选前者,否则返回假或后者#ne# 操作数不等于右侧,返回真或后面两个选项选前者,否则返回假或后者 #gt# 操作数大于右侧,返回真或后面两个选项选前者,否则返回假或后者#lt# 操作数小于右侧,返回真或后面两个选项选前者,否则返回假或后者#ge# 操作数大于等于右侧,返回真或后面两个选项选前者,否则返回假或后者 #le# 操作数小于等于右侧,返回真或后面两个选项选前者,否则返回假或后者 #and# 两者为真,返回真#or# 两者为假,返回假函数循环: @FOR( 数组名 [ (循环字母) [ | 循环条件]]: 表达式列表) 最大: @MAX(数组名 [ (循环字母) [ | 循环条件]]: 表达式)最小: @MIN(数组名 [ (循环字母) [ | 循环条件]]: 表达式)取和: @SUM(数组名 [ (循环字母) [ | 循环条件]]: 表达式)。
第十章_LINGO软件使用简介及技巧
3x3 2 y3 z3 375
x1, x2, x3, y1, y2, y3, z1, z2, z3 0
目录 上页 下页 返回 结束
LINGO程序如下:
MODEL: max=400*(x1+x2+x3)+300*(y1+y2+y3)+100*(z1+z2+z3); x1+x2+x3<=600; y1+y2+y3<=500; z1+z2+z3<=325; x1+y1+z1<=400; x2+y2+z2<=600; x3+y3+z3<=300; 3*x1+2*y1+z1<=600; 3*x2+2*y2+z2<=800; 3*x3+2*y3+z3<=375; END
目录下页返回上页结束某企业和用户签定了设备交货合同已知该企业各季度的生产能力每台设备的生产成本和每季度末的交货量见下表若生产出的设备当季度不交货每台设备每季度需要支付保管费01万元试问在遵守合同的条件下企业应如何安排生产计划才能使年消耗费用最低
数学建模简明教程
国家精品课程
第十章 LINGO软件使用 简介及技巧
目录 上页 下页 返回 结束
解 设农场1种植的甜菜、棉花和高粱分别为
x11, x12 , x13亩,农场2种植的甜菜、棉花和高粱分 别为 x21, x22 , x23亩,农场3种植的甜菜、棉花和 高粱分别为 x31, x32 , x33亩.
设三个农场可耕地分别为 a1 400 , a2 600 , a3 300 其最大用水量分别为b1 600,b2 800 ,b3 375 其甜菜、棉花和高粱的种植限额分别为
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
sets: set1/A,B,C/: X,Y; endsets data: X=1,2,3;!注意属性值的个数必须等于集成员的个数。 Y=4,5,6; enddata
例2 有时只想为一个集的某个属性的部分成员指定值, 而让该属性的其余成员的保持未知,以便让LINGO去 求出它们的最优值。在数据声明中输入两个相连的逗 号表示该位置对应的集成员的属性值未知。两个逗号 间可以有空格 。
SETS: CITIES /A1,A2,A3,B1,B2/; ROADS(CITIES, CITIES)/ A1,B1 A1,B2 A2,B1 A3,B2/:D; ENDSETS
SETS: STUDENTS /S1..S8/; PAIRS( STUDENTS, STUDENTS) | &2 #GT# &1: BENEFIT, MATCH; ENDSETS
LINGO软件及其应用
薛申芳 2009.3.15
目录
1 软件平台 2 lingo编程 3 应用举例
1 软件平台
(1)美国芝加哥(Chicago)大学的Linus Schrage (莱纳斯.施拉盖 )教授于1980年前后开发。 (2) LINGO: Linear Interactive General Optimizer (线性交互式通用优化器)。 (3)用来求解的优化模型(连续优化和整数规 划(IP))。 类型:线性规划(LP)、二次规划(QP)、非 线性规划(NLP)。 (4)LINGO的界面如下
2.3 运算符的优先级
优先级 最高
最低
运算符 #NOT# —(负号) ^ * / + - #EQ#相等 #NE#不相等 #GT#大 于 #GE#大于或等于 #LT# #LE# #AND# #OR# <(=) = >(=)
2.4 数据段
data: 变量1=数据列; 变量2=数据列; ……; Enddata 例1
除“LG4”文件外,这里的另外 几种格式的文件其实都是普通 的文本文件,可以用任何文本 编辑器打开和编辑
(8) 状态窗口的参数解释
• 运行状态窗口
Variables(变量数量): 变量总数(Total)、 非线性变量数(Nonlinear)、 整数变量数(Integer)。 Constraints(约束数量): 约束总数(Total)、 非线性约束个数(Nonlinear)。 Nonzeros(非零系数数量): 总数(Total)、 非线性项系数个数(Nonlinear)。 Generator Memory Used (K) (内存使用 量) • Elapsed Runtime (hh:mm:ss) (求解花费的时间)
说明: 集名字必须严格符合标准命名规则:以字母或下划线 (_)为首字符,其后由字母(A—Z)、下划线、阿 拉伯数字(0,1,…,9)组成的总长度不超过32个 字符的字符串,且不区分大小写。 如果集成员放在集定义中,那么对它们可采取显式罗 列(必须为每个成员输入一个不同的名字,中间用空 格或逗号搁开)和隐式罗列(不必罗列出每个集成员。 可采用如下语法: setname/member1..memberN/[: attribute_list]; 这里的 member1 是集的第一个成员名,memberN 是 集的最末一个成员名。LINGO 将自动产生中间的所 有成员名)两种方式。如果集成员不放在集定义中, 那么可以在随后的数据部分定义它们,如:
求解 器(求 解程 序)状 态框
解的目标函数值
目前为止的 迭代次数
• 运行状态窗口
使用的特殊求解程序 : B-and-B (分枝定界算法) Global (全局最优求解程序) Multistart(用多个初始点求解的程序)
目前为止找到的可行 解的最佳目标函数值 扩展 的求 解器 (求解 程序) 状态 框 目标函数值的界 特殊求解程序当前运行步数: 分枝数(对B-and-B程序); 子问题数(对Global程序); 初始点数(对Multistart程序)
有效步数
2 lingo编程 2.1 LINGO模型构成的4个段 (1)集合段(SETS ENDSETS) (2)数据段(DATA ENDDATA) (3)初始段(INIT ENDINIT) (4)目标与约束段
Lingo的编程 LINGO模型的构成:4个段 优化问题的一种建模语言。使用者可以只用键 集合段(SETS ENDSETS) 入一行文字就可以建立起含有大规模变量的目 标函数和成千上万条约束
init: X, Y = 0, .1; endinit Y=@log(X); X^2+Y^2<=1; 好的初始点会减少 模型的求解时间。
init: X, Y = , .1; endinit
init: X, Y = ?, .1; endinit
2.6 目标和约束段 目标函数 约束条件 2.7 各种函数 (1) 常用函数 @sin(x); @cos(x); @tan(x); @exp(x); @log(x); @abs(x); @smax(x); @smin(x); @sign(x);符号函数(与数学中的符号函数一致) @floor(x);原点方向取整
(2) 变量界定函数 @bnd(L,x,U):限定L<x<U; @bin(x):限定x取0、1值; @free(x):取消x的非负限制; @gin(x):限定x为整数(general interger) (3) 集合循环函数 @function(setname(index_list)|condition:expression) 其中function=for、max、min or sum。 (4) txt文件与lingo变量之间的数据连接 @file(‘外部文件路径\文件名.txt’):把外部txt文件数据传到lingo; @txt((‘外部文件路径\文件名.txt’):把lingo变量数据传到外部.txt文件. sets: s/1..10/; ss(s,s):x1; endsets data: x1 = @file(‘C:\Documents and Settings\Owner\桌面\t.txt’); enddata
选 项 设 置 : Ctrl+I
关闭所有窗口:Alt+X
匹配括号:Ctrl+P
打印文件:F7 取消操作: Ctrl+Z 显示解答:Alt+O 在线帮 助:F1
保存文件: F4
粘贴:Ctrl+V
定位某 行: ctrl+T
模型图示:Ctrl+K
平铺窗口:Alt+T
新建文件:F2
剪切:Ctrl+X
恢复操作: Ctrl+Y
数据段(DATA ENDDATA)
初始段(INIT ENDINIT)
目标与约束段
2.2 集合段 (1)集:集是一群相联系的对象(集部分是LINGO模 型的一个可选部分,即一个模型可以没有集部分,或 有一个简单的集部分,或有多个集部分一个集部分可 以放置于模型的任何地方,但是一个集及其属性在模 型约束中被引用之前必须定义了它们,集部分以关键 字“sets:”开始,以“endsets”结束 (2)成员:集的对象 (3)属性:集成员可能有一个或多个与之有关联的特 征,称为属性(属性值可以预先给定,也可以是未知 的,有待于lINGO求解) (4)集的类型
求解模型:Ctrl+S
窗口后置:Ctrl+B
上下文相关的 帮助
(6)LINGO 模型的最基本特
征: 有max=(或min=) 每行后面均有一个分号“;” 系数与变量间有“*” 首行可增添:”model:”,末行增 添”end”
max=2*x+3*y; 4*x+3*y<10; 3*x+5*y<12;
sets: years/1..5/: capacity; endsets data: capacity = ,34 和第3个值分别为34 和20,其余的未知
2.5初始段
init: 变量列=数据列; Endinit 说明:(1)初始部分输入的值仅被LINGO求解器当作初始点来 用,并且仅仅对非线性模型有用。和数据部分指定变量的值 不同,LINGO求解器可以自由改变初始部分初始化的变量的 值。 (2)初始部分的初始声明规则和数据部分的数据声明规则相同。 也就是说,我们可以在声明的左边同时初始化多个集属性, 可以把集属性初始化为一个值,可以用问号实现实时数据处 理,还可以用逗号指定未知数值。
Row Slack or Surplus Dual Price 1 7.454545 1.000000 2 0.000000 0.9090909E-01 3 0.000000 0.5454545
(7) Lingo的不同保存类型
“LG4”表示LINGO 格式的 模型文件,是一种特殊的二 进制格式文件,保存了我们 在模型窗口中所能够看到的 所有文本和其他对象及其格 式信息,只有LINGO 能读 出它,用其他系统打开这种 文件时会出现乱码 “LNG”表示LINGO文本文 件,以这个格式保存模型时 系统 将给出警告,因为模 型中的格式信息(如字体、 颜色等)将会丢失 “LDT”表示数据文件 “LTF”表示 命令脚本文件 “LGR”表示 报告文件
Global optimal solution found. Objective value: 7.454545 Total solver iterations: 2 Variable Value Reduced Cost X 1.272727 0.000000 Y 1.636364 0.000000
• 运行状态窗口
当前模型的类型 :LP,QP,ILP,IQP,PILP, PIQP,NLP,INLP,PINLP (以I开头表示 IP,以PI开头表示PIP)