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

“LNG”表示LINGO文本文 件,以这个格式保存模型时 系统 将给出警告,因为模 型中的格式信息(如字体、 颜色等)将会丢失
数学模型与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) 合理设定变量的上下界,尽可能给出变量的初始值;
合集下载

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模型实例及求解分析

LINGO模型实例及求解分析
r1i, r2i, r3i, r4i ~ 第i 种切割模式下,每根原料钢管 生产4米、5米、6米和8米长的钢管的数量
运 筹 学 实 验
钢管下料问题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使用方法

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软件入门

第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)规划模型

用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软件学习入门

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快速入门

服务系统的等待或返修顾客数的期望值。a是顾客数乘以平均服务时间, 再除以平均返修时间。当c和(或)x不是整数时,采用线性插值进行计 算。
概率函数
• 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 ;否则

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;。

Lingo 入门


1 在Lingo中使用Lindo模型 Lingo中使用Lindo模型
Lingo 9.0完全支持Lindo模型程序的书写 9.0完全支持Lindo模型程序的书写 格式。在Lingo 9.0模型窗口中选择菜单命 格式。在Lingo 9.0模型窗口中选择菜单命 令“File|Open (F3)” (F3)” 9.0以前的版本中(如Lingo 注意 在Lingo 9.0以前的版本中(如Lingo 8.0), 8.0), “File|Import LINDO File (F12)”命令可以将Lindo模型文件转化成 (F12)”命令可以将Lindo模型文件转化成 Lingo模型。这个菜单命令的意思是“ Lingo模型。这个菜单命令的意思是“导入 Lindo文件”(在LINGO 9.0中已无必要, Lindo文件”(在LINGO 9.0中已无必要, 所以该命令已经被取消了)。
修改运行时的 内存限制
激活敏感 性分析
例3.1 一奶制品加工厂用牛奶生产A1,A2两种奶制品,1 一奶制品加工厂用牛奶生产A 两种奶制品,1 桶牛奶可以在甲车间用12h加工成3kgA 桶牛奶可以在甲车间用12h加工成3kgA1,或者在乙车间 用8h加工成4kg A2。根据市场需求,生产出的A1,A2全 8h加工成4kg 。根据市场需求,生产出的A 部能售出,且每千克A 获利24元,每千克A 获利16元。 部能售出,且每千克A1获利24元,每千克A2获利16元。 现在加工厂每天能得到50桶牛奶的供应,每天正式工人总 现在加工厂每天能得到50桶牛奶的供应,每天正式工人总 的劳动时间为480h,并且甲车间的设备每天至多能加工 的劳动时间为480h,并且甲车间的设备每天至多能加工 100kg A1,乙车间的设备的加工能力可以认为没有上限 限制(即加工能力足够大)。试为该厂制定一个生产计划, 使每天获利最大,并进一步讨论以下3 使每天获利最大,并进一步讨论以下3个附加问题: (1)若用35元可以买到1桶牛奶,是否作这项投资?若 )若用35元可以买到1 投资,每天最多购买多少桶牛奶? (2)若可以聘用临时工人以增加劳动时间,付给临时工 人的工资最多是每小时几元? (3)由于市场需求变化,每千克A1的获利增加到30元, )由于市场需求变化,每千克A 的获利增加到30元, 是否应该改变生产计划?
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档