I am solving a finction minimizing the objective function. The optimization variable looks like this [3D array]
a=3; b=2; c=50;
costs_tasks = rand (3,2);
linoptim = optimproblem;
x = optimvar('x',a,b,c,'Type', 'integer','LowerBound',0,'UpperBound',1);
objfun = sum(sum(sum(x,3).*(costs_tasks),2),1);
linoptim.Objective = objfun;
sol = solve(linoptim)
Solving problem using intlinprog. LP: Optimal objective value is 0.000000. Optimal solution found. Intlinprog stopped at the root node because the objective value is within a gap tolerance of the optimal value, options.AbsoluteGapTolerance = 0 (the default value). The intcon variables are integer within tolerance, options.IntegerTolerance = 1e-05 (the default value).
sol = struct with fields:
x: [3×2×50 double]
There are also some constraints I consider.
By solving the objective function, there are certain pages (3rd dimension) with the value 1 and I would like to see them.
My question ist, how can I display the optimal variable?

 Réponse acceptée

Matt J
Matt J le 21 Août 2022
pages=any(sol.x==1,[1,2]);
disp(sol.x(:,:,pages) )

3 commentaires

Andra Vartolomei
Andra Vartolomei le 22 Août 2022
Hi, thanks - almost!
It does indeed show me the pages, where there are non-zero values, but I also need to know on wich page this occurs (number of the page).
How can I also display that?
I managed to adapt it, so that I get a Matrix with the positions where I have non-zero values:
ind = find(sol.x>0);
[i1, i2, i3] = ind2sub(size(sol.x), ind);
positions = [i1(:),i2(:),i3(:)]
Matt J
Matt J le 23 Août 2022
I'm glad, but please accept-click the answer to indicate tht your question is resolved.

Connectez-vous pour commenter.

Plus de réponses (0)

Produits

Version

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by