create a matrix of all possible combinations of 4 projects formed
2 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
yulia kurniasih
am 28 Jun. 2018
Kommentiert: yulia kurniasih
am 12 Jul. 2018

I want make matrix M. I have 4 project, project 1 with cost 4 and benefit 3, project 2 with cost 8 and benefit 4 , project 3 with cost 10 and benefit 3, project 4 with cost 8 and benefit 2. There are 16 portfolios formed from the four projects (including empty portfolio). Each row of the matrix M denotes each portfolio (combinations of four project). The first column of the matrix M is the cumulative cost, the second column of the matrix M is the cumulative benefit, the third to the sixth column shows the projects included in the portfolio. So, in the second line of 4 3 1 0 0 0 the cumulative cost is 4, the cumulative advantage is 3, project 1 is included in the portfolio, project 2 to project 4 is not included in the portfolio. The four projects and their costs and benefits are stored in excel file, which I then read into matlab with code.
[num,txt,raw]=xlsread('coba.xlsx',1);

0 Kommentare
Akzeptierte Antwort
Guillaume
am 28 Jun. 2018
Bearbeitet: Guillaume
am 28 Jun. 2018
Project = [1; 2; 3; 4];
Cost = [4; 8; 10; 8];
Benefit = [3; 4; 3; 2];
M = dec2bin(0:2^numel(Project)-1) - '0'; %generate all combinations of project choice
M = [sum(Cost.' .* M, 2), sum(Benefit.' .* M, 2), M]
3 Kommentare
Guillaume
am 28 Jun. 2018
Bearbeitet: Guillaume
am 28 Jun. 2018
Yes, the order of the rows will be different. Why does it matter? As far as I can tell there's no logic to the order of your matrix anyway.
If you get an error in the second line it's because you're using an old version of matlab (always a good idea to mention that). In versions prior to R2016b:
M = [sum(bsxfun(@times, Cost.', M), 2), sum(bsxfun(@times, Benefit.', M), 2), M]
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!