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()