Programmation MATLAB-Mutation dans un algorithme génétique
Répondre à la discussion
Affichage des résultats 1 à 8 sur 8

Programmation MATLAB-Mutation dans un algorithme génétique



  1. #1
    invite601a5f00

    Programmation MATLAB-Mutation dans un algorithme génétique


    ------

    Bonsoir à toute la famille du forum. Je travaille sur un algorithme génétique.
    Je dispose d'un chromosome suivant P=|1|2|5|5|6| dont la longueur est L=5 et les valeurs séparées désignent les gènes. Pi est le (i+1)ième gène de P avec i appartenant à [0;L-1].
    J'aimerai avoir un algorithme qui choisit au hasard 2 nombres entiers i,j appartenant à [0;L-1] (tel que i est différent de j). Ensuite il prend pj et l'insère avant pi si j>i;prend pi et l'insère avant pj si i>j. Je précise aussi que la probabilité de mutation est 1.

    Je suis trop impatient de cet algorithme.

    Merci de votre de compréhension

    -----

  2. #2
    Paraboloide_Hyperbolique

    Re : Programmation MATLAB-Mutation dans un algorithme génétique

    Bonjour,

    La fonction "randi" peut vous aider dans votre tâche.
    http://www.mathworks.nl/help/matlab/ref/randi.html

  3. #3
    invite601a5f00

    Re : Programmation MATLAB-Mutation dans un algorithme génétique

    Bonjour, je peux avoir un example d'algorithme dans ce contexte? Je ne suis pas très apte en programmation s'il te plait.

  4. #4
    Paraboloide_Hyperbolique

    Re : Programmation MATLAB-Mutation dans un algorithme génétique

    Bonjour,

    Tel que je comprend votre énoncé, le code devrait ressembler à cela:

    Code:
    P = [1 2 5 5 6];
    r = randi(length(P), 1, 2);
    
    if(r(1) < r(2))
        P = [P(1:r(1)-1) P(r(2)) P(r(1):r(2)-1) P(r(2)+1:end)]; % Insertion du gène en position j=r(2) devant le gène en position i=r(1). Les autres gènes sont décalés.
    elseif(r(1) > r(2))
        %... Implémentation similaire.
        % Note: si r(1) == r(2), le chromosome est inchangé.
    end

  5. A voir en vidéo sur Futura
  6. #5
    invite601a5f00

    Re : Programmation MATLAB-Mutation dans un algorithme génétique

    Bonsoir et merci M. Paraboloide_Hyperbolique. Je comprend votre logique mais pour r(1)=1, il problème dans le premier gène.
    Merci pour la proposition d'une amélioration.

  7. #6
    Paraboloide_Hyperbolique

    Re : Programmation MATLAB-Mutation dans un algorithme génétique

    Citation Envoyé par patricia_ze Voir le message
    Bonsoir et merci M. Paraboloide_Hyperbolique. Je comprend votre logique mais pour r(1)=1, il problème dans le premier gène.
    Merci pour la proposition d'une amélioration.
    Heu, quel problème ? Si r(1)=1, P(1:r(1)-1)=P(1:0) est vide et P(r(2)) est bien inséré en première position. Ce n'est pas ce qui est désiré ? Dans ce cas je n'ai pas correctement compris ce que vous vouliez faire.

  8. #7
    invite601a5f00

    Re : Programmation MATLAB-Mutation dans un algorithme génétique

    Bonsoir et merci M. Paraboloide_Hyperbolique. Je confirme maintenant votre algorithme il est très propre. Mais je veux que lorsque je l'exécute il affiche une fois la nouvelle valeur de P.
    De plus ya-t-il pas une fonction MATLAB qui choisit ces 2 nombres de tel qu'il soient toujours distincts?
    Je m'excuse si je demande un peu trop. C'est parce que je n'ai pas le choix.
    Merci une fois de plus davantage!

  9. #8
    Paraboloide_Hyperbolique

    Re : Programmation MATLAB-Mutation dans un algorithme génétique

    Bonjour,

    Citation Envoyé par patricia_ze Voir le message
    Bonsoir et merci M. Paraboloide_Hyperbolique. Je confirme maintenant votre algorithme il est très propre. Mais je veux que lorsque je l'exécute il affiche une fois la nouvelle valeur de P.
    Voyez la fonction "disp" pour afficher une variable.

    Citation Envoyé par patricia_ze Voir le message
    De plus ya-t-il pas une fonction MATLAB qui choisit ces 2 nombres de tel qu'il soient toujours distincts?
    Je m'excuse si je demande un peu trop. C'est parce que je n'ai pas le choix.
    Je n'en connais pas. Cependant il n'est pas difficile d'en construire une en mettant "randi" dans une boucle et de tourner dedans tant que la fonction ne retourne pas deux entier différents.

    Citation Envoyé par patricia_ze Voir le message
    Merci une fois de plus davantage!
    De rien.

Discussions similaires

  1. mutation génétique
    Par invite82dc8b02 dans le forum Biologie
    Réponses: 2
    Dernier message: 12/05/2012, 17h45
  2. mutation genetique ou pas
    Par invite77e3bd28 dans le forum Biologie
    Réponses: 3
    Dernier message: 02/03/2012, 18h50
  3. Programmation d'algorithme sous Matlab
    Par inviteea2db6de dans le forum Mathématiques du supérieur
    Réponses: 2
    Dernier message: 13/04/2010, 14h08
  4. Bonjour, j'ai un problème dans la programmation sur matlab
    Par inviteafcb36d6 dans le forum Logiciel - Software - Open Source
    Réponses: 7
    Dernier message: 02/07/2008, 09h51
  5. [Biologie Moléculaire] mutation génétique
    Par inviteec077029 dans le forum Biologie
    Réponses: 12
    Dernier message: 26/11/2007, 00h20