Giter VIP home page Giter VIP logo

snakeai's Issues

Dont do this

boolean foodCollide(float x, float y) {  //check if a position collides with the food  
     if(x == food.pos.x && y == food.pos.y) {
         return true;
     }
     return false;
}

What about:

boolean foodCollide(float x, float y) {  //check if a position collides with the food    
     return x == food.pos.x && y == food.pos.y;
}

Otherwise cool!

Saved model file does not load

Loading the saved .csv model file failed if we trained model with more generations than are weights in level L0.

Method in SnakeAI.pde:
void fileSelectedIn(File selection)

157:
while(genscore != 0)

it should be
while((genscore != 0) & (g<modelTable.getRowCount()-1))

E.g. For topology 1x4 we have 25x4 L0 weights => rows in saved output .csv file
If the simulation is performed for more than 100 generations (101) than 100th row in saved .csv file it will have in Graph column genscore<>0 and 101st row will not exist. An error exception will be thrown and the model will not be loaded.

It's just work around. In case we need a Graph of progress, the results of the score per generation should be saved in a separate file.

Size of the snake as an input

I really wonder what happens if you add one more input neuron that represents size of the snake. If the size also be taken into account, better strategies will be developed, i hope.

Manhattan distance (see Wikipedia)

For the diagonal directions, it seems your distance calculation is wrong, it might be the correct distance as the crow flies, but you cannot walk like that in Manhattan (nor in Snake). The distance is the sum of the absolute differences of the x's and the y's (whether you go zig-zag or not makes no difference).

InvocationTargetException when saving in a file with an extension other than .csv

Operating System

Windows 10

Steps to reproduce

  1. Start SnakeAI
  2. Click on Save Button
  3. Enter a filename with an extension other than .csv, "model.dat" for e.g.
  4. Click on Save

A file is created but its size is 0 Kb and the error bellow appears in console

Error

java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at processing.core.PApplet.selectCallback(PApplet.java:6719)
at processing.core.PApplet.access$1(PApplet.java:6712)
at processing.core.PApplet$4.run(PApplet.java:6623)
at java.awt.event.InvocationEvent.dispatch(InvocationEvent.java:311)
at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)
at java.awt.EventQueue.access$500(EventQueue.java:97)
at java.awt.EventQueue$3.run(EventQueue.java:709)
at java.awt.EventQueue$3.run(EventQueue.java:703)
at java.security.AccessController.doPrivileged(Native Method)
at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:74)
at java.awt.EventQueue.dispatchEvent(EventQueue.java:728)
at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:205)
at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101)
at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93)
at java.awt.EventDispatchThread.run(EventDispatchThread.java:82)
Caused by: java.lang.IllegalArgumentException: No extension specified for saving this Table
at processing.data.Table.save(Table.java:1184)
at processing.data.Table.save(Table.java:1175)
at processing.core.PApplet.saveTable(PApplet.java:6299)
at processing.core.PApplet.saveTable(PApplet.java:6276)
at SnakeAI.fileSelectedOut(SnakeAI.java:226)
... 21 more

Suggestion

The "save as" dialog should automatically add the .csv extension

add input

I wonder what will happen if there is added a input for 'hunger' ie. the longer after last apple, the hungrier the snake gets

PyTorch model

Thanks for sharing the great code!
I am working most of the time with PyTorch. My question is

How can I plug my PyTorch model to your snake's brain?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.