def main(): import sys import random import utils n=10 degree=2 if len(sys.argv)<=1: print('Usage is main [data|run] [seed]') return elif len(sys.argv)>=2: random.seed(int(sys.argv[2])) C=gen_data(lambda t: 1.8*t*t - 1.5*t + 0.3, n) if sys.argv[1]=='data': C.insert(0,['$t_i$','$f_i$']) utils.printmat(C,True) elif sys.argv[1]=='run': rc0,v,G=solve_model(C,degree,0) rc1,v,G1=solve_model(C,degree,1) T=[] error=0 for i in range(n): fti = sum(G[j]*C[i][0]**j for j in range(degree+1)) fti1 = sum(G1[j]*C[i][0]**j for j in range(degree+1)) error += abs(fti - C[i][1]) T.append([C[i][0], C[i][1], fti, abs(C[i][1]-fti), fti1, abs(C[i][1]-fti1)]) T.insert(0,['$t_i$','$f_i$', '$f_{sum}(t_i)$', '$e_i^{sum}$', '$f_{max}(t_i)$', '$e_i^{max}$']) utils.printmat(T,True)
def main(): import sys import random import utils n = 8 if len(sys.argv) <= 1: print('Usage is main [data|run] [seed]') return elif len(sys.argv) >= 2: random.seed(int(sys.argv[2])) C = transship_dist.gen_data(n) if sys.argv[1] == 'data': for i in range(n): C[i].insert(0, 'N' + str(i)) C[-1].insert(0, 'Demand') C.insert(0, ['From/To'] + ['N' + str(i) for i in range(n)] + ['Supply']) utils.printmat(C) elif sys.argv[1] == 'run': rc, V, G = transship_dist.solve_model(C) if rc != 0: print 'Infeasible' else: T = [] for i in range(n): T.append([0 for j in range(n + 1)]) tot = 0 for j in range(n): T[i][j] = int(G[i][j]) tot += int(G[i][j]) T[i][-1] = tot TT = [] for j in range(n): TT.append(sum([T[i][j] for i in range(n)])) TT.insert(0, 'In') T.append(TT) for i in range(n): T[i].insert(0, 'N' + str(i)) T.insert(0, ['From/To'] + ['N' + str(i) for i in range(n)] + ['Out']) utils.printmat(T)
def main(): import sys import random import utils m = 3 n = 7 if len(sys.argv) <= 1: print('Usage is main [data|run] [seed]') return elif len(sys.argv) >= 2: random.seed(int(sys.argv[2])) C = gen_data(m, n) if sys.argv[1] == 'data': for i in range(m): C[i].insert(0, 'Plant ' + str(i)) C[-1].insert(0, 'Demand') C.insert(0, ['From/To'] + ['City' + str(i) for i in range(n)] + ['Supply']) utils.printmat(C) elif sys.argv[1] == 'run': rc, Value, G = solve_model(C) T = [] for i in range(m): T.append([0 for j in range(n + 1)]) tot = 0 for j in range(n): T[i][j] = int(G[i][j]) tot += int(G[i][j]) T[i][-1] = tot TT = [] for j in range(n): TT.append(sum([T[i][j] for i in range(m)])) TT.insert(0, 'Total') T.append(TT) for i in range(m): T[i].insert(0, 'Plant ' + str(i)) T.insert(0, ['From/To'] + ['City' + str(i) for i in range(n)] + ['Total']) utils.printmat(T)
def main(): import sys import random import utils n=8 if len(sys.argv)<=1: print('Usage is main [data|run] [seed]') return elif len(sys.argv)>=2: random.seed(int(sys.argv[2])) C=transship_dist.gen_data(n) if sys.argv[1]=='data': for i in range(n): C[i].insert(0,'N'+str(i)) C[-1].insert(0,'Demand') C.insert(0,['From/To']+['N'+str(i) for i in range(n)]+['Supply']) utils.printmat(C) elif sys.argv[1]=='run': rc,V,G=transship_dist.solve_model(C) if rc != 0: print 'Infeasible' else: T=[] for i in range(n): T.append([0 for j in range(n+1)]) tot = 0 for j in range(n): T[i][j] = int(G[i][j]) tot += int(G[i][j]) T[i][-1] = tot TT = [] for j in range(n): TT.append(sum([T[i][j] for i in range(n)])) TT.insert(0,'In') T.append(TT) for i in range(n): T[i].insert(0,'N'+str(i)) T.insert(0,['From/To']+['N'+str(i) for i in range(n)]+['Out']) utils.printmat(T)
def main(): import sys import random import utils m=3 n=7 if len(sys.argv)<=1: print('Usage is main [data|run] [seed]') return elif len(sys.argv)>=2: random.seed(int(sys.argv[2])) C=gen_data(m,n) if sys.argv[1]=='data': for i in range(m): C[i].insert(0,'Plant '+str(i)) C[-1].insert(0,'Demand') C.insert(0,['From/To']+['City '+str(i) for i in range(n)]+['Supply']) utils.printmat(C) elif sys.argv[1]=='run': rc,Value,G=solve_model(C) T=[] for i in range(m): T.append([0 for j in range(n+1)]) tot = 0 for j in range(n): T[i][j] = int(G[i][j]) tot += int(G[i][j]) T[i][-1] = tot TT = [] for j in range(n): TT.append(sum([T[i][j] for i in range(m)])) TT.insert(0,'Total') T.append(TT) for i in range(m): T[i].insert(0,'Plant '+str(i)) T.insert(0,['From/To']+['City '+str(i) for i in range(n)]+['Total']) utils.printmat(T)
def main(): import sys import random import utils n=12 if len(sys.argv)<=1: print('Usage is main [data|run] [seed]') return elif len(sys.argv)>=3: random.seed(int(sys.argv[2])) C=gen_data(n) if sys.argv[1]=='data': T=[] for i in range(n): TT=[C[i][0],C[i][1]] s='{' for j in C[i][2]: s = s+' '+str(j) s=s+' }' TT.append(s) T.append(TT) T.insert(0,['Task', 'Duration','Preceding tasks']) utils.printmat(T,True) elif sys.argv[1]=='run' or sys.argv[1]=='runclp': if sys.argv[1]=='run': rc,V,G=solve_model(C) else: rc,V,G=solve_model_clp(C) T=[] TT=['Task']+[C[i][0] for i in range(n)] T.append(TT) TT=['Start']+[int(G[i]) for i in range(n)] T.append(TT) TT=['End']+[int(G[i]+C[i][1]) for i in range(n)] T.append(TT) utils.printmat(T,True)
def main(): import sys import random import utils n = 12 if len(sys.argv) <= 1: print('Usage is main [data|run] [seed]') return elif len(sys.argv) >= 3: random.seed(int(sys.argv[2])) C = gen_data(n) if sys.argv[1] == 'data': T = [] for i in range(n): TT = [C[i][0], C[i][1]] s = '{' for j in C[i][2]: s = s + ' ' + str(j) s = s + ' }' TT.append(s) T.append(TT) T.insert(0, ['Task', 'Duration', 'Preceding tasks']) utils.printmat(T, True) elif sys.argv[1] == 'run' or sys.argv[1] == 'runclp': if sys.argv[1] == 'run': rc, V, G = solve_model(C) else: rc, V, G = solve_model_clp(C) T = [] TT = ['Task'] + [C[i][0] for i in range(n)] T.append(TT) TT = ['Start'] + [int(G[i]) for i in range(n)] T.append(TT) TT = ['End'] + [int(G[i] + C[i][1]) for i in range(n)] T.append(TT) utils.printmat(T, True)
def main(): import sys import random import utils n=8 m=3 if len(sys.argv)<=1: print('Usage is main [raw|ref|run] [seed]') return elif len(sys.argv)>=3: random.seed(int(sys.argv[2])) C=gen_raw(n) D=gen_refined(m) if sys.argv[1]=='raw': for i in range(n): C[i].insert(0,'R'+str(i)) C.insert(0,['Gas','Octane', 'Availability','Cost']) utils.printmat(C) elif sys.argv[1]=='ref': for i in range(m): D[i].insert(0,'F'+str(i)) D.insert(0,['Gas','Octane','Min demand.', 'Max demand.','Price']) utils.printmat(D) elif sys.argv[1]=='run': rc,Value,G=solve_gas(C,D) Price=0.0 Cost=0.0 T=[] for i in range(n+2): T=T+[[0]*(2+m)] for i in range(n): for j in range(m): T[i][j] = round(G[i][j],2) T[i][m]=round(sum([G[i][j] for j in range(m)]),2) T[i][m+1]=round(sum([G[i][j]*C[i][2] for j in range(m)]),2) Price += sum([G[i][j]*D[j][3] for j in range(m)]) for j in range(m): T[n][j]=round(sum(G[i][j] for i in range(n)),2) T[n+1][j]=round(sum([G[i][j]*D[j][3] for i in range(n)]),2) Cost += sum([G[i][j]*C[i][2] for i in range(n)]) T.insert(0,['F0','F1','F2','Barrels','Cost']) for i in range(len(T)): if i == 0: T[i].insert(0,"") elif i <= n: T[i].insert(0,"R"+str(i-1)) elif i == n+1: T[i].insert(0,"Barrels") else: T[i].insert(0,"Price") T[2+n][2+m]='{0:.2f}'.format(Price-Cost) utils.printmat(T)
def main(): import sys import random import utils n = 8 m = 3 if len(sys.argv) <= 1: print('Usage is main [raw|ref|run] [seed]') return elif len(sys.argv) >= 3: random.seed(int(sys.argv[2])) C = gen_raw(n) D = gen_refined(m) if sys.argv[1] == 'raw': for i in range(n): C[i].insert(0, 'R' + str(i)) C.insert(0, ['Gas', 'Octane', 'Availability', 'Cost']) utils.printmat(C) elif sys.argv[1] == 'ref': for i in range(m): D[i].insert(0, 'F' + str(i)) D.insert(0, ['Gas', 'Octane', 'Min demand.', 'Max demand.', 'Price']) utils.printmat(D) elif sys.argv[1] == 'run': rc, Value, G = solve_gas(C, D) Price = 0.0 Cost = 0.0 T = [] for i in range(n + 2): T = T + [[0] * (2 + m)] for i in range(n): for j in range(m): T[i][j] = round(G[i][j], 2) T[i][m] = round(sum([G[i][j] for j in range(m)]), 2) T[i][m + 1] = round(sum([G[i][j] * C[i][2] for j in range(m)]), 2) Price += sum([G[i][j] * D[j][3] for j in range(m)]) for j in range(m): T[n][j] = round(sum(G[i][j] for i in range(n)), 2) T[n + 1][j] = round(sum([G[i][j] * D[j][3] for i in range(n)]), 2) Cost += sum([G[i][j] * C[i][2] for i in range(n)]) T.insert(0, ['F0', 'F1', 'F2', 'Barrels', 'Cost']) for i in range(len(T)): if i == 0: T[i].insert(0, "") elif i <= n: T[i].insert(0, "R" + str(i - 1)) elif i == n + 1: T[i].insert(0, "Barrels") else: T[i].insert(0, "Price") T[2 + n][2 + m] = '{0:.2f}'.format(Price - Cost) utils.printmat(T)
def main(): import sys import random import utils m = 12 n = 7 k = 5 if len(sys.argv) <= 1: print('Usage is main [content|target|cost|inventory|run] [seed]') return elif len(sys.argv) > 2: random.seed(int(sys.argv[2])) C = gen_data_content(m, n) T = gen_data_target(C) K = gen_data_cost(m, k) I = gen_data_inventory(m) if sys.argv[1] == 'content': for j in range(m): C[j].insert(0, 'O' + str(j)) C.insert(0, [''] + ['A' + str(i) for i in range(n)]) utils.printmat(C, False, 1) elif sys.argv[1] == 'target': T.insert(0, [''] + ['A' + str(i) for i in range(n)]) T[1].insert(0, 'Min') T[2].insert(0, 'Max') utils.printmat(T, True, 2) elif sys.argv[1] == 'cost': for j in range(m): K[j].insert(0, 'O' + str(j)) K.insert(0, [''] + ['Month ' + str(i) for i in range(k)]) utils.printmat(K) elif sys.argv[1] == 'inventory': for j in range(m): I[j].insert(0, 'O' + str(j)) I.insert(0, ['Oil', 'Held at beginning(in tons)']) utils.printmat(I) elif sys.argv[1] == 'run': Demand = 5000 Limits = [500, 2000] Cost = 5 rc, Value, B, L, H, P, A, CP, CS = solve_model(C, T, K, I, Demand, Cost, Limits) if len(B): print Value A.append([0 for l in range(len(A[0]))]) for j in range(len(A) - 1): for l in range(len(A[0])): A[j][l] = A[j][l] / P[l] A[-1][l] += A[j][l] for j in range(m): B[j].insert(0, 'O' + str(j)) L[j].insert(0, 'O' + str(j)) H[j].insert(0, 'O' + str(j)) for l in range(n): A[l].insert(0, 'A' + str(l)) A[-1].insert(0, 'Total') B.insert(0, ['Buy qty'] + ['Month ' + str(i) for i in range(k)]) L.insert(0, ['Blend qty'] + ['Month ' + str(i) for i in range(k)]) H.insert(0, ['Hold qty'] + ['Month ' + str(i) for i in range(k)]) A.insert(0, ['Acid %'] + ['Month ' + str(i) for i in range(k)]) P = [P] P[0].insert(0, 'Prod qty') CP = [CP] CP[0].insert(0, 'P. Cost') CS = [CS] CS[0].insert(0, 'S. Cost') utils.printmat(B, True, 1) utils.printmat(L, True, 1) utils.printmat(H, True, 1) utils.printmat(P, True, 1) utils.printmat(CP, True, 2) utils.printmat(CS, True, 2) utils.printmat(A, True, 2)