% tur = [3, 4, 6]; nad = [100, 100, 100]; nan = [60, 56, 57, 52, 45, 38, 44, 45, 40, 43, 42, 41, 34, 35, 33, 35, 29, 28, 29, 29, 19, 20, 20, 21, 9, 9, 9, 8, 7, 6, 7, 6, 6, 5, 5, 6, 4, 4, 4, 5, 4, 4, 5, 5, 5, 4, 4, 6, 7, 8, 8, 21, 23, 25, 23, 47, 46, 46, 49, 73, 70, 72, 76, 85, 85, 84, 86, 81, 80, 81, 78, 67, 67, 70, 69, 75, 83,76, 85, 81, 81, 79, 77, 80, 83, 87, 83, 82, 82, 83, 85, 87, 88, 89, 76, 65]; enc = [540, 680, 960]; hor = 96; %------------------------------------------------------------------------------- function [o] = create_obj (tur, hor, enc) o = ones (1, hor); o = horzcat (o .* enc(1), o .* enc(2), o .* enc(3)); endfunction %------------------------------------------------------------------------------- function [r] = create_cst(hor) r = horzcat(ones(1, hor), zeros(1, hor), zeros(1, hor)); r = vertcat(r, horzcat(zeros(1, hor), ones(1, hor), zeros(1, hor))); r = vertcat(r, horzcat(zeros(1, hor), zeros(1, hor), ones(1, hor))); % r_qua1 = zeros(1, hor); for i = 13:24 r_qua1(i) = 1; endfor % r_qua2 = zeros(1, hor); for i = 9:24 r_qua2(i) = 1; endfor % r_qua3 = zeros(1, hor); for i = 1:24 r_qua3(i) = 1; endfor r_qua = horzcat(r_qua1, r_qua2, r_qua3); r = vertcat(r, r_qua); for j = 2:hor r_qua1 = shift(r_qua1, 1); r_qua2 = shift(r_qua2, 1); r_qua3 = shift(r_qua3, 1); r_qua = horzcat(r_qua1, r_qua2, r_qua3); r = vertcat(r, r_qua); endfor % save data.dat r; endfunction %------------------------------------------------------------------------------- % Main %------------------------------------------------------------------------------- [o] = create_obj (tur, hor, enc); [r] = create_cst (hor); [nl, nc] = size(r); b = horzcat(nad, nan); ctype = vertcat("U","U","U", repmat("L", nl-3, 1)); vartype = repmat("I", nc, 1); lb = zeros(nc, 1); ub = repmat(90, nc, 1); otype = 1; param.msglev = 3; param.mipgap = 0.1/100; [ xmin, fmin, status, extra ] = glpk (o, r, b', lb, ub, ctype, vartype, otype, param); % Shows the results sum(xmin) fmin status extra