Display optimization variable/solution

2 visualizzazioni (ultimi 30 giorni)
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?

Risposta accettata

Matt J
Matt J il 21 Ago 2022
pages=any(sol.x==1,[1,2]);
disp(sol.x(:,:,pages) )
  3 Commenti
Andra Vartolomei
Andra Vartolomei il 22 Ago 2022
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 il 23 Ago 2022
I'm glad, but please accept-click the answer to indicate tht your question is resolved.

Accedi per commentare.

Più risposte (0)

Prodotti


Release

R2022a

Community Treasure Hunt

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

Start Hunting!

Translated by