Advertisement
CmdEngineer

Neural Networks | Car Race

Jul 5th, 2018
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 1.88 KB | None | 0 0
  1. import java.util.Collections;
  2.  
  3. float MUTATION_CHANCE = 0.3;
  4. float MUTATION_MIN = 0.5;
  5. float MUTATION_MAX = 0.7;
  6.  
  7. int BRAIN_SIZE = 100;
  8. int CAR_SPEED = 5;
  9.  
  10. int END_X = 250, END_Y = 0;
  11.  
  12. void setup()
  13. {
  14.   size(500, 500);
  15.   background(0);
  16. }
  17.  
  18. void draw()
  19. {
  20.  
  21. }
  22.  
  23.  
  24. class Race
  25. {
  26.   ArrayList<Car> cars = new ArrayList<Car>();
  27.   ArrayList<Car> placements = new ArrayList<Car>();
  28.   int endX, endY = 0;
  29.  
  30.   Race(int size, int startX, int startY, int endX, int endY)
  31.   {
  32.     for(int i = 0; i < size; i++)
  33.     {
  34.       cars.add(new Car(startX, startY));
  35.     }
  36.     this.endX = endX;
  37.     this.endY = endY;
  38.   }
  39.  
  40.   void runOnce()
  41.   {
  42.     for (Car car : cars)
  43.     {
  44.       car.move(CAR_SPEED);
  45.     }
  46.   }
  47.  
  48.   ArrayList<Car> getPlacements()
  49.   {
  50.     ArrayList<Car> placements = new ArrayList<Car>();
  51.     for(Car car : cars)
  52.     {
  53.       float distance = dist(car.x, car.y, endX, endY);
  54.       for(int i = 0; i < size; i
  55.     }
  56.   }
  57. }
  58.  
  59. class Car
  60. {
  61.   int x, y = 0;
  62.   float dir = 0;
  63.   Brain brain = new Brain(BRAIN_SIZE);
  64.  
  65.   Car(int startX, int startY)
  66.   {
  67.     x = startX;
  68.     y = startY;
  69.   }
  70.  
  71.   void move(int spd)
  72.   {
  73.     if (brain.next() != null)
  74.     {
  75.       dir = brain.curr;
  76.       x += (Math.sin(dir) * spd);
  77.       y -= (Math.cos(dir) * spd);
  78.     }
  79.   }
  80. }
  81.  
  82.  
  83. class Brain
  84. {
  85.   FloatList data = new FloatList();
  86.   Float curr = 0.0;
  87.   int index = 0;
  88.  
  89.   Brain(int size)
  90.   {
  91.     for(int i = 0; i < size; i++)
  92.     {
  93.       data.append(random(0, 1));
  94.     }
  95.   }
  96.  
  97.   Brain(Brain parent)
  98.   {
  99.     for(float n : parent.data)
  100.     {
  101.       if (random(0, 1) < MUTATION_CHANCE)
  102.       {
  103.         data.append(n * random(MUTATION_MIN, MUTATION_MAX));
  104.       }
  105.       else data.append(n);
  106.     }
  107.   }
  108.  
  109.   Float next()
  110.   {
  111.     if (index < data.size())
  112.     {
  113.       curr = data.get(index);
  114.       index++;
  115.     }
  116.     else return null;
  117.     return curr;
  118.   }
  119. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement