write(%io(2),'Optimisation de la production d''une serie d''ateliers')
//
m=evstr(x_dialog('Nombre d''ateliers','2'));
b=string(12*ones(1,m));// donneees [Lac]
b=evstr(x_dialog('Nombre d''heures d''usinage de chaque atelier',b));
p=evstr(x_dialog('Nombre d''articles','2'));
q=string([4,3,ones(1,p-2)]);// donneees [Lac]
q=evstr(x_dialog('Marge unitaire sur chaque article',q));q=q';
B=ones(p,m);B(1,1)=2;B(1,2)=1;B(2,1)=1;B(2,2)=2;// donneees [Lac]
B=evstr(x_matrix('Nombre d''heures d''usinage de l''article j dans l''atelier i',B));
n=m+p;
q1=[q,zeros(1,m)];
B1=[B,eye(m,m)];
X=[zeros(p,1);b];
J=(p+1):n;
Jb=1:p;
d=q1(Jb)-q1(J)*inv(B1(:,J))*B1(:,Jb);
niter=1;z=0;
write(%io(2),'Methode du simplexe');
write(%io(2),'iteration     gain   article1    article2');
while max(d)>0
    niter=niter+1;
    [a,iin]=max(d);
    b1=inv(B1(:,J))*b;A1=inv(B1(:,J))*B1(:,Jb);b2=A1(:,iin);b3=b1./(b2+1E-12);
    [theta,iout]=min(b3);
    ib=J(iout);J(iout)=Jb(iin);Jb(iin)=ib;
    d=q1(Jb)-q1(J)*inv(B1(:,J))*B1(:,Jb);
    z=q1(J)*inv(B1(:,J))*b;
    X(J)=inv(B1(:,J))*b;
    write(%io(2),[niter-1,z,X(1:p)'],'(10(i8,1x))');
end
//
B0=[B';-eye(p,p)];b0=[b;zeros(p,1)];
//X0=linpro(-q',B0,b0);
write(%io(2),'Methode du simplexe, solution Scilab:');
write(%io(2),X0,'(10(i3,1x))');
//

















//