Пример #1
0
def array_to_ampl_dataframe(
        n_banks, liability):  #change the name of liability to 2d array? TODO
    ampl_liab = DataFrame(
        ('Banks', 'Banks2'),
        'liability')  #TODO : set 'liability' to parameter name, can get it?

    ampl_liab.setValues({(i, j): liability[i][j]
                         for i in xrange(n_banks) for j in xrange(n_banks)})

    return ampl_liab
Пример #2
0
def main(argc, argv):
    from amplpy import AMPL, DataFrame
    os.chdir(os.path.dirname(__file__) or os.curdir)
    try:
        ampl = AMPL()

        if argc > 1:
            ampl.setOption('solver', argv[1])

        # Read the model file
        modelDirectory = argv[2] if argc == 3 else os.path.join('..', 'models')
        ampl.read(os.path.join(modelDirectory, 'diet/diet.mod'))

        foods = ['BEEF', 'CHK', 'FISH', 'HAM', 'MCH', 'MTL', 'SPG', 'TUR']
        costs = [3.59, 2.59, 2.29, 2.89, 1.89, 1.99, 1.99, 2.49]

        fmin = [2, 2, 2, 2, 2, 2, 2, 2]
        fmax = [10, 10, 10, 10, 10, 10, 10, 10]

        df = DataFrame('FOOD')
        df.setColumn('FOOD', foods)
        df.addColumn('cost', costs)
        df.addColumn('f_min', fmin)
        df.addColumn('f_max', fmax)
        ampl.setData(df, 'FOOD')

        nutrients = ['A', 'C', 'B1', 'B2', 'NA', 'CAL']
        nmin = [700, 700, 700, 700, 0, 16000]
        nmax = [20000, 20000, 20000, 20000, 50000, 24000]

        df = DataFrame('NUTR')
        df.setColumn('NUTR', nutrients)
        df.addColumn('n_min', nmin)
        df.addColumn('n_max', nmax)
        ampl.setData(df, 'NUTR')

        amounts = [[60, 8, 8, 40, 15, 70, 25, 60],
                   [20, 0, 10, 40, 35, 30, 50, 20],
                   [10, 20, 15, 35, 15, 15, 25, 15],
                   [15, 20, 10, 10, 15, 15, 15, 10],
                   [928, 2180, 945, 278, 1182, 896, 1329, 1397],
                   [295, 770, 440, 430, 315, 400, 379, 450]]

        df = DataFrame(('NUTR', 'FOOD'), 'amt')
        df.setValues({(nutrient, food): amounts[i][j]
                      for i, nutrient in enumerate(nutrients)
                      for j, food in enumerate(foods)})
        ampl.setData(df)

        ampl.solve()

        print('Objective: {}'.format(ampl.getObjective('total_cost').value()))
    except Exception as e:
        print(e)
        raise
Пример #3
0
 def testDict(self):
     dic = {"aa": "bb", "c": "a"}
     self.assertEqual(dic, DataFrame.fromDict(dic).toDict())
     dic = {1: 2}
     self.assertEqual(dic, DataFrame.fromDict(dic).toDict())
     dic = {1: 2, 3: 4}
     self.assertEqual(dic, DataFrame.fromDict(dic).toDict())
     dic = {2.0: ("a", "b"), 3: ("1", "2")}
     self.assertEqual(dic, DataFrame.fromDict(dic).toDict())
     dic = {(2.0, "c"): ("a", "b"), (3, "a"): ("1", "2")}
     self.assertEqual(dic, DataFrame.fromDict(dic).toDict())
     df = DataFrame("x", "y")
     dic = {1: 12, 2: 23}
     df.setValues(dic)
     self.assertEqual(dic, df.toDict())
     df = DataFrame("x", ["y", "z"])
     dic = {1: (12, 2), 2: (23, -1)}
     df.setValues(dic)
     self.assertEqual(dic, df.toDict())
     df = DataFrame("x", ["y", "z"])
     df.setValues({1: [1, 2]})
     self.assertEqual({1: (1, 2)}, df.toDict())
Пример #4
0
 def testIter(self):
     df = DataFrame("x", "y")
     dic = {1: 12, 2: 23}
     df.setValues(dic)
     for row in df:
         self.assertTrue(tuple(row) in [(1, 12), (2, 23)])
Пример #5
0
            'asked_mem': 0,
            'asked_disk': 0,
            'frees_mem': leaves_mem[i],
            'frees_cpu': leaves_cpu[i],
            'frees_disk': leaves_disk[i],
            'frees_arrival': leaves_arrival[i]
        }

    # Set the ordered timestamps
    timestamps = times + leaves_time
    timestamps.sort()
    ampl.set['timestamps'] = timestamps

    # Set profits
    df = DataFrame(('timestamps'), 'profit_federate')
    df.setValues({t: events[t]['profit_federate'] for t in events.keys()})
    ampl.setData(df)
    df = DataFrame(('timestamps'), 'profit_local')
    df.setValues({t: events[t]['profit_local'] for t in events.keys()})
    ampl.setData(df)
    df = DataFrame(('timestamps'), 'profit_reject')
    df.setValues({t: events[t]['profit_reject'] for t in events.keys()})
    ampl.setData(df)

    # Set asked resources
    df = DataFrame(('timestamps'), 'asked_cpu')
    df.setValues({t: events[t]['asked_cpu'] for t in events.keys()})
    ampl.setData(df)
    df = DataFrame(('timestamps'), 'asked_mem')
    df.setValues({t: events[t]['asked_mem'] for t in events.keys()})
    ampl.setData(df)
Пример #6
0
def main(argc, argv):
    from amplpy import AMPL, DataFrame
    os.chdir(os.path.dirname(__file__) or os.curdir)
    try:
        ampl = AMPL()
        ampl.setOption('solver', 'cplexamp')
        if argc > 1:
            ampl.setOption('solver', argv[1])

        # Read the model file
        modelDirectory = argv[2] if argc == 3 else os.path.join('..', 'models')
        ampl.read(os.path.join(modelDirectory, 'Dr/pigskin_updated1.mod'))

        period0 = [0]

        df = DataFrame('ONLY0')
        df.setColumn('ONLY0', period0)
        ampl.setData(df, 'ONLY0')

        period0toends = [0, 1]

        df = DataFrame('PERIOD0_TO_END')
        df.setColumn('PERIOD0_TO_END', period0toends)
        ampl.setData(df, 'PERIOD0_TO_END')

        period1toends = [1]

        df = DataFrame('PERIOD1_TO_END')
        df.setColumn('PERIOD1_TO_END', period1toends)
        ampl.setData(df, 'PERIOD1_TO_END')

        products = ['1P', '2P']

        df = DataFrame('PRODUCT')
        df.setColumn('PRODUCT', products)
        ampl.setData(df, 'PRODUCT')

        resources = ['1R', '2R']

        df = DataFrame('RESOURCE')
        df.setColumn('RESOURCE', resources)
        ampl.setData(df, 'RESOURCE')

        scenarios = [
            1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19,
            20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30
        ]

        df = DataFrame('SCENARIO')
        df.setColumn('SCENARIO', scenarios)
        ampl.setData(df, 'SCENARIO')

        inv0prod = [[0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0],
                    [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0],
                    [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0],
                    [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0], [0, 0],
                    [0, 0], [0, 0]]
        df = DataFrame(('SCENARIO', 'PRODUCT'), 'Inv0prod')
        df.setValues({(scenario, product): inv0prod[s][i]
                      for s, scenario in enumerate(scenarios)
                      for i, product in enumerate(products)})
        ampl.setData(df)

        prodcost = [[12.5], [12.55]]

        df = DataFrame(('PRODUCT', 'PERIOD1_TO_END'), 'Prodcost')
        df.setValues({(product, period1toend): prodcost[i][t]
                      for i, product in enumerate(products)
                      for t, period1toend in enumerate(period1toends)})
        ampl.setData(df)

        Resource = [[16, 100], [24, 200]]

        df = DataFrame(('PRODUCT', 'RESOURCE'), 'Resource')
        df.setValues({(product, resource): Resource[i][r]
                      for i, product in enumerate(products)
                      for r, resource in enumerate(resources)})
        ampl.setData(df)

        avail = [[138516], [278847]]

        df = DataFrame(('RESOURCE', 'PERIOD1_TO_END'), 'avail')
        df.setValues({(resource, period1toend): avail[r][t]
                      for r, resource in enumerate(resources)
                      for t, period1toend in enumerate(period1toends)})
        ampl.setData(df)

        perhold = [[0.88], [0.88]]

        df = DataFrame(('PRODUCT', 'PERIOD1_TO_END'), 'perhold')
        df.setValues({(product, period1toend): perhold[i][t]
                      for i, product in enumerate(products)
                      for t, period1toend in enumerate(period1toends)})
        ampl.setData(df)

        prob = [
            0.03333333, 0.03333333, 0.03333333, 0.03333333, 0.03333333,
            0.03333333, 0.03333333, 0.03333333, 0.03333333, 0.03333333,
            0.03333333, 0.03333333, 0.03333333, 0.03333333, 0.03333333,
            0.03333333, 0.03333333, 0.03333333, 0.03333333, 0.03333333,
            0.03333333, 0.03333333, 0.03333333, 0.03333333, 0.03333333,
            0.03333333, 0.03333333, 0.03333333, 0.03333333, 0.03333333
        ]

        df = DataFrame(('SCENARIO'), 'prob')
        df.setValues({(scenario): prob[s]
                      for s, scenario in enumerate(scenarios)})
        ampl.setData(df)

        MPC = [800]

        df = DataFrame(('PERIOD1_TO_END'), 'MPC')
        df.setValues({(period1toend): MPC[t]
                      for t, period1toend in enumerate(period1toends)})
        ampl.setData(df)

        MS = [100]

        df = DataFrame(('PERIOD1_TO_END'), 'MS')
        df.setValues({(period1toend): MS[t]
                      for t, period1toend in enumerate(period1toends)})
        ampl.setData(df)

        Purchase_cost = [[10], [10]]

        df = DataFrame(('PRODUCT', 'PERIOD1_TO_END'), 'Purchase_cost')
        df.setValues({(product, period1toend): Purchase_cost[i][t]
                      for i, product in enumerate(products)
                      for t, period1toend in enumerate(period1toends)})
        ampl.setData(df)

        Demand = [[[216], [191]], [[290], [330]], [[224], [194]], [[283],
                                                                   [329]],
                  [[159], [164]], [[215], [349]], [[247], [201]], [[201],
                                                                   [328]],
                  [[343], [230]], [[326], [278]], [[319], [342]], [[223],
                                                                   [298]],
                  [[292], [191]], [[262], [284]], [[285], [200]], [[296],
                                                                   [346]],
                  [[210], [318]], [[200], [257]], [[314], [336]], [[205],
                                                                   [290]],
                  [[174], [184]], [[258], [290]], [[284], [158]], [[264],
                                                                   [312]],
                  [[228], [333]], [[239], [255]], [[190], [322]], [[344],
                                                                   [219]],
                  [[280], [241]], [[186], [254]]]

        df = DataFrame(('SCENARIO', 'PERIOD1_TO_END', 'PRODUCT'), 'Demand')
        df.setValues({(scenario, period1toend, product): Demand[s][t][i - 1]
                      for s, scenario in enumerate(scenarios)
                      for t, period1toend in enumerate(period1toends)
                      for i, product in enumerate(products)})
        ampl.setData(df)

        ampl.solve()

        print('Objective: {}'.format(ampl.getObjective('Total_cost').value()))

        produce = ampl.getVariable('Produce')
        df = produce.getValues()
        # Print them
        print(df)
        # Get the values of the variable in a dataframe object
        inventory = ampl.getVariable('Inventory')
        df = inventory.getValues()
        # Print them
        print(df)

    except Exception as e:
        print(e)
        raise
Пример #7
0
        nnodes = nnodes / 10
        i += 1
    formatString = f"{{:0{i}d}}"
    nodes = {
        formatString.format(value): p.node_coords[index + 1]
        for index, value in enumerate(p.get_nodes())
    }
    return nodes


# Set problem data from tsp file
nodes = getDictFromTspFile(tspFile)

# Pass them to AMPL using a dataframe
df = DataFrame(index=[('NODES')], columns=['hpos', 'vpos'])
df.setValues(nodes)
ampl.setData(df, "NODES")

# Set some globals that never change during the execution of the problem
NODES = set(nodes.keys())
CPOINTS = {
    node: complex(coordinate[0], coordinate[1])
    for (node, coordinate) in nodes.items()
}


# Plot helpers
def plotTours(tours: list, points_coordinate: dict):
    # Plot all the tours in the list each with a different color
    colors = ['b', 'g', 'c', 'm', 'y', 'k']
    for i, tour in enumerate(tours):