Sum(sum()) with optimization variable

7 views (last 30 days)
Andra Vartolomei
Andra Vartolomei on 15 Aug 2022
Commented: Jan on 18 Aug 2022
I want to write the following equation as a constraint
and x is an optimization variable.
I managed to get to following formulation
Constraint2 = sum(sum(x,3),1) <= ones(1,nRess)
Now the problem is, that I do not know how to change the running boundries of the inner sum, to the above given form (so not all the elements of the dimension 3, but only starting from l=t-pt_jr to t, and also while l>0).
pt_jr is a 2D matrix.
I tried to write it with sum(sum()) as I read about vectorization and didn't want to generate too long working times wir for loops.
Thanks ahead for any ideas.
  1 Comment
Walter Roberson
Walter Roberson on 15 Aug 2022
What if you multiply x by a logical condition ? That would zero out some locations, and that would add nothing to the sum.

Sign in to comment.

Answers (2)

Jan on 15 Aug 2022
Edited: Jan on 15 Aug 2022
Constraint2 = sum(x(:, :, (t - pt(j, r)):t), [1, 3]) <= 1;
Jan on 18 Aug 2022
@Torsten, @Andra Vartolomei: My guess was completely wrong. After:
nTasks = 3;
nRess = 2;
maxPT = 50;
x = optimvar('x',nTasks,nRess,maxPT,'Type', 'integer','LowerBound',0,'UpperBound',1);
x is not an array we can sum over. While I was talking about an array, the introduction of optimvar() was out of my view. I have no idea, what the realtion between the question and this code is.

Sign in to comment.

Bruno Luong
Bruno Luong on 15 Aug 2022
What about this:
L = reshape(1:size(x,3),1,1,[])
b = L >= t-pt_rj & L <= t;
Constraint2 = sum(sum(b.*x,3),1) <= ones(1,size(x,2))
Bruno Luong
Bruno Luong on 18 Aug 2022
I'm lost, it sounds like you are stuck with how to transforming whatever the scheduling problem you want to solve in math formulation, and not transforming math into matlab.
If that is the case I won't be able to help you, for the simple reason is that I don't understand what you wrote in the description.

Sign in to comment.


Find more on Get Started with Optimization Toolbox in Help Center and File Exchange




Community Treasure Hunt

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

Start Hunting!