POEM - ::北京运筹学会::Beijing Operation Research

Download Report

Transcript POEM - ::北京运筹学会::Beijing Operation Research

运筹学语言NCL及其工业应用
©2000-2008 ENGINEST. All rights reserved.
NCL语言
Simpler • Smarter • Swifter
NCL是一门集逻辑、优化及求解规则为一体的智能描述型语言,
支持业务建模和问题求解,独立于领域,跨行业。
Solving by Describing
语法分析器(parser):模式识别技术
•
支持自然建模
•
支持可视化模型调测及诊断
法国科技创新奖
解算器(solver):混合集合规划
• 求解实数、整数、布尔值、时间、索引
及集合类型上的混合约束;
顶级创新企业
法国参议院奖
• 支持一阶逻辑、集合推理、数值分析等
求解规则编程(rules)
2000年国际逻辑编程协会的
官方杂志JLP发表
J. Zhou: Introduction to the
constraint language NCL.
JLP: 45(1-3): 71-103 (2000).
• 支持启发式求解策略
• 支持业务规则:快速构建解决方案
NCL语言
©2000-2008. ENGINEST. All rights reserved
混合集合规划: 超越线性模型的建模
Simpler • Smarter • Swifter
• 混合域(实数、整数、布尔值、索引及集合)上的联合求解系统;
• 支持一阶逻辑、集合推理、实数域数值分析等。
 集合对信息的聚合性(基数、上界、下界、交、并、差、前继、后继)
 动态量词逻辑增强模糊推理的能力,支持更强大的问题描述与求解:
- " i  A (…)
- ∃ i  A (…)
-  i  A xi
 基于算法耦合的推理
- NCL有300多种域切割算法;
- 算法之间耦合形成网状关系,进一步提升求解能力。
" i  [1,6]
xi = O,
A ⊂ [1,6],
#A = 2,
 i  A xi = 6,
1,3,2,4,6,7
NCL可在预求解(pre-solve)阶段确定 :
• A = {3, 4}
• x3 = 2, x4 = 4, x3 + x4 = 6
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL语言的求解框架
Simpler • Smarter • Swifter
约束切割(Constraint Cut)和树搜索(Tree Search)
搜索空间
约束切割(Constraint Cut)
回溯:
在其它枝
寻求更优解
回溯:
在其它枝
寻求解
判断
变量的值域
枝2
枝1
确定值
未确定值
空集
找到解
对查询变量的值域
进行分枝(branch)
无解
子问题1
子问题2
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL求解规则
Simpler • Smarter • Swifter
• 最小化松弛度(Least Slack)
一般来说,松弛度越小,非确定性越小,产生回溯的可能性也越小;
• 最大化松弛度(Greatest Slack)
域越大,分枝后变化越大, 域切割的扩散性越大。一般来说,很适用于实数变量;
• 最小化遗憾度(Least Regret)
分枝时分枝点处的搜索准则的差异越大,选枝越容易,回溯时遗憾度越小。
本例中,我们倾向选择这样的order:它距离可能的nextOrder中最近的与次近的
差距最大,即最大化“次小与最小之差”。那么该order相对其他“次小与最小之
差”较小的order,选枝选错的可能性要小,因而该步回溯时遗憾度要小;
• 顺序性(Ordering Search)
根据一些实际的业务规则选枝搜索以使解空间尽量保持凸性;
• 贪婪性(Greedy Search)
局部最贪婪地向有利于优化目标的方向选枝搜索。该准则一般用作最后一条。
NCL语言
©2000-2008. ENGINEST. All rights reserved
Square Packing: NCL描述建模的例子
Simpler • Smarter • Swifter
来源: C.J. Bouwkamp & A.J.W. Duijvestijn. Catalogue of simple perfect squared
Squares of orders 21 through 25. Eindhoven University of Technology, Technical
Report 92 WSK 03, The Netherlands, November 1992.
将一些小正方形拼成一个大的正方形, 要求任意两个
小正方形交集为空且 相邻的正方形间不含间隙。
d = 112,
n = 21,
∀ i ∈ [1, n] (
s i = ○,
Xi ⊂ [1, d] ,
Yi ⊂ [1, d] ,
Xi = [xi, xi + (si-1)] ,
Yi = [yi, yi + (si-1)] ,
所有的小正方形不可以重叠,所
以任意两个小正方形的横坐标两
两不交或纵坐标两两不交。
),
∀ i ≠ j ∈ [1, n]
Xi ∩ Xj =  ∨ Yi ∩ Yj = ,
∀ i ∈ [1, n] → (min xi)
Xi = ? (→),
∀ i ∈ [1, n] → (min yi)
Yi = ? (→).
21个小正方形的边长为:
50, 42, 37, 35, 33, 29, 27, 25, 24, 19, 18, 17, 16, 15, 11, 9, 8, 7, 6, 4, 2。
大正方形的边长为112 。
NCL可以找到符合条件的所有8个解。
NCL语言
©2000-2008. ENGINEST. All rights reserved
两两不等与两两不交
Simpler • Smarter • Swifter
“两两不等的整数”与“两两不交的集合”
的约束遍布组合优化问题:
• 整数变量的两两不等
" i  j  [1, n]
xi  xj ,
• 集合变量的互不相交
" i  j  [1, n]
Ai ∩ Aj = ,
NCL语言
©2000-2008. ENGINEST. All rights reserved
集合覆盖与拼排
Simpler • Smarter • Swifter
“集合划分”和“拼排”的约束常见于计划与排程问题
中:
• 集合划分
C = ∪i  [1, n] Ai ,
" i  j  [1, n]
Ai ∩ Aj = ,
• 二维拼排
" i  j  [1, n]
xi  xj 
yi  yj,
" i  j  [1, n]
xi  xj  Ai ∩ Aj = ,
" i  j  [1, n]
A ∩A =  B ∩B
= ,
NCL语言
©2000-2008. ENGINEST. All rights reserved
整数索引与排序
Simpler • Smarter • Swifter
整数索引与排序的算法遍布计算机系统的各级运算中。
整数索引与排序的约束更是NCL语言的基础。
• 整数排序
• 整数递归排序
" i  [1, n] (
xi  [1, n],
" i  [1, n-1] (
xi  [2, n] ,
yi = zxi
zi  zxi
),
" i < j  [1, n] (
xi  xj ,
),
" i  j  [1, n-1]
xi  xj ,
zi  zj
),
NCL语言
©2000-2008. ENGINEST. All rights reserved
集合索引与排序
Simpler • Smarter • Swifter
集合索引与排序的约束是scheduling及routing类问题的基础。
• 集合排序
• 集合递归排序
" i  [1, n] (
xi  [1, n],
" i  [1, n-1] (
xi  [2, n] ,
Ai = Bxi
Bi ≺ Bxi
),
" i < j  [1, n] (
xi  xj ,
),
" i  j  [1, n-1]
xi  xj ,
Bi ≺ Bj
),
NCL语言
©2000-2008. ENGINEST. All rights reserved
求和约束
Simpler • Smarter • Swifter
变量求和的约束常见于能力(capacity)及背包等类问题:
• 实数求和
f = ∑i ∈ A gi ,
• 整数求和
y = ∑i ∈ A xi ,
• 布尔值求和
y = ∑i ∈ A ai ,
NCL语言
©2000-2008. ENGINEST. All rights reserved
累积约束
Simpler • Smarter • Swifter
• 二维累积:
"iD
yi = ∑j  A (i  Cj)  xj ,
• 递归累积:
" i  [1, n-1] (
xi  [2, n],
zx = z i + wxi
i
),
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Set Partitioning(定义)
Simpler • Smarter • Swifter
来源: K.L. Hoffman & M. Padberg, Solving airline crew scheduling problems
by branch-and-cut, Management Science, vol. 39, no. 6, pp657-682, June 1993.
给定任务集合TASK及班次集合SHIFT,对应每个班次i给定:
- 任务子集 TaskShifti
- 班次成本 costShifti
问题要求从SHIFT中选出最优的子集Partition,覆盖所有任
务且使成本最小。
该模型可以应用于如 Crew scheduling等物流优化问题。
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Set Partitioning(NCL 模型)
nbTask = ○,
Simpler • Smarter • Swifter
% Number of tasks
nbShift = ○,
TASK = [1, nbTask],
SHIFT = [1, nbShift],
% Number of shifts
∀ i ∈ SHIFT (
costShfiti
= ○,
TaskShifti = ○,
% cost of shift i
% set of tasks of shift i
),
Partition ⊂ SHIFT,
∪i ∈Partition TaskShifti = TASK,
% set partioning constraint
∀ i ≠ j ∈ Partition
TaskShifti ∩ TaskShiftj = ∅,
min
∑ i ∈PartitioncostShfiti
∀ i ∈ SHIFT → (
min inf TaskShifti
min costShfiti
max # TaskShifti
)
i ∈ Partition ?
% ordering search
% greedy search
% greedy search
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Set Partitioning(结果)
Simpler • Smarter • Swifter
nw19: k  Partition costShfiti = 10898
Partition = {62, 134, 484, 942, 1543, 2126, 2699}
nw09: k  Partition costShfiti = 67760
Partition = {3, 10, 18, 27, 42, 108, 210, 424, 810, 1217, 1306, 1929, 2170, 2581, 2651, 2904}
nw06: k  Partition costShfiti = 7810
Partition = {4, 136, 200, 421, 874, 1538, 2901, 3845}
nw07: k  Partition costShfiti = 5476
Partition = {23, 88, 591, 1943, 3017, 5150}
nw11: k  Partition costShfiti = 116256
Partition = {9, 52, 135, 221, 333..334, 368, 2414, 2960, 3638, 4077, 6286, 6940, 7380, 7511,
8438, 8696, 8753, 8819}
对于nw19, nw09, nw06, nw07, NCL在20分钟内可以找到并证明最优解;
对于nw11, NCL在46分钟内可以找到并证明最优解。
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Set Partitioning(比较)
Simpler • Smarter • Swifter
对比德国的Oz小组的结果:T. Müller. Solving set partitioning problems with
constraint programming. In PAPPACT98, pp313-332, 1998.
Müller 的Oz 算法: pre-processing + CP solver + global constraint
规模(#TASK / #SHIFT)
NCL (求解并证明最优解)
Oz (Müller算法) – 60 mn
nw19
40 / 2879
10898
11060 ( 1 %)
nw09
40 / 3103
67760
69262 ( 2 %)
nw06
50 / 6774
7810
9322 ( 19 %)
nw07
36 / 5172
5776
Not tackled
nw11
39 / 8820
116256
Not tackled
[Müller98]中所有其他问题均能被NCL轻易地求解.在此不作赘述.
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Job-shop Scheduling(定义)
Simpler
Simpler••Smarter
Smarter••Swifter
Swifter
来源: J.F. Muth & G.L. Thompson. Industrial Scheduling. Prentice Hall, 1963.
仅3类约束:
• 工序时限约束
• 优先执行约束
• 资源独占约束
优化目标: 最小化工期
- 次序变量: orderi,j 表征作业 j 在机器 i 上的工序的执行次序;
- 工序时间段变量: Taski,j表征作业 j 在机器 i 上的工序的执行时间段;
- 排序后时间段变量: Sortedi,j表征在机器 i 上的排在第j个执行的作业的工序时间段;
- 集合排序模型用来描述(资源独占性)生产排程问题:
" i  MACHINE
" j  JOB
" i  MACHINE
" j < k  JOB (
orderi,j  orderi,k,
Taski, j = Sortedi, orderi,j ,
Sortedi,j ≺ Sortedi,k
),
10台机器10件作业的MT10问题在1963-1988的25年间无人能解。
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Job-shop Scheduling(NCL 模型)
nbJob
nbMachine
TIME
JOB
MACHINE
=
=
=
=
=
O,
O,
O,
[1, nbJob],
[1, nbMachine],
" i  MACHINE (
" j  JOB (
Taski,j =
Sortedi,j =
Taski,j ⊂
Sortedi,j ⊂
orderi,j 
Taski,j =
)
[releasei,j, duei,j],
[t1i,j, t2i,j],
TIME,
TIME,
JOB,
Sorted i, orderi,j ,
Simpler
Simpler••Smarter
Smarter••Swifter
Swifter
% number of jobs
% number of machines
% time horizon
% time interval of job j on machine i
% task of the job sorted j-th on machine i
% job execution order on a machine
% Taski,j permuted to Sortedi,_ by orderi,j
" j  JOB (
oi,j = O,
⋕Task oi,j , j = O,
),
% order of job j on machines is known
% task duration is known
" j < k  JOB (
orderi,j  orderi,k,
Sortedi,j ≺ Sortedi,k ,
)
% permutation constraint over order
% precedence constraint over sorted tasks
),
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Job-shop Scheduling(NCL 模型)
" j  JOB
" i < k  MACHINE
Taskoi,j, j ≺ Taskok,j, j ,
" i  MACHINE → (
min k  JOB ⋕△Sortedi,k ,
)
Simpler
Simpler••Smarter
Smarter••Swifter
Swifter
% ordering of job j on the machines
% select the most saturated machine
" j  JOB → (
min k △orderi,j ⋕△Sortedi,k / ⋕△orderi,j, % select the job with least slack
max ⋕△Taski,j
% select the task with least slack
)
orderi,j = ? (),
% query on execution order
" i  MACHINE
" j  JOB
releasei,j = ?,
% query on release
min
% minimize the maximum of due dates
maxi  MACHINE t2i,n .
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Job-shop Scheduling (结果与比较)
Simpler
Simpler••Smarter
Smarter••Swifter
Swifter
参见: D. Applegate and B. Cook. A Computational Study of the Job Shop
Scheduling Problem, Operations Research Society of America, vol 3, no 2, 1991.
NCL在2 分钟内可求解著名的MT10 (10*10的问题)
• 简洁纯净的数理逻辑模型
• NCL的集合排序模型可求解上文中所有10*10的问题
• NCL可求解(最优证明)部分10*15,15*15的问题
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Pickup and Delivery(定义)
Simpler • Smarter • Swifter
来源: H.B.Li & A.Lim, A Meta-Heuristic for the Pickup and
Delivery Problem with Time Windows, 2001.
带时间窗口的取货送货问题(PDPTW)涉及到的约束有:递归排
序、累积能力约束、时间窗口约束、优先约束、耦合约束等。
Li & Lim使用启发式方法求解可行解。无法求证最优性。
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Pickup and Delivery(NCL 模型)
Simpler • Smarter • Swifter
订单的集合划分约束
∪i  TRUCK OrderTrucki = ORDER,
" i  j  TRUCK
OrderTrucki ∩ OrderTruckj = ,
路径约束(集合递归排序)
" i  j  SOURCEORDER (
TimeOrderi ≺ TimeOrdernextOrder i ,
nextOrderi  nextOrderi
),
时序约束与偶合约束
" i  ORDER (
toOrderi > 0  (
TimeOrderi ≺ TimeOrdertoOrderi,
truckOrderi = truckOrdertoOrderi
),
),
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Pickup and Delivery(结果与比较)
Simpler • Smarter • Swifter
Li & Lim使用启发式方法求解可行解。无法求证最优性。
NCL可以对此问题的多组数据,找到最优解并证明最优解。
LC101结果图
LC201结果图
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL建模举例: Pickup and Delivery(结果与比较)
Simpler • Smarter • Swifter
Li & Lim使用启发式方法求解可行解。无法求证最优性。
NCL可以对此问题的多组数据,找到最优解并证明最优解。
LR101结果图
Li&Lim找到的解: 1650
NCL找到最优解: 1638
LRC101结果图
Li&Lim找到的解: 1708
NCL找到最优解: 1702
NCL语言
©2000-2008. ENGINEST. All rights reserved
工业化
Simpler • Smarter • Swifter
从实验室到实战应用是个艰难的过程,将求解
系统工业化是在诸多技术成熟的基础上得来的
应用举例
运输:车辆路径优化、多模式运输
生产制造:流程优化与离散排程优化
人力资源:特殊使命与呼叫中心排班
NCL语言
©2000-2008. ENGINEST. All rights reserved
面对工业问题
Simpler • Smarter • Swifter
工业问题远比单纯的学术问题复杂得多
约束复杂、建模困难:
学术问题涉及几类约束,工业问题往往涉及数十类
规模大:
10台机器10件作业的Jobshop问题是学校的问题,
工业问题可上升到数万道工序的数量级
对实时性、可视化、直觉式交互、二次优化有很强需求
实施困难: 研发成本高、部署周期长、见效慢
需要平台化的开发工具进行工程化的开发
NCL语言
©2000-2008. ENGINEST. All rights reserved
POEM平台
Simpler • Smarter • Swifter
POEM Solution Builder
逻辑 + 运筹学算法 + 求解规则 + 可视化
NCL语言
集优化及求解规则为一体的支
持业务逻辑建模和复杂问题求
解的智能描述型语言。
不仅是一个开发工具,而且是一个部件化的应用平台。
内嵌SQL语言,支持Oracle、DB2、SQL Server等数据库。
支持与C++ 、Java、VB等编程语言的接口;支持web应
用(例如:asp.net) 。
在培训、管理、开发、部署和维护上均显优越性。
PoemView可视化脚本
管理(地图、时间等)可视化和
“What If...” (如果...会怎样)
式的交互。
POEM支持模块化的优化方案:
一个系统  各类业务优化方案
一套软件  开发+应用部署
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL优化的效益: 例1
Simpler • Smarter • Swifter
法国天然气供应商Antargaz采用NCL优化管理70多个仓储中心向全法国
22万家客户进行天然气的液罐车输送。采用NCL优化管理,使Antargaz
大幅削减成本,显著提高配送效率,使用户得到业界最佳的服务,获得
市场最佳的口碑。
 危险品运输受公路的准入限制较高
 对数据的精准度要求较高
 对软件系统的逻辑性、灵活性、优化能力要求较高
调度中心数(个)
配送车辆数(辆/人)
配送员(个)
配送成本(欧元/吨)
市场占有率
优化前
优化后
16
2
6
12-40
80
40
120-130
90-100
第3位
第2位
NCL优化 = 盈利 + 胜出
NCL语言
©2000-2008. ENGINEST. All rights reserved
NCL优化的效益: 例2
Simpler • Smarter • Swifter
法国天然气供应商Aquitaine Pyrénées Gaz、Gaz Est Distribution、
Rhône Méditerranée Gaz、Nord GPL、Wogegal、Maison du Butane
等采用POEM优化天然气的定量周期性(8星期)配送计划。
 对客户的配送频率及卡车的客户分配的重组优化带来>20%配送量的提升
 削减 5-25% 的运输费用
 降低物流配送成本,减少车辆使用量,优化行车路径
 提高调度计划及排程的效率,使商业运作更逻辑化、合理化
 支持直觉式的“What If...”交互, 可灵活、及时的再调度
 减少对业务操作人员的依赖性...
一个实例:Rhône Méditerranée Gaz的反馈信息
6个月的累计公里数/卡车
司机工作量(天数/星期)
每天配送量(公斤/天)
优化前
优化后
优化量
20820
18960
9.8%
4
3
25%
2100
2675
27%
NCL语言
©2000-2008. ENGINEST. All rights reserved
路径优化与配送
Simpler • Smarter • Swifter
路径优化VRP (Vehicle Routing Problem)及其特例取货送货问题PDP (Pickup and
Delivery Problem)是供应链节点上的主要优化问题,它涉及对车辆的全局最优调度
及最优的路线规划。
优化目标:
车辆约束:
运输能力: 载量、时间量、时间跨度、多车次
最小化费用
相容性:车辆对客户的相容性(产品类、准入吨位、工作日期)
最小化卡车数
耦合性:不同的目的港要求两个订单由不同的车辆服务
最小化工作时间量
客户优先级
最小化工作时间跨度
其他: 在岗与否、工作条例、订单优先权...
最小化行程...
线路约束:
距离约束: 时间、里程、费用为度量的距离约束
工作条例: 工作时间量、间休、工作时间跨度
时间窗口: 要求早上(而非下午)供货
优先约束: 订单A优先订单B...
NCL语言
©2000-2008. ENGINEST. All rights reserved
集成到IE上的VRP/PDP系统
Simpler • Smarter • Swifter
模块化集成
• 优化与可视化
• Web Service技术
• 支持多客户端的访问
客户服务器架构
• 客户端:
Internet Explorer
• 计算服务器:
PoemServer
• 数据库服务器:
Oracle, DB2,
SQL Server
NCL语言
©2000-2008. ENGINEST. All rights reserved
多模式运输优化MMTP
Simpler • Smarter • Swifter
多模式运输优化是将传统运输方式下相互独立的各种运输方式按照科学、合理的流
程有效地组织起来,减少中间储存和中转时间,从而使客户获得最佳的运输路线、
最短的运输时间、最高的运输效率、最安全的运输保障和最低的运输成本。
约束:
运输工具: 飞机、卡车、火车、轮船
供货商的供货能力
运输班次的运输能力
运输班次的时刻表
时间窗口...
优化目标:
 加快货物递送
 降低运输成本...
典型应用:
 邮件快递
 远程供货
NCL语言
©2000-2008. ENGINEST. All rights reserved
集成到IE上的MMTP系统
Simpler • Smarter • Swifter
模块化集成
• 优化与可视化
• Web Service技术
• 支持多客户端的访问
客户服务器架构
• 客户端:
Internet Explorer
• 计算服务器:
PoemServer
• 数据库服务器:
Oracle, DB2,
SQL Server
NCL语言
©2000-2008. ENGINEST. All rights reserved
制造业高级计划与排程(APS)
Simpler • Smarter • Swifter
资源约束:
 资源生产能力
 资源并行加工能力
 资源使用方式
 资源工作日历
 日工作时间段(多班次)
 资源损耗上限...
工序级约束:
 工序的资源需求
 工序的工艺流程
 工序的时序控制(如转移批量)
 工序的加工时间
 工序的加工时间窗口...
作业级约束:
 最早开工时间
 最晚完工时间
 与上周期作业工序的衔接
 不同作业的资源耦合
 作业间后继关系
 作业的调度次序
 作业相互间的次序关系
 作业的优先级...
繁杂的个性化约束:
 下班前不开工
 小批量遗留工序当班完成
 投料间隔...
优化目标:
 订单最小延迟时间量
 最小化工期
 主要设备最大利用率...
NCL语言
©2000-2008. ENGINEST. All rights reserved
APS的直觉式交互与再排程
Simpler • Smarter • Swifter
不可开工时间段
将36号工序
从资源SL125-1
用鼠标拖至
资源SL125-2上
的5号工序前
What If 式交互:
NCL引擎对交
互结果进行逻辑
校验, 成功则确
认交互, 失败则
保持原态.
先将相关作业的所有工序松弛; 加入与拖拉有关的资源及时间约束; NCL二次排程求解
NCL语言
©2000-2008. ENGINEST. All rights reserved
谢谢
Simpler • Smarter • Swifter
谢谢
北京营智优化科技有限公司
ENGINEST (France)
北京市海淀区上地信息路26号710-712
1, Allée de l'Alzette
邮编:100085
54500, Vandoeuvre-Lès-Nancy, France
www.enginest.cn
www.enginest.com
电话: +86 (10) 82 89 87 52
Tel : +33 (0) 3 83 55 12 99
传真: +86 (10) 62 98 72 90
Fax: +33 (0) 3 83 97 05 52
NCL语言
©2000-2008. ENGINEST. All rights reserved