Differences

This shows you the differences between two versions of the page.

Link to this comparison view

home_test_julia [2017/02/07 09:33]
antonello
home_test_julia [2018/06/18 15:11]
Line 1: Line 1:
-not in code 
- 
-<code julia> 
- 
- 
-Transposition in JuMP of the basic transport model used in the GAMS tutorial 
- 
-This problem finds a least cost shipping schedule that meets 
-requirements at markets and supplies at factories. 
- 
-- Original formulation: Dantzig, G B, Chapter 3.3. In Linear Programming and Extensions. 
-Princeton University Press, Princeton, New Jersey, 1963. 
-- Gams implementation: This formulation is described in detail in: 
-Rosenthal, R E, Chapter 2: A GAMS Tutorial. In GAMS: A User's Guide. 
-The Scientific Press, Redwood City, California, 1988. 
-- JuMP implementation: Antonello Lobianco 
- 
- 
-using JuMP, DataFrames 
- 
-# Sets 
-plants  = ["seattle","san_diego"         # canning plants 
-markets = ["new_york","chicago","topeka" # markets 
- 
-# Parameters 
-a = Dict(              # capacity of plant i in cases 
-  "seattle"   => 350, 
-  "san_diego" => 600, 
-) 
-b = Dict(              # demand at market j in cases 
-  "new_york"  => 325, 
-  "chicago"   => 300, 
-  "topeka"    => 275, 
-) 
- 
-#  distance in thousands of miles 
-d_table = wsv""" 
-plants     new_york  chicago  topeka 
-seattle    2.5       1.7      1.8 
-san_diego  2.5       1.8      1.4 
-""" 
-d = Dict( (r[:plants],m) => r[Symbol(m)] for r in eachrow(d_table), m in markets) 
- 
-f = 90 # freight in dollars per case per thousand miles 
- 
-c = Dict() # transport cost in thousands of dollars per case ; 
-[ c[p,m] = f * d[p,m] / 1000 for p in plants, m in markets] 
- 
-# Model declaration 
-trmodel = Model() # transport model 
- 
-# Variables 
-@variables trmodel begin 
-    x[p in plants, m in markets] >= 0 # shipment quantities in cases 
-end 
- 
-# Constraints 
-@constraints trmodel begin 
-    supply[p in plants],   # observe supply limit at plant p 
-        sum(x[p,m] for m in markets)  <=  a[p] 
-    demand[m in markets],  # satisfy demand at market m 
-        sum(x[p,m] for p in plants)  >=  b[m] 
-end 
- 
-# Objective 
-@objective trmodel Min begin 
-    sum(c[p,m]*x[p,m] for p in plants, m in markets) 
-end 
- 
-print(trmodel) 
- 
-status = solve(trmodel) 
- 
-if status == :Optimal 
-    println("Objective value: ", getobjectivevalue(trmodel)) 
-    println("Shipped quantities: ") 
-    println(getvalue(x)) 
-    println("Shadow prices of supply:") 
-    [println("$p = $(getdual(supply[p]))") for p in plants] 
-    println("Shadow prices of demand:") 
-    [println("$m = $(getdual(demand[m]))") for m in markets] 
- 
-else 
-    println("Model didn't solved") 
-    println(status) 
-end 
-  
-# Expected result: 
-# obj= 153.675 
-#['seattle','new-york'  = 50 
-#['seattle','chicago'   = 300 
-#['seattle','topeka'    = 0 
-#['san-diego','new-york'] = 275 
-#['san-diego','chicago' = 0 
-#['san-diego','topeka'  = 275 
-</code> 
  
home_test_julia.txt · Last modified: 2018/06/18 15:11 (external edit)
CC Attribution-Noncommercial-Share Alike 4.0 International
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0