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

合集下载

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求解整数(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快速入门

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

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元, 是否应该改变生产计划?

LINGO模型实例及求解

LINGO模型实例及求解

钢管下料问题2
目标函数(总根数) Mix1 nx2x3
约束 条件 满足需求
模式合理:每根 余料不超过3米
r1x11r1x22r1x33501 6 4 r 1 15 r2 16 r3 18 r4 119
r2x 11r2x 22r2x 33101 6 4 r1 25 r2 26 r3 28 r4 219
j 1
6
cij e j , j 1,2
i 1
决策变量: ci j,(xj,yj)~16维
非线性规划模型
LINGO模型的构成:4个段
集合段(SETS ENDSETS)
数据段(DATA ENDDATA)
LP:移到数据段
初始段(INIT ENDINIT) 目标与 约束段
局部最优:89.8835(吨公里 )
1)现有 2 料场,位于 A (5, 1), B (2, 7), 记(xj,yj),j=1,2, 日储量 ej 各有 20 吨。
目标:制定每天的供应计划,即从 A, B 两料场分别向
各工地运送多少吨水泥,使总的吨公里数最小。
决策变量:ci j min (料场j到工地i的
运量)~12维 s.t.
26
钢管下料
切割模式
按照客户需要在一根原料钢管上安排切割的一种组合。
4米1根 6米1根
8米1根
余料1米
4米1根 6米1根
6米1根
余料3米
8米1根
8米1根
余料3米
合理切割模式的余料应小于客户需要钢管的最小尺寸
钢管下料问题1 合理切割模式
模式 1 2 3 4 5 6 7
4米钢管根数 4 3 2 1 1 0 0
X3 8.000000
1.000000

全国数学建模lingo实例讲解

全国数学建模lingo实例讲解

全国数学建模lingo 实例讲解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个收点的最小费用运输问题。

产销单位运价如下表。

单位 销地 运 价 产地B 1 B 2 B 3 B 4 B 5 B 6 B 7 B 8 产量 A 1 6 2 6 7 4 2 5 9 60 A 24953858255A3 5 2 1 9 7 4 3 3 51A4 7 6 7 3 9 2 7 1 43A5 2 3 9 5 7 2 6 5 41A6 5 5 2 2 8 1 4 3 52销量35 37 22 32 41 32 43 38使用LINGO软件,编制程序如下: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教程

Lingo教程

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

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

§1 LINGO快速入门●安装:实验室的所有电脑都已经事先安装好了Lingo 8(或者9, 10, 11)。

如果要在自己的电脑上安装这个软件,建议从网上下载一个破解版的,按照提示一步一步地安装完毕。

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

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

下面举两个例子。

例 1某工厂在计划期内要安排生产I、II两种产品,已知生产单位产品所需的设备台时及A、B两种原材料的消耗,如表所示。

产品I 产品II设备 1 2 8台时原材料A 4 0 16kg原材料B 0 4 12kg该工厂每生产一件产品I可获利2元,每生产一件产品II可获利3元,问应该如何安排生产计划使该厂获利最多?我们用下面的数学模型来描述这个问题。

设x_1、x_2分别表示在计划期内产品I、II的产量。

因为设备的有效台时是8,这是一个限制产量的条件,所以在确定产品I、II的产量时,要考虑不超过设备的有效台时数,即可用不等式表示为x_1 + 2x_2 <=8同理,因原材料A、B的限量,可以得到以下不等式4x_1 <=164x_2 <=12该工厂的目标是在不超过所有资源限量的条件下,如何确定产量x_1、x_2以得到最大的利润。

若用z表示利润,这时z=2x_1+3x_2.综合上述,该计划问题可用数学模型表示为:目标函数 max z=2x_1+3x_2约束条件 x_1 + 2x_2 <=84x_1 <=164x_2 <=12x_1、x_2 >=0一般来说,一个优化模型将由以下三部分组成:1.目标函数(Objective Function):要达到的目标。

LINGO使用简介及简单线性规划模型的求解

LINGO使用简介及简单线性规划模型的求解
1
这些运算符的优先级由高到低为:
高 #not# ﹣(取反)

﹡/
﹢﹣
#eq# #ne# #gt# #ge# #lt# #le#
#and# #or#
低 <= = >=
1
数学函数
@abs(x)
返回x的绝对值
@sin(x)
返回x的正弦值,x采用弧度制
ห้องสมุดไป่ตู้
@cos(x)
返回x的余弦值
@tan(x)
1
集的类型
LINGO有两种:原始集(primitive set)和派生 集(derived set)。
一个原始集是由一些最基本的对象组成的。 一个派生集是用一个或多个其它集来定义的,
也就是说,它的成员来自于其它已存在的集。
1
定义原始集
为了定义一个原始集,必须详细声明: ·集的名字 ·可选,集的成员 ·可选,集成员的属性 定义一个原始集,用下面的语法: setname[/member_list/][:attribute_list];
注意:用“[]”表示该部分内容可选。
1
集合的定义
Setname是你选择的来标记集的名字,最好具 有较强的可读性。集名字必须严格符合标准命 名规则:以拉丁字母或下划线(_)为首字符, 其后由拉丁字母(A—Z)、下划线、阿拉伯 数字(0,1,…,9)组成的总长度不超过32 个字符的字符串,且不区分大小写。
flase #lt# 若左边的运算符严格小于右边的运算符,则为true;否则为flase #le# 若左边的运算符小于或等于右边的运算符,则为true;否则为
flase #and# 仅当两个参数都为true时,结果为true;否则为flase #or# 仅当两个参数都为false时,结果为false;否则为true

数学建模实验报告关于LINGO的解题方法及其思路分析

数学建模实验报告关于LINGO的解题方法及其思路分析

数学建模实验报告1.解析:此题属于0-1模型问题。

设队员序号为i ,泳姿为j ,记c ij 为队员i 第j 种泳姿的百米成绩,若选择队员i 参加泳姿j 的比赛,记x ij =1, 否则记xij =0;则有,目标函数为∑∑===4151j i ij ij x c Z Min ,每个人最多选泳姿为1,则有5,1,141=≤∑=i xj ij,每种泳姿有且仅有1人,则有4,1,151==∑=j xi ij。

若丁的蛙泳成绩退步及戊的自由泳成绩进步,则将c43的值和c54的值改变即可。

实验过程及运行结果如下:若丁的蛙泳成绩退步为1'15"2及戊的自由泳成绩进步57"5,计算结果如下:通过计算结果可知,在原数据的情况下,队伍的选择应该是甲参加自由泳,乙参加蝶泳,丙参加仰泳,丁参加蛙泳,戊不参加任何比赛,且最好的时间是253.2秒。

若丁的蛙泳成绩退步为1'15"2及戊的自由泳成绩进步57"5,则组成接力的比赛队伍调整为乙参加蝶泳,丙参加仰泳,丁参加蛙泳,戊参加自由泳,甲不参加任何比赛。

2.解析:此题属于线性规划问题。

已知某工厂用1A 、2A 两台机床加工1B 、2B 、3B 三种不同的零件,设1A 生产1B 、2B 、3B 的个数分别为1x 、2x 、3x ,2A 生产1B 、2B 、3B 的个数分别为4x 、5x 、6x ,则目标函数为min=1*2*1x +2*3*2x +3*5*3x +1*3*4x +1*3*5x +3*6*6x ;1A 加工的工时小于80小时,2A 加工的工时小于100小时,生产1B 、2B 、3B 的总数分别为70个、50个、20个。

实验过程及运行结果如下:通过计算结果可知,当1A 生产1B 、2B 、3B 的个数分别为68个、0个、4个,2A 生产1B 、2B 、3B 的个数分别为2个、50个、16个的时候,才能得到最低的成本640元。

(完整版)lingo初级入门手册

(完整版)lingo初级入门手册
数学建模及其实验
LINGO软件使用
LINGO是美国LINDO系统公司开发的一套专门用 于求解最优化问题的软件.它为求解最优化问题提供 了一个平台,主要用于求解线性规划、非线性规划、 整数规划、二次规划、线性及非线性方程组等问 题.它是最优化问题的一种建模语言,包含有许多常 用的函数供使用者编写程序时调用,并提供了与其他 数据文件的接口,易于方便地输入,求解和分析大规 模最优化问题,且执行速度快.由于它的功能较强, 所以在教学、科研、工业、商业、服务等许多领域得 到了广泛的应用.
STUDENTS/1..5/:NAME,AGE; ENDSETS
数学建模及其实验
数学建模及其实验
数学建模及其实验
数学建模及其实验
派生集:
Setname(parent_set_list(源集列表))[/member_list/][:attribute_list];
图1.1中最外层的窗口是LINGO软件的主窗口(LINGO软件的用户界 面),所有其他窗口都在这个窗口之内.主窗口有:标题栏、菜单栏、工 具栏和状态栏.目前,状态栏最左边显示的是“Ready”,表示准备就绪, 右下角显示的是当前时间,时间前面是当前光标的位置“Ln 1,Col 1” (即1行1列).将来用户可以用选项命令(LINGO|Options|Interface菜单 命令)决定是否需要显示工具栏和状态栏.
LINGO|Solution(Ctrl-O)(解答)命令显示当前解
• LINGO|Range(Ctrl-R)
LINGO|Range(Ctrl-R)(灵敏度分析)命令显示当前解的灵敏度分析结 果.(你必须在此之前求解过当前模型)
数学建模及其实验
• LINGO|Options(Ctrl-I)
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
“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) 合理设定变量的上下界,尽可能给出变量的初始值;
相关文档
最新文档