SHARE
TWEET

Untitled

a guest Apr 18th, 2019 67 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. # !/usr/bin/env python3
  2. import sys
  3. import gurobipy as gb
  4. # pilots
  5. n = 12;
  6. # dates
  7. m = 4;
  8. # commissioners
  9. k = 5;
  10.  
  11. cij = [[1, 0, 0, 1],
  12.     [1, 0, 1, 1],
  13.      [0, 0, 0, 1],
  14.      [0, 0, 1, 1],
  15.      [1, 1, 1, 1],
  16.      [0, 0, 0, 1],
  17.      [1, 0, 1, 1],
  18.      [0, 0, 0, 0],
  19.      [0, 1, 0, 1],
  20.      [1, 0, 0, 1],
  21.      [1, 1, 0, 1],
  22.      [0, 0, 1, 1]]
  23.  
  24. dlj = [[1, 1, 0, 1],
  25.     [1, 0, 0, 1],
  26.      [1, 1, 0, 1],
  27.      [0, 0, 0, 1],
  28.      [1, 1, 1, 1],
  29.     ]
  30.  
  31. model = gb.Model()
  32.  
  33. # pilot i attends date j
  34. aij = [];
  35. for i in range(0, n):
  36.     aij.append([model.addVar(lb=0, ub=1, vtype=gb.GRB.INTEGER, name="a_" + str(i)+"_" + str(j)) for j in range(0, m)])
  37.  
  38. # commissioner l attends date j
  39. blj = [];
  40. for l in range(0, k):
  41.     blj.append([model.addVar(lb=0, ub=1, vtype=gb.GRB.INTEGER, name="b_" + str(l)+"_" + str(j)) for j in range(0, m)])
  42.  
  43. # each pilot attends a date exactly once
  44. sum = 0;
  45. for i in range(0, n):
  46.     for j in range(0, m):
  47.         sum += aij[i][j]
  48. model.addConstr(sum == 1)
  49.  
  50. # number of pilots must equal to the number of commissioners
  51. for j in range(0, m):
  52.     model.addConstr(gb.quicksum([aij[i][j] for i in range(0, n)]) == gb.quicksum([blj[l][j] for l in range(0, k)]))
  53.  
  54.  
  55.  
  56. # each pilot will come to a date he can
  57. sum =0;
  58. for i in range(0, n):
  59.     for j in range(0, m):
  60.         sum += aij[i][j]*cij[i][j]
  61. model.addConstr(sum == 1)
  62.  
  63.  
  64. # commissioner can come to a date he will come
  65. for l in range(0, k):
  66.     for j in range(0, m):
  67.         model.addConstr(blj[l][j] <= dlj[l][j])
  68.  
  69.  
  70. model.update()
  71. model.optimize()
  72. model.write("pilotsRes.lp")
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top