Úkol 3

2013/2014 obr reseni

Nastin reseni: 

%Kombinatoricka optimalizace (A4M35KO)
%Celociselne linearni programovani
%
% Planovani smen
clc; 
clear;
close all;

%%
r=48;
b = [6 6 6 6 6 8 9 12 18 22 25 21 21 20 18 21 21 24 24 18 18 18 12 8]';
b=[b;-b]
c = [zeros(1,r/2) ones(1,r/2)]' % minimalizace z
A = zeros(r/2,r); % rovnice rozsirene o y
for i=1:24
    A(i,24+i)=-1;
end
for i=1+17:24+17
    for j=0:7
        A(i-17,mod(i+j-1,24)+1)=1;
    end
end
A=[A;-A]
for i=25:48
    A(i,i)=-1;
end


sense=1;                                %typ optimalizace: 1=minimalizace, -1=maximalizace
ctype = repmat('L',r,1)';     %typ podminky: 'E'="=", 'L'="<=", 'G'=">="
lb = zeros(1,r)';            %dolni mez promenych (0)
ub = [25*ones(1,r)]';            %horni mez promenych (1,2)
vartype = repmat('I',r,1)';   %Typ promenne 'C'=spojita, 'I'=celociselna
%Parametry optimalizace
schoptions=schoptionsset('ilpSolver','glpk','solverVerbosity',2);
%%
%spusteni optimalizace z TORSCHE
[xmin,fmin,status,extra] = ilinprog(schoptions,sense,c,A,b,ctype,lb,ub,vartype);

res=zeros(1,24);
for i=0:23
    for j=0:7
    res(mod(i+j,24)+1)=res(mod(i+j,24)+1)+xmin(i+1);
    end
end

if(status==1)
    disp('Reseni:');
    xmin
    disp('Hodnota cilove funkce:');
    fmin
else
    disp('Problem nema reseni!');
end;

bar(1:24,[res' b(1:24)])