ryanvarick.com

Location: ryanvarick.com » Capstone » jEAC TODO (edit)

jEAC TODO

Major tasks:

UI tasks

Hardware tasks

Other tasks

Cleanup


Ideas for v2.0 (old)


GA package comparison

  1. JGAP
    • License: GPL
    • Scope: GA
    • Configuration: Java
    • Dev: Active
  2. n-genes
    • License: GPL
    • Scope: GA
    • Configuration: XML
    • Dev: 2005
  3. ECJ (winner)
    • License: Academic Free License v3.0
    • Scope: Evolutionary algorithms
    • Configuration: File
    • Dev: 2006
  4. unEvo - Interesting...

Snake TODO

Annoying quirks

  1. Convert to self-contained JPanel
  2. Fix rendering issues
  3. Fix viewport (300x300)
  4. Start location
  5. Fix self-collision detection

Parameters

  1. Center creature
  2. Prevent creature growth
  3. Abstract parameters:
    • Unit size
    • Colors
    • Default settings
    • Window configuration
  4. Replace edge detection
  5. Add an option to disable momentum (no automoves)
  6. Convert length array to a linked list

Other stuff

3D Plotting

Providing a continuous snapshot of the voltage gradient on the sheet is going to be one of the most difficult aspects of JEAC. Appropriate visual feedback is critical to the success of JEAC as an interface.

Java offers an Advanced 3D API, but there does not appear to be an OSX build. While it would be useful to have well-implemented 3D algorithms to rely on, platform independence is an important requirement of the project.

Gnuplot is available on many platforms, and has become the tool of choice for gradient visualization. The Java-Unidu package offers a gnuplot wrapper, which, upon review, is nothing more than a dressed-up Runtime.exec() call.

Upon reflection, farming out to an external tool would likely be a less-than-optimal solution. Any external tool would introduce dependencies, and decrease the portability of JEAC. Further, an external tool would limit feedback to what are essentially static views of the voltage gradient. JEAC strives to be a "near real-time" view of the gradient. Thus, an integrated plotting algorithm is necessary.


Loading Frame

The loading frame is a progress bar for v1.2. Right now, it's just hacked in there. Going forward, I need to clean up the code a lot. The driver is currently incrementing the progress. That's a bad violation of backend and UI. Here's a general algorithm for the future:

  1. USBDriver returns a list of devices
  2. jEAC asks USBDriver if each device is valid
    • If yes, jEAC asks USBDriver for its print name
    • If not, the device is ignored
  3. jEAC increments the progress bar

I also want to split the loading frame from the progress bar code. A generic progress bar with auto-increment support will probably be useful when working on v2.0.

UI management

Finally, hacking this together brings up an interesting issue. When is it appropriate for a class to extend JPanel/JFrame and when is it appropriate to explicitly name Swing components? JEAC extends JFrame. LoadingFrame used to, but now it is self-contained. Something to think about going forward.