Algo simplex Matlab

Cougar -  
 rien -
Bonjour à tous

Quelqu'un aurait il un algorythme avec la méthode du simplex en matlab? Ce serait tres sympathique de votre part!!!
Merci!

Cordialement
Configuration: Windows XP
Firefox 2.0.0.6

8 réponses

  1. mizou
     
    I am sorry for the late response..
    J'ai trouvé OPL plus simple et plus rapide que matlab.
    Je te conseil vivement de le voir car il est proche de langage naturel...
    si ta des questions, je suis à ta disposition
    h!

    /*********************************************
    * OPL 6.1.1 Model
    * Author: hamza
    * Creation Date: 26 févr. 2009 at 16:14:07
    *********************************************/
    using CP;
    int p[1..6, 1..10]=...;
    int w[1..10]=...;
    int x[1..6,1..10]=...;

    dvar int n[1..6] in 0..2;
    dvar int s[1..10] in 0..2;

    minimize sum(i in 1..10) s[i];
    subject to{
    forall(j in 1..10)
    s[j]==sum(i in 1..6) p[i,j]*n[i];

    forall(j in 1..10)
    w[j] <= sum(i in 1..6) x[i,j]*n[i];

    }
    execute {
    for (var j = 1; j <= 10; j++) {

    write(s[j]+ " ");
    }}

    /*********************************************
    * OPL 6.1.1 Data
    * Author: hamza
    * Creation Date: 26 févr. 2009 at 16:14:07
    *********************************************/

    p=[
    [1,0,0,1,1,0,0,1,0,0],
    [0,1,0,0,1,1,0,0,1,0],
    [0,0,1,0,0,1,1,0,0,1],
    [1,1,0,1,0,1,0,1,1,0],
    [0,1,1,0,1,0,1,0,1,1],
    [1,1,1,1,0,0,1,1,1,1]
    ];
    x=[
    [1,0,0,1,1,0,0,1,0,0],
    [0,1,0,0,1,1,0,0,1,0],
    [0,0,1,0,0,1,1,0,0,1],
    [1,1,0,1,2,1,0,1,1,0],
    [0,1,1,0,1,2,1,0,1,1],
    [1,1,1,1,2,2,1,1,1,1]
    ];

    w=[1,1,1,1,2,2,1,1,1,1];
    5
  2. angel2828 Messages postés 1 Statut Membre 3
     
    est c k vous pouvez m envoyé le simplexe sous matlabe
    3
  3. mizou
     
    La fonction que tu dois utiliser est MILP(A, B, C ,UB, LB)
    Résigne toi sur MILP, sinon je t'enverrais un exemple qui va t'aider
    hamza
    2
    1. Romahisam
       
      je vous avoir plus des détails.......tous ce que je vous c'est l'algorithme de simplexe programmée en matlab....c'est très gentil...:)
      0
    2. bleu neige
       
      j'ai lu votre réponse dont utilisé la fonction MILP(A, B, C ,UB, LB) mais j'ai bien assimulée cette fonction priere de m'expliquer comment l'utiliser sur Matlab(je suis débutante en Matlab);Merci de me réponde et de votre aide
      0
  4. mizou
     
    si ta question consiste à comment résoudre un pbm de pgm lineair entiere avec matlab
    tu peux me contacter par mail
    Hamza
    1
    1. Romahisam Messages postés 5 Statut Membre 1
       
      j'aimerais de voir l'algorithme de simplexe programmé en matlab.......STP, si vous avez-le, dit-moi.........c'est très urgent...conterctez sur Romahisam@gmail.com...........merci à l'avance :)
      0
    2. fifi
       
      slt tous le mnde svp je veux le programme de simplexe sur matlab é j'airé b1
      k'il sera plus détaillé je le besoin le plu for possible svp é merci bcp
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. H.fakhi
     
    amigos l voici l simplex !!
    NB:pour entré la matrice A il faut que tu transforme l système en forme standard
    é bonne chance !

    function[x,Z]=simplex(A,b,C)
    [m,n]=size(A);
    M=[A eye(m,n) b ;C Zeros(1,m+1)];
    [V,d]=max(M(m+1,1:m+n));
    while V>0
    N=find (M(1:m,d)>0);
    T=ones(m,1)*inf;
    T(N)=M(N,n+m+1)./M(N,d);
    [i,l]=min(T);
    M(l,:)=M(l,:)./M(l,d);
    for i=1:m+1
    if i~=l
    M(i,:)=M(i,:)-M(l,:)*M(i,d);
    end
    end
    [V,d]=max(M(m+1,1:m+n));
    end
    x=Zeros(n,1);
    for i=1:n
    l=find(M(:,i)==1);
    if l&(sum (abs(M(:,i)))-1==0)
    x(i)=M(l,m+n+1);
    end
    end
    Z=-M(m+1,m+n+1);
    if~all (A*x<=b)
    x=[]; Z=[];
    display('pas de solution');
    end
    1
  7. rien
     
    clear all;clc;global cx,cx=0;
    disp('****** ALGO DU SIMPLEXE AVEC LES COUPES DE GOMORY ***************')
    a=input('La matrice a=');[m,n]=size(a);M=9999;nf=n;cx=cx+m*n+4;
    b=input('Le vecteur b=');c=input('Le vecteur c=');ci=c;
    disp('Si le problème à minimiser introduire "-1" sinon "1"')
    ch=input('Votre choix : ');fin=0;
    disp('Pour le vecteur des contraintes, donner:')
    disp(' "0": pour "="; "1":pour "<=" et "-1": pour ">="')
    co=input('Le vecteur co=');cx=cx+2*n*m+n+2*m+9;
    %******************** Mise du systeme sous forme standard *****************
    if(~(ch+1)) c=-c;cx=cx+n;end
    for i=1:m
    cx=cx+1;if(b(i)<0) a(i,:)=-a(i,:);b(i)=-b(i);co(i)=-co(i);cx=cx+n+2;end
    end
    for i=1:m
    cx=cx+1;if(~(co(i)+1)) n=n+1;a(:,n)=0;c(n)=0;a(i,n)=-1;co(n)=0;cx=cx+m+5;end
    end
    for i=1:m
    if(~(co(i)-1))
    n=n+1;a(:,n)=0;a(i,n)=1;c(n)=0;
    else
    n=n+1;a(:,n)=0;a(i,n)=1;c(n)=-M;
    end,cx=cx+m+5;
    end
    %******************** Debut du programme principale ***********************
    j=0;cx=cx+2;for i=n-m+1:n j=j+1;t(j)=i;cx=cx+4;end;%******* base **********
    while(~fin)
    e=zeros(1,n);cx=cx+n+1;
    for j=1:n
    for i=1:m e(j)=e(j)+c(t(i))*a(i,j);cx=cx+3;end
    end
    e=e-c;cx=cx+2*n;
    mn1=find(e==min(e));j0=mn1(1);cx=cx+4;%Calcul d'indice du min des e(j)*********
    if(e(j0)>=0)
    for j=1:n
    bo=exst(t,j);if(bo) x(j)=b(bo);else x(j)=0;end,cx=cx+3;
    end
    disp('-------------------------------------------------------------')
    disp('Les résultats finales du simplexe :')
    disp('------------------------------------')
    fin=1,MatriceFinale=num2str(a),cx=cx+n*m+7;
    disp([' e = ( ' num2str(e) ' )']),disp([' x* = ( ' num2str(x(1:nf)) ' )'])
    disp([' z = ' num2str(ci(1:nf)*x(1:nf)') ])
    disp('-------------------------------------------------------------')
    else
    l=length(find(a(:,j0)<=0));cx=cx+2;
    if(l-m)
    for i=1:m%Calcul du o(j) *************************************
    cx=cx+1;if(a(i,j0)>0) o(i)=b(i)/a(i,j0);cx=cx+2;else o(i)=M;cx=cx+1;end
    end
    mn=find(o==min(o));i0=mn(1);%Calcul d'indice du min des o(j)**
    t(i0)=j0;
    b(i0)=b(i0)/a(i0,j0);
    a(i0,:)=a(i0,:)/a(i0,j0);
    cx=cx+3*n+6;
    for i=1:m,cx=cx+1;
    if(i-i0)
    b(i)=b(i)-b(i0)*a(i,j0);a(i,:)=a(i,:)-a(i,j0)*a(i0,:);
    cx=cx+3*n+3;
    end
    end
    else
    fin=1;disp('La solution optimale n''est pas bornée'),cx=cx+2;
    end
    end
    end
    %******** Debut des coupes de Gomory **************************************
    fin=0;
    cx=cx+2;
    while(~fin)
    k=0;cx=cx+2;
    for j=1:n,cx=cx+3;
    if((frac(x(j))>=.00001)*(frac(x(j))<=.99999)) k=exst(t,j);
    break,cx=cx+2;
    end
    end,cx=cx+1;
    if(k)
    m=m+1;n=n+1;
    a(m,:)=-frac(a(k,:));b(m)=-frac(b(k));
    a(:,n)=zeros(m,1);a(m,n)=1;d=e;d(n)=0;fd=0;cx=cx+n+m+8;
    while(~fd)%********** Dual ****************************************
    m3=find(b==min(b));
    i0=m3(1);
    cx=cx+4;
    1
  8. grad
     
    vec la méthode du simplex en matlab
    Tu peux nous expliquer premièrement c'est quio simplex ???
    0
  9. spectre
     
    j'ai besoin de programme d'un PL sur matlab s.v.p
    0