Exemplo n.º 1
0
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)
Exemplo n.º 2
0
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)
Exemplo n.º 5
0
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)
Exemplo n.º 8
0
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)
Exemplo n.º 9
0
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)