2

I am trying to solve my multi-objective problem in Gurobi using the epsilon-constraint method. I didn't find any sample code in Gurobi(python). I am new to gurobi and have no experience in coding. Please, someone, help me to find the solution.

MO Problem model.

power = ["Lignite", "Oil", "Gas", "RES"]
load = ["base", "middle", "peak"]
pi = [("Lignite","base"),("Lignite","middle"),("Oil","middle"),("Oil","peak"),("Gas","base"), 
       ("Gas","middle"),("Gas","peak"),("RES","base"),("RES","peak")]  
es = ["Lignite","RES"]
k = [ "cost", "CO2emission", "endogenous"]

cost = {"Lignite":30,"Oil":75,"Gas":60,"RES":90}
capacity = {"Lignite":31000,"Oil":15000,"Gas":22000,"RES":10000}
CO2emission = { "Lignite":1.44,"Oil":0.72,"Gas":0.45,"RES":0}
demand = {"base": 38400.0, "middle": 19200.0, "peak": 6400.0}

mdl = Model('power')
z = mdl.addVars(k,vtype=GRB.BINARY) #'objective function variables';
x = mdl.addVars(power,load, vtype=GRB.CONTINUOUS) #Positive Variable: production level of unit in load area in GWh

obcost = mdl.setObjectiveN(quicksum(x[p,l]*cost[p] for p in power for l in load), 2, 1)
objes  = mdl.setObjectiveN(quicksum(-1 * x[e,l] for e in es for l in load), 0, 1)
obco2  = mdl.setObjectiveN(quicksum(x[p,l]*CO2emission[p] for p in power for l in load),1, 1)

defcap = mdl.addConstrs(quicksum(x[p,l] for l in load)  <= capacity[p] for p in power)
defdem = mdl.addConstrs(quicksum(x[p,l] for p in power)  >= demand[l] for l in load)

mdl.update()
mdl.optimize()

From this Multi-objective model I need to find a Pareto front using the epsilon-constraint method

Reference:

https://www.gams.com/latest/gamslib_ml/libhtml/gamslib_epscm.html

http://www.gams.com/modlib/adddocs/epscm.pdf

Karippery
  • 85
  • 1
  • 9

0 Answers0