lingo软件入门及其一般数学模型求解汇总
Lingo软件与数学建模

变量数目:变量总数 (Total)、非线型变量 数(Nonlinear)、整数 变量数(Integer)
约束变量:约束总数 ( Total )、非线性约束 个数(Nonlinear)
非线性系数数量:总数 ( Total )、非线性项的 系数个数(Nonlinear)
内存使用量:单位为千字节
数据多,咋办?
value=1,1.2,0.9,1.1;
enddata
max=@sum(goods:weight*value);
@for(goods:@bin(x));
end
游泳
四名同学的混合泳接 力赛的四种成绩如左 表所示,确定如何分 配使成绩最佳。
蛙蝶自仰 泳泳由泳
泳
甲 99 60 59 73
线性规划
二次规划
非线性规划
LINGO软件的基本操作
双击快捷方式 即可计入程序编辑界面
Lingo软件介绍
➢解决一个简单的线性规划(LP)问题
max z 2x 3y 4x 3y 10
s.t. 3x 5y 12 x, y 0
LINGO软件介绍
点击图标
运行,屏幕上显示运行状态窗口如下: 对于LINGO运行状态窗口,
基 @EXP(X):指数函数(以自然对数e为底),返回eX的值
本 数 学
@ LOG(X):自然对数函数,返回X的自然对数值; @POW(X,Y):指数函数,返回XY的值;
函 @SQR(X):平方函数,返回X2的值;
数 @SQRT( X ):平方根函数,返回X的平方根;
@FLOOR(X):取整函数,返回X的整数部分(向靠近0 的方向取);
@GIN(X):限制X为整数.
0-1规划(线性规划)
LINGO模型实例及求解分析

运 筹 学 实 验
钢管下料问题2
目标函数(总根数) 满足需求
Min x1 x2 x3
模式合理:每根 余料不超过3米
约束 条件
安 阳 师 范 学 院 数 学 与 统 计 学 院
1 2 3 4 5 6 安 阳 7
师 范 学 院 数 学 与 统 计 学 院
运 筹 学 实模式 验
钢管下料问题1
4米钢管根数 4 3 2 1 1 0 0 6米钢管根数 0 1 0 2 1 3 0
合理切割模式
8米钢管根数 0 0 1 0 1 0 2 余料(米) 3 1 3 3 1 1 3
为满足客户需要,按照哪些种合理模式,每种模式 切割多少根原料钢管,最为节省? 两种 标准 1. 原料钢管剩余总余量最小
每根原料钢管长19米
ห้องสมุดไป่ตู้
原料钢管总根数下界: 4 50 5 10 6 20 8 15 26 (最佳切割方式) 19
安 特殊生产计划(简单切割方式):对每根原料钢管 阳 师 范 模式1:切割成4根4米钢管,需13根; 学 院 模式2:切割成1根5米和2根6米钢管,需10根; 数 学 模式3:切割成2根8米钢管,需8根。 与 统 原料钢管总根数上界:31 26 x1 x2 x3 31 计 学 院 模式排列顺序可任定 1 2 3
r11 x1 r12 x2 r13 x3 50
r21 x1 r22 x2 r23 x3 10
16 4r11 5r21 6r31 8r41 19
16 4r12 5r22 6r32 8r42 19
lingo使用方法

解 设 x为2002年底宏银公司需筹集到的资金额, y1 , y 2 , y3 为分别于2003、2004、2005年初存放到银行的资金数 , w1 , w2 , w3为分别购买A、B、C债券的是数额(单位均 为万元)则可例出如下数学模型:
min z x x y1 wA wB 100 ; 1.04 y y w 150; 1 2 C 1.04 y2 1.25 wB y3 120 ; st. 1.04 y3 1.40 wA 1.30 wC 110 ; wA 60; wB 90; wC 50; x 0, yi 0(i 1,2,3) w j 0( j A, B, C ).
• 2.约束条件:
x
i 1
3
ij
xl j
x
i 1
3
ij
xl j , j 1 4
@sum(si(i):x(i))=xl(j)
j 1 4
• @for(sj(j):等式);
x
j 1
4
ij
cli , i 13
• @for(si(i):@sum(sj(j)):x(i,j))=cl(i));
s.t. xij xl j , j 1 4
i 1
3
x
j 1
4
ij
cli , i 13
其中: xl=5 2 cl= 4 9 c = 10 16 5
4 6 4 6 7 12 10 5 9 4 10 10
xij 0, i 13, j 1 4
分析:
• 下标变量有: • 1. xl 4个分量 • 2. cl 3个分量 • 3. x ,c 3×4个分量 • 下标集: • si 1,…,3 • sj 1,…,4 • sij =(si,sj)
第04讲 Lingo软件入门

第4讲 Lingo 软件入门司守奎烟台市,海军航空工程学院数学教研室Email :sishoukui@4.1 初识Lingo 程序Lingo 程序书写实际上特别简捷,数学模型怎样描述,Lingo 语言就对应地怎样表达。
首先介绍两个简单的Lingo 程序。
例4.1 求解如下的线性规划问题:121212112max726450,128480,s.t.3100,,0z x x x x x x x x x =++≤⎧⎪+≤⎪⎨≤⎪⎪≥⎩ Lingo 求解程序如下max =72*x1+64*x2; x1+x2<=50;12*x1+8*x2<=480; 3*x1<=100;说明:Lingo 中默认所有的变量都是非负的,在Lingo 中就不需写出对应的约束。
例4.2 抛物面22y x z +=被平面1=++z y x 截成一椭圆,求原点到这椭圆的最短距离。
该问题可以用拉格朗日乘子法求解。
下面我们把问题归结为数学规划模型,用Lingo 软件求解。
设原点到椭圆上点),,(z y x 的距离最短,建立如下的数学规划模型:⎩⎨⎧+==++++.,1s.t.min 22222y x z z y x z y xLingo 求解程序如下: min =(x^2+y^2+z^2)^(1/2); x+y+z=1; z=x^2+y^2;@free (x); @free (y);说明:Lingo 中默认所有变量都是非负的,这里y x ,的取值是可正可负的,所以使用Lingo 函数free 。
例4.3 求解如下的数学规划模型:⎪⎪⎩⎪⎪⎨⎧==∑∑∑===.,1s.t.min9912100100110012i ii i i ix x x x用Lingo 求解上述数学规划问题,使用集合和函数比较方便,使用集合的目的是为了定义向量,集合使用前,必须先定义;Lingo 程序中的标量不需要定义,直接使用即可。
sets :var/1..100/:x; endsetsmin =@sqrt (@sum (var(i):x(i)^2)); @sum (var(i):x(i))=1;x(100)=@sum (var(i)|i#le#99:x(i)^2); @for (var(i)|i#le#99:@free (x(i)));说明:如果不使用集合和函数,全部使用标量x1,x2,…,x100,最后一个约束就要写99遍,@free(x1); …; @free (x99)。
用Lingo求解整数(0-1)规划模型

1、建立数学模型, 2、用lingo循环语句编写程序.
上机作业题 人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一
定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
班次
时间段
人数 班次
时间段
人数
1
6:00~9:00
例 4 求函数 z x 22 y 22 的最小值.
例 4 求函数 z x 22 y 22 的最小值.
解: 编写Lingo 程序如下:
min=(x+2)^2+(y-2)^2; @free(x); 求得结果: x=-2, y=2
二、Lingo 循环编程语句
(1) 集合的定义 包括如下参数: 1) 集合的名称.
12,8 3,0; enddata
!数据赋值;
max=@sum(bliang(i):a(i)*x(i)); !目标函数;
@for(yshu(j):@sum(bliang(i):x(i)*c(j,i))<=b(j));
!约束条件;
例6:人员选拔问题
队员号码 身高 / m 位置 队员号码 身高 / m 位置
例 2 用Lingo软件求解整数规划问题
min z 2 x1 5 x2 3 x3
4 x1 x2 x3 0
2
x1
4 x2
2 x3
2
x1
x2
x3
2
xi 0 且取整数, i 1, 2, 3
Lingo 程序:
min=2*x1+5*x2+3*x3; -4*x1-x2+x3>=0; -2*x1+4*x2-2*x3>=2; x1-x2+x3>=2; @gin(x1);@gin(x2);@gin(x3);
LINGO软件学习入门

♂返回
8、如何在LINGO中求解如下的IQP问题:
2 max f ( x) 98 x1 277 x2 x12 0.3 x1 x2 2 x2
s.t. x1 x2 100 x1 2 x2 x1 , x2 0为整数
LINGO代码: max=98*x1+277*x2-x1^2-0.3*x1*x2-2*x2^2; x1+x2<=100; x1<2*x2; @gin(x1);@gin(x2);
min z x 2 2 x 3 x1 2 x 2 x 3 2 x 3x x 1 2 3 4 s.t. x 2 x3 x5 2 x j 0; j 1,2,...,5
3 、求解
min z 5 x1 21x 3 x1 x 2 6 x 3 x 4 2 s.t. x1 x 2 2 x 3 x5 1 x ; j 1,2,3,4,5 j
@SLB)与LINDO中的命令类似。而且0/1变量函数是@BIN函
数。
数学函数 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返回-1;否则,返回1 @floor(x) 返回x的整数部分。当x>=0时,返回不超过x的最大整数; 当x<0时,返回不低于x的最大整数。 @smax(x1,x2,…,xn) 返回x1,x2,…,xn中的最大值 @smin(x1,x2,…,xn) 返回x1,x2,…,xn中的最小值
用Lingo求解整数(0-1)规划模型.

Lingo 程序: max=2*x1+5*x2+3*x3+4*x4;
-4*x1+x2+x3+x4>=0; -2*x1+4*x2+2*x3+4*x4>=1; x1+x2-x3+x4>=1; @bin(x1);@bin(x2);@bin(x3);@bin(x4);
温州大学城市学院
例 2 用Lingo软件求解整数规划问题 min z 2 x1 5 x2 3 x3
温州大学城市学院
注意:
Lingo 默认变量的取值从0到正无穷大,
变量定界函数可以改变默认状态.
@free(x): 取消对变量x的限制(即x可取任意实数值)
例 4 求函数 z x 2 y 2 的最小值.
2 2
温州大学城市学院 例 4 求函数 z x 2 y 2 的最小值.
,8
温州大学城市学院
温州大学城市学院
上机作业题
要求:
1、建立数学模型,
2、用lingo循环语句编写程序.
温州大学城市学院
上机作业题
人员安排问题
某城市的巡逻大队要求每天的各个时间段都有一 定数量的警员值班, 以便随时处理突发事件, 每人连续 工作6h, 中间不休息. 如表所示是一天8个班次所需值 班警员的人数情况统计:
成绩 甲 乙 丙 丁 自由泳 / s 56 63 57 55 蛙泳 / s 74 69 77 76 蝶泳 / s 61 65 63 62 仰泳 / s 63 71 67 62
甲, 乙, 丙, 丁 四名队员各自游什么姿势 , 才最有可能取得好成绩?
温州大学城市学院
LINGO快速入门

概率函数
• 7.@phg(pop,g,n,x) • 超几何(Hypergeometric)分布的累积分布函数。pop表示产品总数,g是正
品数。从所有产品中任意取出n(n≤pop)件。pop,g,n和x都可以是非整数, 这时采用线性插值进行计算。
变量界定函数
• 变量界定函数实现对变量取值范围的附加限制,共4种: • @bin(x) 限制x为0或1 • @bnd(L,x,U) 限制L≤x≤U • @free(x) 取消对变量x的默认下界为0的限制,即x可
以取任意实数 • @gin(x) 限制x为整数 • 在默认情况下,LINGO规定变量是非负的,也就是说下界
• @smax(x1,x2,...,xn)返回 x1 , x2 , … , xn 中的 最大值
• @smin(x1,x2,...,xn)返回 x1 , x2 , … , xn 中的最 小值
例 给定一个直角三角形,求包含该三角形的最小正方形。
解:如图所示。ABCDDAEabx
求最小的正方形就相当于求如下的最优化问题:
• data:
• sex,age = 1 16
•
0 14
•
0 17
•
0 13;
• friend = 0.3 0.5 0.6;
• enddata
基本运算符
• ^ 乘方 •﹡ 乘 •/ 除 •﹢ 加 •﹣ 减
: LINGO具有9种逻辑运算符
• #not# 否定该操作数的逻辑值,# not #是一个一元运算符 • #eq# 若两个运算数相等,则为 true ;否则为 flase • #ne# 若两个运算符不相等,则为 true ;否则为 flase • #gt# 若左边的运算符严格大于右边的运算符,则为 true ;否则
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数学模型与lingo软件
需要掌握的几个重要方面
•掌握集合(SETS)的应用; •正确阅读求解报告; •正确理解求解状态窗口; •学会设置基本的求解选项(OPTIONS) ; •应用实例
LINGO 8.0有两种命令模式
Windows 模式, 通过下拉式菜单命令驱动LINGO 运行
命令行(Command-Line) 模式,仅在命令窗口下操作
上下文 相关的 帮助
• LINGO的语法规定: ➢ (1)求目标函数的最大值或最小值分别用MAX=…或
MIN=…来表示; ➢ (2)每个语句必须以分号“;”结束,每行可以有许多
语句,语句可以跨行;
➢ (3)变量名称必须以字母(A~Z)开头,由字母、数字(0~9) 和下划线所组成,长度不超过32个字符,不区分大小写;
与LINDO 相比,LINGO 软件主要具有两大优点 1、除具有LINDO 的全部功能外,还可用于求解非线性 规划问题,包括非线性整数规划问题
2、LINGO 包含了内置的建模语言,允许以简练、直观 的方式描述较大规模的优化问题,模型中所需的数据可 以以一定格式保存在独立的文件中
1. LINGO的主要功能特色:
(5) 模型中使用的单位的数量级要适当(如小于103);
在LINGO中使用LINDO模型
LINGO的界面
• LINGO软件的主窗口(用 户界面),所有其他窗口 都在这个窗口之内。
• 状态行(最左边显 示“Ready”,表示
“准备就绪”)
• 当前光标 的位置
• 模型窗口(Model Window),用于输入 LINGO优化模型(即 LINGO程序)。
(1) 每个系数与变量间增加了运算符“*”(即 乘号不能省略)
(2) 模型结束标志“END”也被删除了(LINGO 中只有当模型以“MODEL:”开始时才能以 “END” 结束)。
这是LINGO 模型的最基本特征
用LINGO 来解二次规划问题
MAXz 98x1 277x2 x12 0.3x1x2 2x22
• 当前时间
工具栏
File|Open (F3) 打开文件
File|Print (F7) 打印文件
Edit|Copy (Ctrl+C) 复制
Edit|Find (Ctrl+F) 查找
Edit|Undo (Ctrl+Z) 取消操作
Edit|Match Parenthesis
(Ctrl+P) 匹配括号
LINGO|Options (Ctrl+I) 选项设置
(1) 既能求解线性规划问题,也有较强的求解非线性规划 问题的能力;
(2) 输入模型简练直观;
(3) 运行速度快,计算能力强; (4) 内置建模语言,提供几十个内部函数,从而能以较少
语句,较直观的方式描述较大规模的优化模型; (5) 将集合的概念引入编程语言,很容易将实际问题转换
为LINGO模型;
(6) 能方便地与Excel、数据库等其他软件交换数据;
s.t.x1 x2 100
x1 2x2
注意事项:
x1, x2 0为整数
1) 变量和行名可以超过8 个
字符,但不能超过32 个字符,
且必须以字母开头
2) LINGO 已假定各变量非 负(除非用函数@free或
@sub 或@slb 另行说明)
3) 变量可以放在约束条件的 右端(同时数字也可放在约束 条件的左端)。但为了提高效 率,应尽可能采用线性表达式 定义目标和约束(如果可能)
max=98*x1+277*x2-x1^20.3*x1*x2-2*x2^2; x1+x2<100; x1<2*x2; @gin(x1);@gin(x2);
Lingo的不同保存类型
除“LG4”文件外,这里的另外 几种格式的文件其实都是普通 的文本文件,可以用任何文本 编辑器打开和编辑
“LG4”表示LINGO 格式的 模型文件,是一种特殊的二 进制格式文件,保存了我们 在模型窗口中所能够看到的 所有文本和其他对象及其格 式信息,只有LINGO 能读 出它,用其他系统打开这种 文件时会出现乱码
LINGO|Solution (Alt+O)显示解答
Window|Close All (Alt+X) 关闭所有窗口
Help|Co ntents (F1) 在线帮 助
File|Save (F4) 保存文件
Edit|Paste (Ctrl+V) 粘贴
File|New (F2) 新建文件
Edit|Cut (Ctrl+X) 剪切
•模m型in或max f(x)
•
S.T. G(x)≤或≥或=0
•
L ≤x≤U
要素: 1.变量 (符号) 2.常量(数据) 3.关系(函数、方程)
max 2x 3y s.t. 4x 3y 10
3x 5y 12
Lingo: max=2*x+3*y;
4*x+3*y<10; 3*x+5*y<12;
Edit|Redo (Ctrl+Y) 恢复操作
Edit | Go To Line
(Ctrl+T) 定位某行
LINGO|Picture (Ctrl+K) 模型图示
Window|Tile (Alt+T) 平铺窗口
LINGO|Solve (Ctrl+S) 求解模型
Window|Send to Back (Ctrl+B) 窗口后置
➢ (4)可以给语句加上标号,例如 [OBJ]MAX=200*X1+300*X2;
➢ (5)以惊叹号“!”开头,以分号“;”结束的语句是注 释语句;
➢ (6)如果对变量的取值范围没有作特殊说明,则默认所有 决策变量都非负;
➢ (7)LINGO模型以语句“MODEL:”开头,以“END” 结束,对于比较简单的模型,这两个语句可以省略。
建模时需要注意的几个基本问题:
(1) 尽量使用实数优化模型,减少整数约束和整数变量的 个数;
(2) 尽量使用光滑优化模型,减少非光滑约束的个数; 如:尽量少地使用绝对值函数、符号函数、多个变量求最 大(或最小)值、四舍五入函数、取整函数等.
(3) 尽量使用线性优化模型,减少非线性约束和非线性变 量的个ห้องสมุดไป่ตู้(如x/y < 5改为x < 5y) ; (4) 合理设定变量的上下界,尽可能给出变量的初始值;