objective function with nested sum
Awaiting user inputI have an objective function with multiple operations for which I tried nesting with help of quicksum (below):

X, I, Y, and B are model variables
I have tried the following code which works but the answer is not correct. seems something in the prioritization of operations goes wrong but I cannot detect where.
obj1 = gp.quicksum((I[month,item] - v[item]) * h[item] * X[month,item]
for item in items
for month in months
if month >= months[a +1])
obj2 = gp.quicksum((B[month,item] + v[item]) * p[item] * Y[month,item]
for item in items
for month in months
if month >= months[a +1])
obj = obj1 + obj2
LP.setObjective(obj, GRB.MINIMIZE)
P.S. I have tried https://support.gurobi.com/hc/en-us/community/posts/4413382171921-Values-of-parts-of-objective-function as well but the code gives error.
0
-
Official comment
This post is more than three years old. Some information may not be up to date. For current information, please check the Gurobi Documentation or Knowledge Base. If you need more help, please create a new post in the community forum, or try Gurobot, our chatbot interface offering instant, expert-level support. -
Hi Maryam,
It is hard to know what has gone wrong. Could you please clarify the following in the mathematical expression?
- The argument of the \(\mbox{min}\) function is \(r_i(t)\), but there is no variable named \(r_i(t)\) in the expression.
- The first sum goes over \(s\) but there is no variable in the expression that depends on \(s\). I assume that \(s\) represents what you are referring to as \(\texttt{months}\), but what \(a\) is then?
- The first term starts from \(s=0\) and the second term starts from \(s=1\), but in the code, both terms apparently are summed over the same set of \(s\) values (months).
Best regards,
Maliheh
0
Post is closed for comments.
Comments
2 comments