Hi,
For an optimization problem having time dependent variables (i.e. large vectors), I’m trying to define the problem like below, with variables constrained by vectors, and optimize one variable.
But I have an error of type The objective function VariableRef[p_Batt[1]] is not supported by JuMP. I’m quite sure this is related to how I define the variables and constrain them, but I’m not familiar with JuMP and could not find an alternative.
Thanks for your help !
I cannot run the code because the lower and upper bounds in variables are undefined. Also, according to the code, why is p_Batt defined as a vector of length 1? The value in data_length tells us how long the vector p_DCL is, so it should be a number. Or did you mean p_Batt[i = 1:data_length]?
using JuMP
using Ipopt ###Had to use a different solver, I don't have CPLEX
p_DCL = [160, 180]
data_length = length(p_DCL)
lb_c1 = 0
ub_c1 = 180
lb_c2 = -800
ub_c2 = 200
model = Model(Ipopt.Optimizer)
@variables(model, begin
0.0 <= p_ICE[i = 1:data_length] <= 1000.0 ####Main changes here
0.0 <= p_Batt[i = 1:data_length] <= 1000.0 ###And here
end)
@constraint(model, [i = 1:data_length], p_ICE[i]+p_Batt[i]==p_DCL[i]) ###and a bit here
@objective(model, Min, p_Batt[1]) ####If p_Batt is a vector I need to explicitly tell which element to minimise
optimize!(model)
Yes sorry, it was a bad copy/paste for symplifying my boundaries.
Your simple solution in the objective definition, made me see that I didn’t quite understood how JuMP worked. I will write the objective function as c’x and all should be ok.
Thanks !