multidimensional matrix optimization error

2 ビュー (過去 30 日間)
BOWEN LI
BOWEN LI 2019 年 7 月 20 日
コメント済み: BOWEN LI 2019 年 7 月 24 日
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 件のコメント
dpb
dpb 2019 年 7 月 21 日
編集済み: dpb 2019 年 7 月 21 日
>> 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 2019 年 7 月 21 日
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!

サインインしてコメントする。

採用された回答

Kavya Vuriti
Kavya Vuriti 2019 年 7 月 24 日
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 件のコメント
BOWEN LI
BOWEN LI 2019 年 7 月 24 日
Thank you so much! I will try with yours. Appreciate for your answer.

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeGet Started with Optimization Toolbox についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by