Partage
  • Partager sur Facebook
  • Partager sur Twitter

[AIDE] Algo génétique Processing (JAVA)

    18 septembre 2016 à 21:06:01

    Salut à tous j'aimerais pouvoir réalisé un petit algo génétique tel que celui ci :

    https://www.youtube.com/watch?v=Zk9qsqq4Uew

    Je ne suis que débutant en programmation je fait plutôt de la robotique et utilise rarement autre chose que  l'Arduino donc c'est assez naturelemnt que je me suis tourné sur Processing pour réalisé ce "projet"

    donc voici les schémas de ce que je voudrais faire :  

    et pour l'instant j'ai fait cette esquisse de code qui fonctionne pour 1 seule bête :

    Balle maBalle = new Balle(500, 500, color(155,50,52));
    float w = random(0,500) ;
    float v = random(0,500) ;
    Nour nouriture = new Nour(w, v, color(255));
    
    float p1 = random(-2,2) ;
    float p2 = random(-2,2) ;
    float p3 = random(-2,2) ;
    float p4 = random(-2,2) ;
    
    
    void setup() {
      smooth(); //Lissage des dessins
      size(1000, 1000); //Taille de la fenêtre
    }
    
    void draw() {
      fill(0, 0, 0, 1);
      rect(0, 0, width, height);
    
      noStroke();
    
      //Déplacement et affichage de la balle
      maBalle.bouge();
      maBalle.testCollision();
      maBalle.display();
    }
    
    class Balle {
      //Déclaration des paramètres de base de la balle
      float x;
      float y;
      float vitesseX; //AJOUT
      float vitesseY; //AJOUT
      color couleur;
     
    
      //Constructeur de la balle
      Balle (float nouvX, float nouvY, color nouvCouleur) {
        x          = nouvX;
        y          = nouvY;
        couleur    = nouvCouleur;
    
        vitesseX = w*p1+x*p2 ; //AJOUT
        vitesseY = v*p3+y*p4 ;
       
      }
    
      //Dessin de la balle
      void display() {
        fill(couleur);
        ellipse(x, y, 40, 40);
        nouriture.display(); 
      }
         
      void bouge() {
       
            vitesseX = w*p1+x*p2 ; //AJOUT
            vitesseY = v*p3+y*p4 ; //AJOUT
            
            
    if (vitesseX-abs(vitesseX)<0){
     x--; 
    }
    if (vitesseX-abs(vitesseX)==0){
     x++; 
    }
    if (vitesseY-abs(vitesseY)<0){
     y--; 
    }
    if (vitesseY-abs(vitesseY)==0){
     y++; 
    }
    
       
      }
      
     
      
      
    
      void testCollision() {
        //Si la balle touche une mur, elle rebondit
        if (x > width-20 || x < 20) {
          vitesseX = vitesseX * -1;
        }
        if (y > height-20 || y < 20) {
          vitesseY = vitesseY * -1;
        }
      }}
    
      class Nour {
      //Déclaration des paramètres de base de la balle
      float z=500;
      float q=500;
      color couleur2;
    
      //Constructeur de la balle
      Nour (float nouvz, float nouvq, color nouvCouleur2) {
        z          = nouvz;
        q          = nouvq;
        couleur2    = nouvCouleur2;
      }
    
      //Dessin de la balle
      void display() {
        fill(couleur2);
        ellipse(z, q, 40, 40);
      }
    } // soyez indulgent je rappelle que je suis un petit débutant 

    on peut voir que si on met 1 ; -1 ; 1 ;-1 pour les poids p1 p2 p3 et p4 la bête se dirige sur la nourriture comme prévu ! 

    mais voila mon problème :

    comment faire pour créer plusieurs bêtes en même temps mais sans quelles aient les mêmes poids ?   

    -
    Edité par UgoRoux 19 septembre 2016 à 18:08:19

    • Partager sur Facebook
    • Partager sur Twitter

    [AIDE] Algo génétique Processing (JAVA)

    × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
    × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
    • Editeur
    • Markdown