实验2Lingo求解运输问题和整数规划

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

•LINDO: Linear INteractive and Discrete Optimizer
(V6.1)
•LINGO: Linear INteractive General Optimizer
(V8.0)
•LINDO API: LINDO Application Programming Interface (V2.0)
•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 5
• 49538582
• 52197433
• 76739271
• 23957265
• 5 5 2 2 8 1 4 3;
•enddata
•END
选址问题:NLP
•2)改建两个新料场,需要确定新料场位置(xj,yj)和运量cij ,在其它条件不变下 使总吨公里数最小。
•决策变量: •ci j,(xj,yj)~16维
•非线性规划模型
•Location(Non Linear)
•LINGO模型的构成:4个段
•集合段(SETS ENDSETS)
•数据段(DATA ENDDATA)

LP:移到数据段
•初始段(INIT ENDINIT)
•局部最优:89.8835(吨公里 )
•目标与 •约束段 •
边界
集合的类型
• setname(parent_set_l ist) [/member_list/]

• [: attribute_list];
集合
•end
•model: •!6发点8收点运输问题; •sets: • chandi/A1..A6/: a; • xiaodi/B1..B8/: d; • links(chandi,xiaodi): c, x; •endsets •!目标函数; • min=@sum(links(i,j): c(i,j)*x(i,j)); •!需求约束; • @for(xiaodi(J): • @sum(chandi(I): x(I,J))=d(J)); •!产量约束; • @for(chandi(I): • @sum(xiaodi(J): x(I,J))<=a(I)); •!这里是数据; •data: • a=60 55 51 43 41 52; • d=35 37 22 32 41 32 43 38; • c=6 2 6 7 4 2 9 5 • 49538582 • 52197433 • 76739271 • 23957265 • 5 5 2 2 8 1 4 3; •enddata •end
B1 B2 B3 B4 B5 B6
B7
B8 产量
6 2 6 74 2
5
9 60
4 9 5 38 5
8
2 55
5 2 1 97 4
33
51
7 6 7 39 2
71
43
2 3 9 57 2
65
41
5 5 2 28 1
43
52
35 37 22 32 41 32 43 38
• 解:设第I个产地运到第j个销地的单位运价 为cij ,第I个产地运到第j个销地的运量为 xij ,第I个产地的产量为ai (I=1,2,…,6), 第j个销地的销量为 bj(j=1,2,…,8),运费 为z,则此问题的数学模型为如下的数学规 划问题:
•What’s Best!: (SpreadSheet e.g. EXCEL)
(V7.0)
• 演示(试用)版、学生版、高级版、超级版、工业版 、扩展版… (求解问题规模和选件不同)
LINDO和LINGO软件能求解的优化模 型
•优化模型
•连续优化
•整数规划(IP)
•线性规划 •(LP)
• • LINDO
•LINGO模型的构成:4个段
•集合段(SETS ENDSETS)
•目标与 •约束段 •
•数据段(DATA ENDDATA)
•初始段(INIT ENDINIT)( 此题无初始数据)
例2.2 选址问题
•某公司有6个建筑工地,位置坐标为(ai, bi) (单位:公里),水泥日 用量di (单位:吨)
•非线性优化求解程序
•1、顺序线性规划法(SLP) •2、广义既约梯度法(GRG) (选) •3、多点搜索(Multistart) (选)
• 二、实验例题 • 例2.1 使用LINGO软件计算6个发点8个收点的最小费用运输问
题。产销单位运价如下表。
单 位 运 价 产地
销地
A1
A2
A3
A4
A5
A6
销量
实验2Lingo求解运输问题和 整数规划
•LINGO软件简 •LINGO模介型的优点
•包含了LINDO的全部功能 •提供了灵活的编程语言(矩阵生成器)
•LINGO模型的构成:4个段
•目标与约束段 • 集合段(SETS ENDSETS) • 数据段(DATA ENDDATA) •初始段(INIT ENDINIT)
•!Objective function(目标);
•[OBJ] min=@sum(link(i,j): c(i,j)*((x(j)-a(i))^2+(y(j)-b(i))^2)^(1/2) );
•!demand constraints(需求约束);
•@for(demand(i):[DEMAND_CON] @sum(supply(j):c(i,j)) =d(i););
•!supply constraints(供应约束);
•@for(supply(i):[SUPPLY_CON] @sum(demand(j):c(j,i)) <=e(i); );
•@for(supply: @free(X); @free(Y); );
•!@for(supply: @bnd(0.5,X,8.75); @bnd(0.75,Y,7.75); );
•0-1整数规划 •一般整数规划
•gi(x)0~约束条件
•纯整数规划(PIP) •混合整数规划(MIP)
•连续规划
•整数规划(IP)
LINDO 公司软件产品简要介绍
•美国芝加哥(Chicago)大学的Linus Schrage教授于1980年前后开发, 后来成立 LINDO系 统公司(LINDO Systems Inc.), 网址:http://www.lindo.com
• State: • Global Optimum • Local Optimum • Feasible • Infeasible • Unbounded • Interrupted • Undetermined
• Solver Type: • B-and-B • Global • Multistart
数字型 1..n
1..5
1, 2, 3, 4, 5
字符- stringM..stringN Car101..car208 Car101, car102, …
数字型
, car208
星期型 dayM..dayN
MON..FRI
MON, TUE, WED, THU, FRI
月份型 monthM..monthN OCT..JAN
•!quantities of the demand and supply(供需量);
•d=3,5,4,7,6,11; e=20,20;
•x,y=5,1,2,7;
•enddata
•init:
•!initial locations for the supply(初始点);
•!x,y=5,1,2,7;
•endinit
•Location(Linear)
• supply/1..2/:x,y,e;
• link(demand,supply):c;
•endsets
•data:
•!locations for the 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;
简单Lingo程序
•linBaidu Nhomakorabeao程序:
•Model: min=7*x1+3*x2;
x1+x2>=345.5; x1>=98; 2*x1+x2<=600; end
•实际问题中 •的优化模型
•优化模型
•x~决策变量
•数学规划
•线性规划(LP) •二次规划(QP) •非线性规划(NLP)
•f(x)~目标函数
•使用LINGO软件,编制程序如下:
•使用LINGO软件,编制程序如下:
•model: •!6发点8收点运输问题;
•产销不平衡问题
•sets:
• warehouses/wh1..wh6/: capacity;
• vendors/v1..v8/: demand;
• links(warehouses,vendors): cost, volume;
OCT, NOV, DEC, JAN
年份- monthYearM..mo OCT2001..JAN OCT2001,
月份型 nthYearN
2002
NOV2001,
DEC2001,
JAN2002
运算符的优先级
• 三类运算符:

算术运算符
优符先级 运算符
逻辑运算符 关系运算
最高 #NOT# —(负号)
• ROADS(CITIES, CITIES)/
• PAIRS( STUDENTS, STUDENTS)
A1,B1 A1,B2 A2,B1 A3,B2/:D;
| &2 #GT# &1: BENEFIT, MATCH;
• ENDSETS
• ENDSETS
集合元素的隐式列举
类型 隐式列举格式 示例
示例集合的元素
•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));
=1);
• @FOR(PAIRS( I, J): @BIN( MATCH( I, J)));
• MAXB=@MAX(PAIRS( I, J): BENEFIT( I, J));
状态窗口
• Model Class: • LP, QP,
ILP, IQP, PILP, PIQP, NLP,INLP, PINLP
•7个选项卡(可设置80-90个控制参 数)
•使用外部数据文件
• Cut (or Copy) – Paste 方法
• @FILE 输入数据、@TEXT输出数据(文本文件)
• setname [/member_list/] [: attribute_list];

派生集合 基本集合

稀疏集合 稠密集合
• 元素列表法 元素过滤法 直接列举法 隐式列举 法
• SETS:
• SETS:
• CITIES /A1,A2,A3,B1,B2/;
• STUDENTS /S1..S8/;
•假设:料场和工地 之间有直线道路
•决策变量:ci j (料场j到 工地i的运量)~12维
•线性规划模型 •用例中数据计算 ,最优解为
•总吨公里数为136.2
•Location(Linear)
•MODEL:
•Title Location Problem;
•sets: • demand/1..6/:a,b,d;
^
*/
+ —(减法)
#EQ# #NE# #GT# #GE# #LT# #LE#
#AND# #OR#
最低 <(=) = >(=)
集合循环函数
• 四个集合循环函数:FOR、SUM 、 MAX、MIN
• @function( setname [ ( set_index_list)[ | condition]] : expression_list);
• Example:
• [objective] MAX = @SUM( PAIRS( I, J): BENEFIT( I, J) * MATCH( I, J));
• @FOR(STUDENTS( I): [constraints] • @SUM( PAIRS( J, K) | J #EQ# I #OR# K #EQ# I: MATCH( J, K))
•二次规划 •(QP)
LINGO
•非线性规划 •(NLP)
•Lingo
LINDO/LINGO软件的求解过程
•1. 确定常数 •2. 识别类型
•LINDO/LINGO预处理程序
• LP QP • • • •
NLP IP 全局优化(选)
ILP IQP
•分枝定界管理程序 INLP
•线性优化求解程序
•1. 单纯形算法 •2. 内点算法(选)
相关文档
最新文档