Python Forum
Linear programming optimization PuLP
Thread Rating:
  • 0 Vote(s) - 0 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Linear programming optimization PuLP
#1
I have a linear problem where I want to maximize my revenue, by minimizing the objective function.

The constraints are linear thus linear programming is suitable for my problem. I am new in python and linear programming, so I have formulated the following code based on what I've read online.

The inputs (energy, spot, fcr, gridE) are vectors with length = 8760.

My code is not running properly but it doesn't give me a specific error.

I think the problem might be the way I've set the variables. I would like my variables (Pcap, Pcharge) to be continuous values (within "0-10"), (Pdis within "-10 - 0") and (SOC within "12 - 36") so that they don't violate the constraints I've defined.

Any advice would be more than welcome.


Code:
import numpy as np
import time
import pandas
from pulp import *
import pulp as plp

opt_model = plp.LpProblem(name="MIP Model")

tic=time.time()
year="2015"



ResultFolderName = "results/"
energyData=        "data"+year+"/energyy.csv"
spotData=          "data"+year+"/spot.csv"
fcrData=          "data"+year+"/fcr_2017.csv"
gridEData=          "data"+year+"/gridE.csv"




chunk_size = 4
energyData = np.array(pandas.read_csv(energyData, sep=',', header=None).values)
energy_366 = energyData.reshape(-1, chunk_size, energyData.shape[1]).sum(1)
energy_365 = energy_366[:8760]

# Define inputs

energy = list(energy_365)
spot = list(pandas.read_csv(spotData, sep=',', header=None).values)
fcr = list(pandas.read_csv(fcrData, sep=',', header=None).values)
gridE = list(pandas.read_csv(gridEData, sep=',', header=None).values)


h = 0.9
Pmax = 10
Q = 40

#Define variables



Pcap = [plp.LpVariable("Pcap",i,0,cat='Continuous') for i in range(0, 8760)]
Pcharge = [plp.LpVariable("Pcharge",i,0,cat='Continuous') for i in range(0, 8760)]
Pdis = [plp.LpVariable("Pdis",i,0,cat='Continuous') for i in range(0, 8760)]
SOC = [plp.LpVariable("SOC",i,0,cat='Continuous') for i in range(0, 8760)]
SOC.insert(0, 20)

#define constraints

opt_model += lpSum([Pcap[i] for i in range(0, 8760)]) >= 0, "Pcap"
opt_model += lpSum([Pcharge[i] for i in range(0, 8760)]) >= 0, "Pcharge"
opt_model += lpSum([Pdis[i] for i in range(0, 8760)]) >= 0, "Pdis"
opt_model += 12 <= lpSum([SOC[i] for i in range(0, 8760)]) <= 36, "SOC"
opt_model += Pmax >= lpSum(Pcap[i]+Pcharge[i]+Pdis[i] for i in range(0, 8760)), "Pmax"


for i in range(0, 8759):
    SOC[i + 1] = SOC[i] + (gridE[i] + Pcap[i] * energy[i] + Pcharge[i] * h - Pdis[i] * 1 / h) * 1 / Q






objective = plp.lpSum(Pcharge[i] * spot[i] - Pdis[i] * spot[i] - Pcap[i] * fcr[i])




# for minimization
opt_model.sense = plp.LpMinimize
opt_model.setObjective(objective)

# solving with CBC
opt_model.solve()
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
Question Linear Programming Problem Axel_LF 0 731 Feb-23-2023, 11:03 PM
Last Post: Axel_LF
  Linear Programming (PuLP) - loop for constraints littleangel83 1 3,770 Jun-02-2020, 02:39 PM
Last Post: littleangel83
  Linear programming PySou 1 2,245 May-26-2019, 05:24 PM
Last Post: heiner55

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020