Title: Supply Chain Modeling Language for Optimization -Implementation in Python-
1Supply Chain Modeling Language for
Optimization-Implementation in Python-
- Mikio KUBO
- Tokyo University of Marine Science of Technology
2Agenda
- Whats the SCML (Supply Chain Modeling Language)
- How to implement the SCML in Python
- (Applications)
3What is the SCML?
proposed in 2009 by M. K. (international
scheduling symposium)
Supply Chain Optimization Models
Solvers (using metaheuristics and/or MIP/CP
solvers)
SCML
SCML.py
Combinatorial Optimization Models
4Supply chain optimization models
- resource constrained scheduling (RCS)
- lot-sizing (LS)
- logistics network design (LND)
- safety stock allocation (SSA)
- economic order quantity (EOQ)
- inventory policy optimization (IPO)
- vehicle routing (VR)
5Combinatorial optimization problems
- set covering problem (SC)
- generalized assignment problem (GA)
- rectangular packing problem (RP)
- facility location problem (FL)
- multi-constrained knapsack problem (MK)
- graph coloring problem (GC)
- graph partitioning problem (GP)
- maximum stable set problem (MSS)
- (constrained) bin packing problem (BP)
- quadratic assignment problem (QA)
6Previous SCO models
Flow models (LND, FL)
Scheduling models (RCS, LS, VR)
Multi-echelon inventory models (IPO, SSA, EOQ, LS)
Constrained optimization models (Algebraic
modeling languages)
7Previous SCO models
Network(Node, Arc), Product
Activity, Resource
Flow models (LND, FL)
Scheduling models (RCS, LS, VR)
Multi-echelon inventory models (IPO, SSA, EOQ, LS)
Constrained optimization models (Algebraic
modeling languages)
Product (BOM)
Variable, Constraint
8Activity based view of linear programming
Dantzig-Wolfe (1963)
matrix Aaij
row (constraint) resource
b
-
system input of resource
activity i consumes resource j by aij
column (variable) activity Xj
9Problem class
Gurobi (MIP) GLPK (MIP/Free) SCOP (CP)
10Entities of the SCML
- temporal
- piecewise
- horizon
- state
- solver
- etc., ...
- activity
- resource
- product
- node
- arc
Basic entities
11Activity
- Every action that requires the resources,
consumes and/or produces the product, and derives
the cost
Fixed Cost Variable Cost
consume
produce
activity
product
product
require
resource
12Resource
- Every entity of limited availability required
and/or consumed by activitiesOur focus is on
the physical, human, and financial resources.
13Product
- Products are consumed and/or produced by
activities - Products are items or commodities through the
network
consume
produce
activity
product
product
14Product
- Products are consumed and/or produced by
activities - Products are items or commodities through the
network
arc
node
node
product
product
15Node and arc
- Network is defined by the set of nodes and arcs
arc
node
node
16Declaration and attributes
activity declaration activity activity-name
attributes
- activity
- resource
- product
- node
- arc
attribute duedate integer weight
integer consume product-name unit real
... produce product-name unit real ... ...
17Key concepts for implementing the SCML in Python
- Inheritance / Composition
- Hierarchy
- Global / Local
18Inheritance
19Entity class
- Entity has a name and attributes (defined by
arguments as a dictionary)class Entity()
def __init__(self, name"",args) - self.namename
- self.attributescopy.deepcopy(args)
20An activity object for LS
- act1Activity("act1",variablecost1,
fixedcost53,,leadtime3, resources"res1"1,co
nsume"parts1"1,"parts2"2,produce"prod1"1
) - Class Activity(Entity)
-
consume
prod1
parts1
activity
produce
parts2
resource
21Composition
22Hierarchy
- Hierarchy can be defined on every entity using
attribute children - Every attribute of a parent is copied to its
children (same as inheritance)
activity
children
Mode
Mode
Mode
23Example an activity object for RP
- item1Activity("item1, cost10,
childrenmode1" resources"width"3,"heig
ht"2 ,mode2 resources"width"2,"heig
ht"3, cost5)
mode2 (cost5)
mode1 (cost10)
24Global / Local
- Local products can be defined on nodes
- Local activities and resources can be defined on
arcs, i.e., arcs can own activities and resources - Otherwise, entities are called global.
arc
node
node
produce
consume
activity
product
product
require
resource
25Lot-sizing (LS) model
- horizon, activity, resource, product
consume
product
activity
produce
resource
product
26Example for solving LS in python (1)
- from SCML import import everything from
SCML module - sampleSCML() generate SCML class
object - sample.setHorizon(5) set the planning horizon
to 5 - generate the product class objects
- prod1Product("prod1",demand5,5,6,7,8,
holdingcost5,leadtime
1) - parts1Product("parts1",holdingcost1,leadtime3)
- parts2Product("parts2",holdingcost1,leadtime1)
- generate the resource class object
- res1Resource(res1,capacity(0,inf)25)
27Example for solving LS in python (2)
- generate the activity class object
- act1Activity("act1",variablecost1,fixedcost53,
resources"res1"1,consume"parts1"1,"parts2"
2,generate"prod1"1) - add the generated objects into the problem class
- sample.addActivity(act1)
- sample.addProducts(prod1,parts1,parts2)
- sample.addResource(res1)
- sample.solve(LS) solve by the lot-sizing
solver
28Future plans
- Applications (hybrid models)
- Lot-sizing Inventory policy optimization
- Logistics network design Resource constrained
scheduling Lot-sizing - Excel interface for beginners
- A book on the SCML (will be published in 2010-11
from Asakura Publishers)