Nov-21-2023, 04:24 PM
(This post was last modified: Nov-21-2023, 04:24 PM by MartinRK80.)
I'm trying to create my first LP simulation but I have some problem with it.
This is my code:
This is my code:
import pulp # Define the optimization problem prob = pulp.LpProblem("Energy_Cost_Minimization", pulp.LpMinimize) # Time horizon T = 24 # Battery parameters B_max = 10 # Maximum battery capacity B_init = 0 # Initial battery level # Grid energy cost per unit for each hour grid_cost = [0.15, 0.15, 0.14, 0.13, 0.12, 0.12, 0.12, 0.12, 0.14, 0.16, 0.18, 0.20, 0.20, 0.20, 0.18, 0.16, 0.14, 0.18, 0.20, 0.20, 0.20, 0.18, 0.16, 0.15] # Renewable energy supply for each hour S = [1, 1, 0.5, 0.5, 1, 2, 3, 4, 5, 5, 5, 4, 4, 3, 2, 3, 4, 5, 5, 4, 3, 2, 1, 1] # Predicted energy demand for each hour #D = [1, 1, 1, 1, 2, 3, 4, 5, 6, 7, 7, 7, 6, 6, 5, 5, 5, 6, 7, 7, 6, 4, 3, 2] D = [0.5, 0.5, 0.5, 0.5, 1, 1.5, 2, 2.5, 3, 3.5, 3.5, 3.5, 3, 3, 2.5, 2.5, 2.5, 3, 3.5, 3.5, 3, 2, 1.5, 1] # Create decision variables G = pulp.LpVariable.dicts("Grid Energy", range(T), lowBound=0) B = pulp.LpVariable.dicts("Battery Level", range(T+1), lowBound=0, upBound=B_max) Surplus = pulp.LpVariable.dicts("Renewable Surplus", range(T), lowBound=0) # Objective function prob += pulp.lpSum([grid_cost[t] * G[t] for t in range(T)]) # Constraints for t in range(T): if t > 0: # Battery can only charge from renewable surplus #Surplus[t] = max(0, S[t] - D[t]) prob += Surplus[t] <= S[t] - D[t] # Calculate renewable surplus prob += B[t] <= B[t-1] + Surplus[t-1] # Battery charges from surplus # Meet demand from renewables, battery and grid prob += D[t] <= S[t] + B[t] + G[t] # Battery initialization if t == 0: prob += B[t] == B_init # Start battery empty # Solve optimization prob.solve() # Print results for t in range(T): print(f"Hour {t}: Grid Energy = {G[t].varValue} kWh, Battery Level = {B[t].varValue} kWh, Power Consumption = {D[t]} kWh, Renewable Energy Supply = {S[t]} kWh")This is the result in colab:
Output:Hour 0: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 0.5 kWh, Renewable Energy Supply = 1 kWh
Hour 1: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 0.5 kWh, Renewable Energy Supply = 1 kWh
Hour 2: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 0.5 kWh, Renewable Energy Supply = 0.5 kWh
Hour 3: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 0.5 kWh, Renewable Energy Supply = 0.5 kWh
Hour 4: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 1 kWh, Renewable Energy Supply = 1 kWh
Hour 5: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 1.5 kWh, Renewable Energy Supply = 2 kWh
Hour 6: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 2 kWh, Renewable Energy Supply = 3 kWh
Hour 7: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 2.5 kWh, Renewable Energy Supply = 4 kWh
Hour 8: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3 kWh, Renewable Energy Supply = 5 kWh
Hour 9: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3.5 kWh, Renewable Energy Supply = 5 kWh
Hour 10: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3.5 kWh, Renewable Energy Supply = 5 kWh
Hour 11: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3.5 kWh, Renewable Energy Supply = 4 kWh
Hour 12: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3 kWh, Renewable Energy Supply = 4 kWh
Hour 13: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3 kWh, Renewable Energy Supply = 3 kWh
Hour 14: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 2.5 kWh, Renewable Energy Supply = 2 kWh
Hour 15: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 2.5 kWh, Renewable Energy Supply = 3 kWh
Hour 16: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 2.5 kWh, Renewable Energy Supply = 4 kWh
Hour 17: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3 kWh, Renewable Energy Supply = 5 kWh
Hour 18: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3.5 kWh, Renewable Energy Supply = 5 kWh
Hour 19: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3.5 kWh, Renewable Energy Supply = 4 kWh
Hour 20: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 3 kWh, Renewable Energy Supply = 3 kWh
Hour 21: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 2 kWh, Renewable Energy Supply = 2 kWh
Hour 22: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 1.5 kWh, Renewable Energy Supply = 1 kWh
Hour 23: Grid Energy = 0.0 kWh, Battery Level = 0.0 kWh, Power Consumption = 1 kWh, Renewable Energy Supply = 1 kWh
Grid Energy should be positive when renewable energy and battery aren't enough but it is 0.0 at all hours. Also Battery level should charge only if there is a surplus of renewable energy.