Files
Yu Cong 7f7b831c14
All checks were successful
build pdf / build (push) Successful in 4s
z
2026-01-08 13:42:59 +08:00

49 lines
1.6 KiB
Python

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