280 likes | 570 Views
Supply Chain Modeling Language for Optimization -Implementation in Python-. Mikio KUBO Tokyo University of Marine Science of Technology. Agenda. What’s the SCML (Supply Chain Modeling Language) How to implement the SCML in Python (Applications). What is the SCML?.
E N D
Supply Chain Modeling Language for Optimization-Implementation in Python- Mikio KUBO Tokyo University of Marine Science of Technology
Agenda • What’s the SCML (Supply Chain Modeling Language) • How to implement the SCML in Python • (Applications)
What 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
Supply 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)
Combinatorial 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)
Previous SCO models Flow models (LND, FL) Scheduling models (RCS, LS, VR) Constrained optimization models (Algebraic modeling languages) Multi-echelon inventory models (IPO, SSA, EOQ, LS)
Previous SCO models Network=(Node, Arc), Product Activity, Resource Flow models (LND, FL) Scheduling models (RCS, LS, VR) Constrained optimization models (Algebraic modeling languages) Multi-echelon inventory models (IPO, SSA, EOQ, LS) Product (BOM) Variable, Constraint
Activity based view of linear programming Dantzig-Wolfe (1963) matrix A=[aij] row (constraint) =resource b + + - system input of resource activity i consumes resource j byaij column (variable) =activity Xj
Problem class Gurobi (MIP) GLPK (MIP/Free) SCOP (CP)
Entities of the SCML • temporal • piecewise • horizon • state • solver • etc., ... • activity • resource • product • node • arc Basic entities
Activity • Every action that requires the resources, consumes and/or produces the product, and derives the cost Fixed Cost Variable Cost consume produce product activity product require resource
Resource • Every entity of limited availability required and/or consumed by activitiesOur focus is on the physical, human, and financial resources.
Product • Products are consumed and/or produced by activities • Products are items or commodities through the network consume produce product activity product
Product • Products are consumed and/or produced by activities • Products are items or commodities through the network arc node node product product
Node and arc • Network is defined by the set of nodes and arcs arc node node
Declaration 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+ ... ...
Key concepts for implementing the SCML in Python • Inheritance / Composition • Hierarchy • Global / Local
Entity class Entity has a name and attributes (defined by arguments as a dictionary)class Entity(): def __init__(self, name="",**args): self.name=name self.attributes=copy.deepcopy(args)
An activity object for LS act1=Activity("act1",variablecost=1, fixedcost=53,,leadtime=3, resources={"res1":1},consume={"parts1":1,"parts2":2},produce={"prod1":1}) Class Activity(Entity): consume prod1 parts1 activity produce parts2 resource
Hierarchy • 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
Example: an activity object for RP item1=Activity("item1”, cost=10, children=“mode1": {resources:{"width":3,"height":2}} ,“mode2”: {resources={"width":2,"height":3}, cost=5}) mode2 (cost=5) mode1 (cost=10)
Global / 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 product activity product require resource
Lot-sizing (LS) model • horizon, activity, resource, product consume product activity produce resource product
Example for solving LS in python (1) from SCML import * #import everything from SCML module sample=SCML() #generate SCML class object sample.setHorizon(5) #set the planning horizon to 5 #generate the product class objects prod1=Product("prod1",demand=[5,5,6,7,8], holdingcost=5,leadtime=1) parts1=Product("parts1",holdingcost=1,leadtime=3) parts2=Product("parts2",holdingcost=1,leadtime=1) #generate the resource class object res1=Resource(“res1”,capacity={(0,“inf”):25})
Example for solving LS in python (2) #generate the activity class object act1=Activity("act1",variablecost=1,fixedcost=53,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
Future 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)