multidimensional matrix optimization error

1 visualización (últimos 30 días)
BOWEN LI
BOWEN LI el 20 de Jul. de 2019
Comentada: BOWEN LI el 24 de Jul. de 2019
Hello everyone,
I have an optimization variable
y=optimvar('y',[4,1],'Type','integer','LowerBound',0,'UpperBound',1);
and I want to put this "y" into a matrix which have 4 time periods, so i created a multidimensional matrix as this:
yi=y([ 1 2 3 4; 2 2 3 4;3 3 3 4;4 4 4 4]);
yi(:,:,2)= y([ 1 2 3 4; 2 2 3 4;3 3 3 4;4 4 4 4]);
yi(:,:,3)= y([ 1 2 3 4; 2 2 3 4;3 3 3 4;4 4 4 4]);
yi(:,:,4)= y([ 1 2 3 4; 2 2 3 4;3 3 3 4;4 4 4 4]);
where the third dimension is about time, which I have 4 years in my problem. While I run this code in matlab it says this is an illegal assignment, could anyone help me with that?
Thank you!
  4 comentarios
dpb
dpb el 21 de Jul. de 2019
Editada: dpb el 21 de Jul. de 2019
>> whos yi
Name Size Bytes Class Attributes
yi 4x4x4 512 double
>>
yi is a 4x4x4 array...I don't follow what your intention really is, just what you created is above.
I also don't fully understand the doc with optimvar and how the problem setup would work so am just throwing darts here--and the crystal ball is dark.
BOWEN LI
BOWEN LI el 21 de Jul. de 2019
thank you again for your answer!
let me try to make this clearer, basically i have y1 y2 y3 and y4, which are binary decision variables (0 or 1). And i create these y1 - y4 by optimvar which will be used in a optimization toolbox.
Also, y1 - y4 are originally all equal to 0,then at some point (in year 1, year 2, year 3, year 4) they turn to 1. So i have to make a third dimension which is about time.
And the matrix has to be in the form below, that y1 - y4 has to be in their specific position shown in the matrix.
yi = [y1 y2 y3 y4
y2 y2 y3 y4
y3 y3 y3 y4
y4 y4 y4 y4]
So in order to add a third dimension that is to make a three dimensinal matrix, i'm wondering how. First of all, I tried to make yi a 3D matrix, that does not work with optimvar. Then, i made y1 - y4 3D dimensional optimization variables, and put them according to the loayout of matrix yi.
Sorry for any misunderstandings, I sometimes need to review a lot to make these things clear. Thank you!

Iniciar sesión para comentar.

Respuesta aceptada

Kavya Vuriti
Kavya Vuriti el 24 de Jul. de 2019
Hi,
From the question I understand that you created an optimization variable y and wants to create a 3-dimensional matrix yi in a specific layout where the 3rd dimension is time.
Try using the following code:
y=optimvar('y',[4,1,4],'Type','integer','LowerBound',0,'UpperBound',1);
yi=[y(1,1,1),y(2,1,1),y(3,1,1),y(4,1,1);y(2,1,1),y(2,1,1),y(3,1,1),y(4,1,1);y(3,1,1),y(3,1,1),y(3,1,1),y(4,1,1);y(4,1,1),y(4,1,1),y(4,1,1),y(4,1,1)];
yi(:,:,2)=[y(1,1,2),y(2,1,2),y(3,1,2),y(4,1,2);y(2,1,2),y(2,1,2),y(3,1,2),y(4,1,2);y(3,1,2),y(3,1,2),y(3,1,2),y(4,1,2);y(4,1,2),y(4,1,2),y(4,1,2),y(4,1,2)];
yi(:,:,3)=[y(1,1,3),y(2,1,3),y(3,1,3),y(4,1,3);y(2,1,3),y(2,1,3),y(3,1,3),y(4,1,3);y(3,1,3),y(3,1,3),y(3,1,3),y(4,1,3);y(4,1,3),y(4,1,3),y(4,1,3),y(4,1,3)];
yi(:,:,4)=[y(1,1,4),y(2,1,4),y(3,1,4),y(4,1,4);y(2,1,4),y(2,1,4),y(3,1,4),y(4,1,4);y(3,1,4),y(3,1,4),y(3,1,4),y(4,1,4);y(4,1,4),y(4,1,4),y(4,1,4),y(4,1,4)];
Hope it works.
For more information on creating multi-dimensional binary optimization variables, you can refer the following link: https://www.mathworks.com/help/optim/ug/optimvar.html#mw_cedf0526-03c6-46b9-aba3-a694d89d1003
  1 comentario
BOWEN LI
BOWEN LI el 24 de Jul. de 2019
Thank you so much! I will try with yours. Appreciate for your answer.

Iniciar sesión para comentar.

Más respuestas (0)

Categorías

Más información sobre Matrix Indexing en Help Center y File Exchange.

Community Treasure Hunt

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

Start Hunting!

Translated by