Untitled
unknown
python
10 months ago
1.3 kB
10
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