Optimization with sum and max function

Hi. I have a difficulty in writing this objective function for optimization. Especially in defining the second term and the summation. Should I make nested optimization for this?
Sum {[I * (x(i) - x(i-1) + lo(i) - g(i)) * p(i)] + max [I * (x(i) - x(i-1) + lo(i) - g(i)) * pfix]}
I = 1 if x(i) - x(i-1) + lo(i) - g(i)) * p(i) > 0 ; otherwise I = 0
for i = 1:24
Thanks in advance!

回答(1 个)

When I = 1 if x(i) - x(i-1) + lo(i) - g(i)) * p(i) > 0 ; otherwise I = 0, then [I * (x(i) - x(i-1) + lo(i) - g(i)) * p(i)] is
max(0, (x(i) - x(i-1) + lo(i) - g(i)) * p(i))
so
max [I * (x(i) - x(i-1) + lo(i) - g(i)) * pfix]
is
max( max(0, (x(i) - x(i-1) + lo(i) - g(i)) * p(i)) * pfix )
Note: that max would only make sense to calculate if pfix is a vector
It is possible to vectorize the sum, but the details of the method would depend upon the orientation of x and lo and g and p and pfix

4 个评论

How can I define that the decision variable is only x(i); and x(i-1) value is from the previous optimization step?
That formula does not permit that interpretation. The Sum has to be a sum over i for the formula to make sense.
In other words, you suggest to use loop for that objective function other than vectorized?
The objective function you wrote can likely be vectorized. I would need to know whether x, lo, g, p, and pfix are row vectors are column vectors, and I need an idea of the size of pfix in order to vectorize the max() term properly.
However, more recently you asked "How can I define that the decision variable is only x(i); and x(i-1) value is from the previous optimization step?". If that were the case, there would not appear to be anything to Sum over. Are you asking how to calculate one term of it without the Sum ?

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Annotations 的更多信息

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by