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
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
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())
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)])
'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)
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
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):