diff --git a/gap.json b/gap.json new file mode 100644 index 0000000..3e3e7de --- /dev/null +++ b/gap.json @@ -0,0 +1,56 @@ +{ + "SolutionInfo": { + "Status": 2, + "Runtime": 1.2390613555908203e-03, + "Work": 1.0477234319444459e-04, + "ObjVal": 978.02, + "ObjBound": 978.02, + "ObjBoundC": 978.02, + "MIPGap": 0, + "IntVio": 0, + "BoundVio": 0, + "ConstrVio": 1.2434497875801753e-14, + "IterCount": 9, + "BarIterCount": 0, + "NodeCount": 1, + "SolCount": 1, + "PoolObjBound": 978.02, + "PoolObjVal": [ + 978.02 + ] + }, + "Vars": [ + { + "VarName": "l", + "X": 9.99 + }, + { + "VarName": "b", + "X": 100 + }, + { + "VarName": "w1", + "X": 999 + }, + { + "VarName": "w2", + "X": 1000 + }, + { + "VarName": "w3", + "X": 1 + }, + { + "VarName": "c1", + "X": 99 + }, + { + "VarName": "c2", + "X": 1 + }, + { + "VarName": "c3", + "X": 101 + } + ] +} \ No newline at end of file diff --git a/gap.py b/gap.py new file mode 100644 index 0000000..2fa3c4f --- /dev/null +++ b/gap.py @@ -0,0 +1,48 @@ +import gurobipy as gp +from gurobipy import GRB + +def solve_lp(): + # 1. Create model + model = gp.Model("my_lp") + + # 2. Add variables + # Example: x, y >= 0 + l = model.addVar(lb=0, ub= 100, name="l", vtype=GRB.CONTINUOUS) + b = model.addVar(lb=0, ub= 100, name="b", vtype=GRB.INTEGER) + w = {} + c = {} + for i in range(1, 4): + w[i] = model.addVar(lb=1, ub=1000, name=f"w{i}", vtype= GRB.INTEGER) + for i in range(1, 4): + c[i] = model.addVar(lb=1, ub=1000, name=f"c{i}", vtype= GRB.INTEGER) + ans = model.addVar(lb=0, name="ans", vtype=GRB.CONTINUOUS) + + # 3. Set objective + # model.setObjective(ans, GRB.MAXIMIZE) + model.setObjective(l*(c[1]-c[2])-w[2]+w[1], GRB.MAXIMIZE) + + # 4. Add constraints + # model.addConstr(w[2] >= w[1] >= w[3] >= 0) + model.addConstr(w[2] >= 0.1+ w[1], name="w2_ge_w1") + model.addConstr(w[1] >= 0.1+ w[3], name="w1_ge_w3") + model.addConstr(w[3] >= 0.1+ 0, name="w3_ge_0") + # model.addConstr(c[3] >= b >= c[1] >= c[2] >= 0) + model.addConstr(c[3] >= 0.1+ b, name="c3_ge_b") + model.addConstr(b >= 0.1+ c[1], name="b_ge_c1") + model.addConstr(c[1] >= 0.1+ c[2], name="c1_ge_c2") + model.addConstr(c[2] >= 0.1+ 0, name="c2_ge_0") + model.addConstr((c[3]-c[2])*l >= w[2]-w[3]) + model.addConstr((c[3]-c[2])*l <= w[2]-w[3]) + # model.addConstr(ans*b <= l*(c[1]-c[2])-w[2]+w[1]) + + # 5. Optimize + model.optimize() + + # 6. Retrieve results + if model.status == GRB.OPTIMAL: + model.write("gap.json") + else: + print("No optimal solution found.") + +if __name__ == "__main__": + solve_lp()