Download
% number of components
NoComponents = 5;
% number of hardware requirements
HardwareREQ = 3;
% number of virtual machines offers
VMOffers = 500;
% virtual machines offers
VMSpecs = [|64, 976000, 1000, 
|64, 488000, 8000, 
|64, 488000, 8000, 
|64, 976000, 1000, 
|64, 488000, 8000, 
|64, 256000, 8000, 
|64, 976000, 1000, 
|64, 976000, 1000, 
|64, 488000, 8000, 
|64, 976000, 1000, 
|64, 976000, 1000, 
|64, 1952, 1000, 
|64, 976000, 1000, 
|64, 488000, 8000, 
|64, 976000, 1000, 
|64, 1952, 1000, 
|64, 488000, 8000, 
|64, 976000, 1000, 
|64, 1952, 1000, 
|64, 976000, 1000, 
|64, 488000, 8000, 
|64, 976000, 1000, 
|64, 976000, 1000, 
|64, 976000, 1000, 
|64, 1952, 1000, 
|32, 244000, 2000, 
|32, 244000, 4000, 
|32, 60000, 2000, 
|32, 60000, 2000, 
|32, 244000, 4000, 
|32, 244000, 8000, 
|32, 244000, 4000, 
|32, 244000, 4000, 
|32, 60000, 2000, 
|32, 244000, 2000, 
|32, 60500, 4000, 
|32, 244000, 2000, 
|32, 244000, 2000, 
|32, 60000, 2000, 
|32, 244000, 2000, 
|32, 244000, 8000, 
|32, 244000, 2000, 
|32, 244000, 4000, 
|32, 244000, 8000, 
|32, 244000, 4000, 
|32, 244000, 8000, 
|32, 60000, 2000, 
|32, 60000, 2000, 
|32, 244000, 8000, 
|32, 60000, 2000, 
|32, 244000, 4000, 
|32, 128000, 4000, 
|32, 244000, 4000, 
|32, 60000, 2000, 
|32, 244000, 2000, 
|32, 60500, 4000, 
|32, 244000, 4000, 
|32, 60500, 4000, 
|32, 60000, 2000, 
|32, 976000, 1000, 
|32, 244000, 4000, 
|32, 244000, 8000, 
|32, 244000, 8000, 
|32, 244000, 4000, 
|32, 976000, 1000, 
|32, 60000, 2000, 
|32, 128000, 4000, 
|32, 60000, 2000, 
|32, 244000, 2000, 
|32, 976000, 1000, 
|32, 128000, 4000, 
|32, 244000, 4000, 
|32, 244000, 2000, 
|32, 128000, 4000, 
|32, 244000, 4000, 
|32, 976000, 1000, 
|32, 244000, 4000, 
|32, 60000, 2000, 
|32, 60000, 2000, 
|32, 244000, 4000, 
|32, 244000, 4000, 
|32, 976000, 1000, 
|32, 976000, 1000, 
|32, 244000, 4000, 
|32, 244000, 4000, 
|17, 117000, 24000, 
|16, 122000, 2000, 
|16, 30000, 2000, 
|16, 122000, 12000, 
|16, 122000, 2000, 
|17, 117000, 24000, 
|16, 122000, 2000, 
|16, 30000, 2000, 
|16, 122000, 12000, 
|16, 122000, 12000, 
|16, 122000, 4000, 
|16, 122000, 4000, 
|16, 122000, 2000, 
|16, 30000, 2000, 
|16, 122000, 4000, 
|16, 122000, 4000, 
|16, 122000, 4000, 
|16, 122000, 4000, 
|16, 30000, 2000, 
|16, 122000, 2000, 
|17, 117000, 24000, 
|16, 122000, 2000, 
|16, 30000, 2000, 
|16, 30000, 2000, 
|16, 122000, 4000, 
|16, 122000, 12000, 
|16, 122000, 2000, 
|16, 122000, 2000, 
|16, 122000, 1000, 
|16, 122000, 12000, 
|16, 488000, 1000, 
|16, 30000, 2000, 
|16, 122000, 1000, 
|16, 122000, 12000, 
|16, 122000, 4000, 
|16, 488000, 1000, 
|16, 488000, 1000, 
|16, 122000, 12000, 
|16, 122000, 4000, 
|16, 122000, 1000, 
|16, 122000, 12000, 
|16, 122000, 4000, 
|16, 122000, 12000, 
|16, 122000, 1000, 
|16, 30000, 2000, 
|16, 122000, 2000, 
|16, 30000, 2000, 
|16, 22500, 2000, 
|17, 117000, 24000, 
|16, 122000, 12000, 
|16, 122000, 4000, 
|16, 122000, 12000, 
|16, 122000, 2000, 
|16, 122000, 12000, 
|16, 122000, 2000, 
|16, 122000, 12000, 
|16, 122000, 12000, 
|16, 122000, 2000, 
|17, 117000, 24000, 
|16, 30000, 2000, 
|16, 122000, 4000, 
|16, 122000, 12000, 
|16, 488000, 1000, 
|16, 122000, 12000, 
|16, 30000, 2000, 
|16, 122000, 4000, 
|16, 122000, 1000, 
|16, 30000, 2000, 
|16, 30000, 2000, 
|16, 122000, 1000, 
|16, 122000, 1000, 
|16, 122000, 12000, 
|16, 64000, 2000, 
|16, 30000, 2000, 
|16, 122000, 2000, 
|16, 122000, 12000, 
|16, 488000, 1000, 
|16, 122000, 12000, 
|16, 122000, 1000, 
|16, 122000, 12000, 
|16, 122000, 12000, 
|16, 122000, 1000, 
|16, 122000, 2000, 
|16, 30000, 2000, 
|16, 122000, 1000, 
|16, 122000, 2000, 
|8, 61000, 1000, 
|8, 61000, 6000, 
|8, 15000, 2000, 
|8, 61000, 1000, 
|8, 61000, 1000, 
|8, 68400, 2000, 
|8, 61000, 1000, 
|8, 61000, 1000, 
|8, 15000, 1000, 
|8, 32000, 1000, 
|8, 68400, 2000, 
|8, 15000, 1000, 
|8, 68400, 2000, 
|8, 68400, 2000, 
|8, 61000, 6000, 
|8, 7000, 4000, 
|8, 61000, 6000, 
|8, 61000, 1000, 
|8, 61000, 1000, 
|8, 61000, 6000, 
|8, 15000, 2000, 
|8, 61000, 2000, 
|8, 61000, 2000, 
|8, 68400, 2000, 
|8, 30000, 2000, 
|8, 15000, 1000, 
|8, 61000, 6000, 
|8, 61000, 1000, 
|8, 15000, 2000, 
|8, 61000, 1000, 
|8, 15000, 2000, 
|8, 15000, 1000, 
|8, 15000, 1000, 
|8, 61000, 6000, 
|8, 7000, 4000, 
|8, 61000, 1000, 
|8, 61000, 6000, 
|8, 61000, 1000, 
|8, 61000, 1000, 
|8, 244000, 1000, 
|8, 61000, 1000, 
|8, 244000, 1000, 
|8, 61000, 2000, 
|8, 61000, 6000, 
|8, 61000, 6000, 
|8, 61000, 2000, 
|8, 30000, 2000, 
|8, 15000, 2000, 
|8, 61000, 2000, 
|8, 61000, 2000, 
|8, 30000, 2000, 
|8, 61000, 1000, 
|8, 61000, 6000, 
|8, 15000, 1000, 
|8, 30000, 2000, 
|8, 61000, 2000, 
|8, 244000, 1000, 
|8, 61000, 1000, 
|8, 244000, 1000, 
|8, 61000, 1000, 
|8, 61000, 2000, 
|8, 61000, 1000, 
|8, 7000, 4000, 
|8, 15000, 2000, 
|8, 7000, 4000, 
|8, 61000, 1000, 
|8, 61000, 2000, 
|8, 61000, 6000, 
|8, 15000, 2000, 
|8, 30000, 2000, 
|8, 32000, 1000, 
|8, 15000, 2000, 
|8, 7000, 4000, 
|8, 15000, 1000, 
|8, 30000, 2000, 
|8, 61000, 1000, 
|8, 61000, 1000, 
|8, 68400, 2000, 
|8, 61000, 1000, 
|8, 15000, 2000, 
|8, 30000, 2000, 
|8, 61000, 2000, 
|8, 15000, 2000, 
|8, 61000, 6000, 
|8, 61000, 1000, 
|8, 15000, 2000, 
|8, 68400, 2000, 
|8, 15000, 2000, 
|8, 32000, 1000, 
|8, 61000, 6000, 
|8, 30000, 2000, 
|8, 68400, 2000, 
|8, 61000, 1000, 
|8, 7000, 4000, 
|8, 15000, 1000, 
|8, 61000, 1000, 
|8, 7000, 4000, 
|8, 7000, 4000, 
|8, 30000, 2000, 
|8, 7000, 4000, 
|8, 15000, 1000, 
|8, 61000, 1000, 
|8, 244000, 1000, 
|8, 61000, 2000, 
|8, 30000, 2000, 
|8, 61000, 2000, 
|8, 15000, 2000, 
|8, 30000, 2000, 
|8, 61000, 2000, 
|8, 68400, 2000, 
|8, 7000, 4000, 
|8, 61000, 6000, 
|8, 7000, 4000, 
|8, 30000, 2000, 
|8, 61000, 6000, 
|8, 30000, 2000, 
|8, 61000, 1000, 
|8, 15000, 2000, 
|8, 32000, 1000, 
|8, 61000, 2000, 
|8, 30000, 2000, 
|8, 61000, 1000, 
|8, 15000, 2000, 
|8, 244000, 1000, 
|8, 7000, 4000, 
|8, 61000, 1000, 
|8, 61000, 6000, 
|8, 15000, 1000, 
|8, 30000, 2000, 
|8, 61000, 6000, 
|8, 68400, 2000, 
|4, 122000, 1000, 
|4, 15000, 2000, 
|4, 30500, 3000, 
|4, 30500, 3000, 
|4, 30500, 1000, 
|4, 15000, 2000, 
|4, 30500, 1000, 
|4, 30500, 3000, 
|4, 30500, 1000, 
|4, 15000, 2000, 
|4, 15000, 4000, 
|4, 30500, 3000, 
|4, 7500, 2000, 
|4, 15000, 4000, 
|4, 34200, 1000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 34200, 1000, 
|4, 30500, 1000, 
|4, 15000, 2000, 
|4, 30500, 1000, 
|4, 30500, 3000, 
|4, 15000, 4000, 
|4, 15000, 2000, 
|4, 34200, 1000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 15000, 2000, 
|4, 30500, 1000, 
|4, 15000, 4000, 
|4, 30500, 3000, 
|4, 30500, 3000, 
|4, 30500, 1000, 
|4, 34200, 1000, 
|4, 15000, 2000, 
|4, 15000, 4000, 
|4, 122000, 1000, 
|4, 7500, 2000, 
|4, 30500, 3000, 
|4, 30500, 1000, 
|4, 30500, 3000, 
|4, 15000, 4000, 
|4, 30500, 1000, 
|4, 15000, 2000, 
|4, 7500, 2000, 
|4, 30500, 1000, 
|4, 7500, 2000, 
|4, 30500, 1000, 
|4, 30500, 3000, 
|4, 30500, 3000, 
|4, 7500, 2000, 
|4, 7500, 2000, 
|4, 15000, 2000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 7500, 2000, 
|4, 7500, 2000, 
|4, 30500, 1000, 
|4, 122000, 1000, 
|4, 7500, 2000, 
|4, 30500, 1000, 
|4, 7500, 2000, 
|4, 30500, 1000, 
|4, 30500, 3000, 
|4, 15000, 2000, 
|4, 30500, 1000, 
|4, 15000, 2000, 
|4, 30500, 1000, 
|4, 122000, 1000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 15000, 2000, 
|4, 15000, 2000, 
|4, 34200, 1000, 
|4, 122000, 1000, 
|4, 7500, 2000, 
|4, 30500, 1000, 
|4, 15000, 2000, 
|4, 30500, 3000, 
|4, 15000, 2000, 
|4, 30500, 1000, 
|4, 34200, 1000, 
|4, 34200, 1000, 
|4, 15000, 2000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 30500, 3000, 
|4, 7500, 2000, 
|4, 30500, 3000, 
|4, 30500, 3000, 
|4, 15000, 2000, 
|4, 7500, 2000, 
|4, 30500, 1000, 
|4, 30500, 1000, 
|4, 34200, 1000, 
|4, 15000, 4000, 
|4, 30500, 3000, 
|4, 7500, 2000, 
|4, 15000, 4000, 
|4, 30500, 3000, 
|4, 30500, 1000, 
|2, 7500, 1000, 
|2, 15250, 1000, 
|2, 17100, 1000, 
|2, 7500, 2000, 
|2, 3750, 2000, 
|2, 7500, 2000, 
|2, 17100, 1000, 
|2, 15250, 1000, 
|2, 15250, 1000, 
|2, 17100, 1000, 
|2, 7500, 1000, 
|2, 15250, 1000, 
|2, 3750, 2000, 
|2, 7500, 1000, 
|2, 15250, 1000, 
|2, 3750, 2000, 
|2, 15250, 1000, 
|2, 15250, 1000, 
|2, 7500, 2000, 
|2, 15250, 1000, 
|2, 15250, 1000, 
|2, 15250, 1000, 
|2, 7500, 1000, 
|2, 7500, 1000, 
|2, 3750, 2000, 
|2, 15250, 1000, 
|2, 15250, 1000, 
|2, 1700, 1000, 
|2, 7500, 2000, 
|2, 7500, 1000, 
|2, 15250, 1000, 
|2, 15250, 1000, 
|2, 7500, 2000, 
|2, 15250, 1000, 
|2, 17100, 1000, 
|2, 15250, 1000, 
|2, 7500, 1000, 
|2, 7500, 2000, 
|2, 7500, 2000, 
|2, 7500, 1000, 
|2, 7500, 1000, 
|2, 3750, 2000, 
|2, 3750, 2000, 
|2, 15250, 1000, 
|2, 1700, 1000, 
|2, 7500, 2000, 
|2, 7500, 2000, 
|2, 15250, 1000, 
|2, 1700, 1000, 
|2, 1700, 1000, 
|2, 1700, 1000, 
|2, 17100, 1000, 
|2, 3750, 2000, 
|2, 7500, 1000, 
|2, 7500, 1000, 
|2, 3750, 2000, 
|2, 17100, 1000, 
|2, 1700, 1000, 
|2, 15250, 1000, 
|2, 1700, 1000, 
|2, 7500, 1000, 
|2, 1700, 1000, 
|2, 17100, 1000, 
|2, 1700, 1000, 
|2, 15250, 1000, 
|2, 7500, 1000, 
|2, 15250, 1000, 
|2, 17100, 1000, 
|2, 3750, 2000, 
|1, 3750, 1000, 
|1, 1700, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 1700, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 1700, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 1700, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000, 
|1, 3750, 1000|];
             
% minimum requirements for each component
CompREQ = [| 2,  512, 1000,
           | 2,  512, 2000,
           | 4, 2048,  500,
           | 4, 2048,  500,
           | 4, 4000,  500 |];
           
% the cost of virtual machines
VMPrice = [8403, 9152, 6016, 10638, 5792, 4400, 9337, 10106, 4992, 6669, 7336, 17600, 10271, 5856, 8003, 21278, 5664, 8070, 16000, 9243, 5952, 9187, 13005, 14306, 14678, 4105, 2752, 1912, 2808, 3291, 7502, 2746, 2992, 1838, 3201, 2000, 3500, 2660, 1839, 3192, 8004, 3032, 3027, 8102, 2976, 7733, 2600, 1680, 6820, 2016, 2496, 2342, 3274, 3592, 2964, 2250, 2896, 2349, 3088, 10639, 3115, 8183, 8140, 3309, 7339, 2064, 2200, 2117, 3750, 8000, 2444, 2928, 5597, 2612, 5034, 9672, 3186, 2043, 4000, 3221, 4576, 6672, 8800, 3008, 2832, 5570, 1373, 1430, 3176, 1558, 4600, 1464, 924, 3376, 2940, 4456, 4477, 1514, 1008, 4070, 3751, 4126, 3867, 919, 1448, 5400, 1654, 956, 840, 3410, 3714, 1488, 1376, 1482, 3713, 5320, 1052, 1330, 3637, 4254, 3670, 4836, 3643, 4501, 1596, 3340, 4091, 3480, 1463, 1058, 2517, 1032, 2100, 4900, 3036, 4402, 2760, 1504, 3087, 1496, 3494, 3312, 1593, 5520, 1108, 4402, 3828, 4000, 3125, 1164, 4002, 1516, 1135, 1300, 1630, 1759, 3438, 1222, 1123, 1416, 3234, 4400, 3306, 1668, 3396, 3397, 2799, 1646, 1020, 3079, 1637, 732, 1470, 582, 1258, 815, 1078, 805, 1539, 650, 550, 1265, 772, 1420, 1183, 1518, 520, 1856, 752, 686, 1688, 505, 2250, 2035, 1100, 672, 898, 1588, 1399, 562, 624, 478, 987, 702, 1822, 655, 758, 1670, 823, 878, 2418, 798, 1668, 2201, 1857, 1380, 2228, 644, 526, 1933, 1876, 761, 688, 1544, 988, 739, 2064, 1835, 796, 2200, 818, 2001, 724, 651, 516, 572, 800, 1705, 1698, 462, 585, 586, 529, 721, 715, 770, 880, 779, 980, 1144, 715, 532, 2239, 460, 1617, 748, 567, 1210, 650, 611, 1914, 695, 1301, 665, 632, 1000, 741, 592, 695, 837, 628, 1100, 827, 2660, 2201, 732, 2045, 420, 862, 2025, 1171, 790, 1653, 718, 784, 1656, 804, 744, 554, 653, 2126, 678, 708, 511, 2000, 691, 757, 1719, 849, 847, 1563, 1288, 1209, 402, 827, 759, 354, 370, 1000, 873, 938, 339, 486, 957, 358, 350, 633, 366, 853, 490, 362, 315, 409, 690, 514, 372, 592, 399, 372, 378, 366, 344, 467, 828, 844, 343, 539, 392, 423, 1100, 210, 928, 333, 735, 379, 1022, 266, 231, 403, 325, 700, 849, 772, 258, 255, 385, 629, 1032, 439, 376, 398, 252, 252, 371, 834, 239, 967, 292, 1101, 910, 336, 411, 409, 1101, 1000, 1120, 1125, 389, 431, 424, 586, 917, 277, 770, 347, 870, 308, 400, 710, 605, 381, 1018, 572, 794, 265, 859, 928, 419, 230, 1064, 414, 651, 465, 911, 283, 535, 809, 379, 146, 207, 293, 233, 145, 256, 303, 166, 183, 296, 161, 204, 132, 185, 172, 179, 189, 385, 243, 200, 199, 206, 158, 154, 116, 188, 220, 197, 193, 193, 156, 201, 267, 315, 245, 286, 183, 209, 175, 201, 205, 141, 138, 190, 143, 190, 232, 350, 130, 158, 180, 275, 128, 212, 209, 126, 355, 148, 186, 157, 216, 164, 322, 173, 177, 196, 205, 316, 126, 117, 44, 87, 96, 108, 91, 64, 129, 106, 84, 105, 58, 93, 74, 77, 92, 73, 52, 100, 122, 79, 134, 98];