Untitled
unknown
python
a year ago
1.3 kB
22
Indexable
# Set up Gurobi environment
from gurobipy import Model, GRB
# Create a new model
model = Model('Optimization Problem')
# Define decision variables:
b1 = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="b1")
b2 = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="b2")
s0 = model.addVar(lb=0, vtype=GRB.CONTINUOUS, name="s0")
payments_by_year = [10,11,12,14,15,17,19,20,22,24,26,29,31,33,36]
# Set the objective to minimize the amount of money spent
model.setObjective(0.98 * b1 + 0.965 * b2 + payments_by_year[0] + s0, GRB.MINIMIZE)
# Add the constraints
expr1 = 0.06 * b1 + 0.065 * b2 + 1.04 * s0
model.addConstr(expr1 >= payments_by_year[1], "c1")
prev_expr = expr1
for year in range(1,len(payments_by_year)-1):
expr = (prev_expr - payments_by_year[year]) * 1.04
if year == 4:
expr += 1.06 * b1
elif year < 5:
expr += 0.06 * b1
if year == 11:
expr += 1.065 * b2
elif year < 12:
expr += 0.065 * b2
model.addConstr(expr >= payments_by_year[year+1], f'c{year+1}')
prev_expr = expr
# Optimize the model
model.optimize()
# Display results
if model.status == GRB.OPTIMAL:
print(f"Optimal solution found:\n b1: {b1.x}\n b2: {b2.x}\n s0: {s0.x}")
else:
print("No optimal solution found.")Editor is loading...
Leave a Comment