#2069 closed enhancement (done)
Implement GP problem for code generation
Reported by: | ascheibe | Owned by: | gkronber |
---|---|---|---|
Priority: | medium | Milestone: | HeuristicLab 3.3.13 |
Component: | Problems.GeneticProgramming | Version: | 3.3.12 |
Keywords: | Cc: |
Description (last modified by ascheibe)
This works at the moment for RoboCode but should be generalized in the future for other games/applications.
There are two branches for this ticket:
- Mohab's original branch: https://dev.heuristiclab.com/trac/hl/core/browser/branches/Robocode
- Trunk Integration branch: https://dev.heuristiclab.com/trac/hl/core/browser/branches/Robocode.TrunkInt
Attachments (1)
Change History (90)
comment:1 Changed 11 years ago by ascheibe
- Status changed from new to accepted
comment:2 Changed 11 years ago by ascheibe
comment:3 Changed 11 years ago by ascheibe
r9565 Robocode Plugin code without Mutation Operators
comment:4 Changed 11 years ago by ascheibe
comment:5 Changed 11 years ago by ascheibe
- fixed cloning in Solution so that the SolutionCodeView can run a battle
- fixed a compiler warning in CodeNodeView
comment:6 Changed 11 years ago by ascheibe
- Description modified (diff)
comment:7 Changed 11 years ago by ascheibe
r9603 fixed object disposed exception in CodeNodeView that occurred when switching the viewhost
comment:8 Changed 11 years ago by ascheibe
- Added EmptyEvent.cs
- Modified Grammar.cs to allow EmptyEvent as a child in place of all Event Methods except for Run and OnScannedEvent
comment:9 Changed 11 years ago by ascheibe
- fixed error handling for external program calls
- added missing StorableClass attribute
comment:10 Changed 11 years ago by ascheibe
r9630 fixed cloning constructors and formatting
comment:11 Changed 11 years ago by ascheibe
r9631 tanks should only be required to implement run, the other methods should be optional
comment:12 Changed 11 years ago by ascheibe
r9642 Changed back the Grammar to require OnScannedRobot event
comment:13 Changed 11 years ago by ascheibe
r9760 created own branch for robocode trunk integration
comment:14 Changed 11 years ago by ascheibe
- Description modified (diff)
comment:15 Changed 11 years ago by ascheibe
r9761 fixed project file to work with our directory layout
comment:16 Changed 11 years ago by ascheibe
r9763 added frame files
comment:17 Changed 11 years ago by ascheibe
r9779 created an own plugin for the views
comment:18 Changed 11 years ago by ascheibe
r9780 fixed naming of project files
comment:19 Changed 11 years ago by ascheibe
r9781 fixed folder layout
comment:20 Changed 11 years ago by ascheibe
r9787 sign assemblies and cleaned up plugin dependencies
comment:21 Changed 11 years ago by ascheibe
- added license headers
- corrected version information
- fixed formatting
comment:22 Changed 11 years ago by ascheibe
r9879 removed unused symbols and cleaned up code
comment:23 Changed 11 years ago by ascheibe
r9880 removed dead code
comment:24 Changed 11 years ago by ascheibe
r9881 improved interpreter
comment:25 Changed 11 years ago by ascheibe
r9882 cleaned up battlerunner
comment:26 Changed 11 years ago by ascheibe
- qualities are now scaled between 0 and 1
- fixed naming of robots
comment:27 Changed 11 years ago by ascheibe
- fixed parsing of qualities
- removed robocode method crossover as it was never used anyways
comment:28 Changed 11 years ago by ascheibe
r9889 cleaned up views
comment:29 Changed 11 years ago by ascheibe
- changed Solution from NamedItem to Item
- adapted views to be only ItemViews
- some more minor improvements
comment:30 Changed 11 years ago by ascheibe
r9891 moved battle runner from Robocode directory to HL bin
comment:31 Changed 11 years ago by ascheibe
r9892 use directory values instead of string values for the robocode path
comment:32 Changed 11 years ago by ascheibe
r9898 added automatic discovery of robocode jars
comment:33 Changed 11 years ago by ascheibe
r9899 fixed bug in quality calculation
comment:34 Changed 11 years ago by ascheibe
- renamed path parameter to robocode path
- made number of rounds configurable
comment:35 Changed 11 years ago by jkarder
- modified the RobocodeProblem to extract all robots in robocode directory
- modified the battle runner to take a number of enemies that should be battled
comment:36 Changed 11 years ago by ascheibe
r9962 some minor fixes in the enemy detection
comment:37 Changed 11 years ago by ascheibe
r9966 improved robot detection in BattleRunner
comment:38 Changed 11 years ago by ascheibe
r9967 removed External Evaluator folder
comment:39 Changed 11 years ago by ascheibe
r9971 added a view for displaying/reloading enemies
comment:40 Changed 11 years ago by ascheibe
r9972 improved EnemyCollectionView
comment:41 Changed 11 years ago by ascheibe
r9983 fixed project file
comment:42 Changed 11 years ago by jkarder
- fixed deserialization of the RobocodeProblem
- added a BattleRunnerDialog that allows to configure some arguments of the battle runner
- added functionality to save a Solution in a java file
comment:43 Changed 11 years ago by jkarder
- refactored grammar and symbols
- fixed cloning and storable ctors
- fixed plugin dependencies
comment:44 Changed 11 years ago by jkarder
- refactored grammar and symbols
- changed RobocodeProblem to use the ProbabilisticTreeCreator by default
comment:45 follow-up: ↓ 47 Changed 11 years ago by ascheibe
@jkarder: Thanks a lot for improving the grammar, looks very good! Are you finished with the grammar or are there still any open issues?
comment:46 Changed 11 years ago by jkarder
- merged IfStat and ElseStat into IfThenElseStat
- changed the font of the suffixCode text box in the CodeNodeView
comment:47 in reply to: ↑ 45 Changed 11 years ago by jkarder
Replying to ascheibe:
@jkarder: Thanks a lot for improving the grammar, looks very good! Are you finished with the grammar or are there still any open issues?
Thanks! I think there still might be some refactoring left to do, but I will leave the code as is for now.
comment:48 Changed 11 years ago by ascheibe
- use groups for defining allowed child symbols in grammar
- split functions group into functions and actions in grammar
- moved run symbol to event group in grammar
- fixed a bug in the ifthenelse symbol
- enemy collection now marks one enemy per default
comment:49 Changed 11 years ago by ascheibe
- incremented version number
- fixed a bug in ShotPower
- updated BattleRunner docu
comment:50 Changed 11 years ago by ascheibe
r10045 fixed a bug in the BattleRunner
comment:51 Changed 11 years ago by ascheibe
r10046 simplified Interpret methods of symbols
comment:52 Changed 11 years ago by ascheibe
r10047 don't use architecture operators as the Robocode problem does not support ADFs
comment:53 Changed 11 years ago by ascheibe
- Owner changed from ascheibe to mkommend
- Status changed from accepted to reviewing
r10048 center BattleRunner dialog
comment:54 Changed 10 years ago by ascheibe
- Milestone changed from HeuristicLab 3.3.x Backlog to HeuristicLab 3.3.10
comment:55 Changed 10 years ago by mkommend
- Milestone changed from HeuristicLab 3.3.10 to HeuristicLab 3.3.x Backlog
comment:56 Changed 10 years ago by ascheibe
- Milestone changed from HeuristicLab 3.3.x Backlog to HeuristicLab 3.3.10
- Owner changed from mkommend to gkronber
comment:57 Changed 10 years ago by gkronber
- Owner changed from gkronber to ascheibe
I won't be able to finish a thorough review of this for the upcoming release. Therefore, I suggest that we move this ticket to the next milestone.
Please reassign the ticket back to me if moving it to the next milestone is ok for you.
comment:58 Changed 10 years ago by ascheibe
- Owner changed from ascheibe to gkronber
Thanks for the note, sure, no problem.
comment:59 Changed 10 years ago by ascheibe
- Milestone changed from HeuristicLab 3.3.10 to HeuristicLab 3.3.11
I'm moving this to 3.3.11 as it won't be ready for the next release.
comment:60 Changed 10 years ago by ascheibe
r11628 switched robocode trunk integration branch to .NET 4.5
comment:61 Changed 9 years ago by ascheibe
- Milestone changed from HeuristicLab 3.3.11 to HeuristicLab 3.3.12
comment:62 Changed 9 years ago by gkronber
- Milestone changed from HeuristicLab 3.3.12 to HeuristicLab 3.3.13
Sorry
comment:63 Changed 9 years ago by gkronber
r13009: fixed compilation error with current trunk version & recompiled java class files to work with robocode version (1.9.2.4). Class files must be recompiled for new robocode versions.
This version runs on my computer with the current trunk.
Necessary:
- robocode-1.9.2.4 must be installed in c:\robocode
- I had to create a folder called "Evaluation" in c:\robocode\robots
comment:64 Changed 9 years ago by gkronber
r13010: fixed license headers
comment:65 Changed 9 years ago by gkronber
r13011: changed namespaces for trunk integration
comment:66 Changed 9 years ago by gkronber
r13013: reviewing and minor changes
comment:67 Changed 9 years ago by gkronber
r13015: refactored Robocode problem and derived from SymbolicExpressionTreeProblem
comment:68 Changed 9 years ago by gkronber
r13017: refactored grammar, symbols, and interpreter
comment:69 Changed 9 years ago by gkronber
r13018: cleaned code and renamed files
comment:70 Changed 9 years ago by gkronber
r13019: added necessary robocode files to project to make sure that the robocode problem is self-contained (only a java installation is necessary)
comment:71 Changed 9 years ago by gkronber
- Owner changed from gkronber to architects
comment:72 Changed 9 years ago by gkronber
- Owner changed from architects to gkronber
- Status changed from reviewing to assigned
comment:73 Changed 9 years ago by gkronber
TODO:
copy files to trunkcreate a sample
comment:74 Changed 9 years ago by gkronber
r13210: copied relevant files for robocode problem from branch to trunk. I didn't preserve the history in this step.
comment:75 Changed 9 years ago by gkronber
Notes:
- If we want to deploy the robocode files directly (not archived) then we would need to specify each file as a plugin file in the plugin class.
- It is seemingly not possible to copy a file located in a folder in the project directly to the bin folder (without preserving the folder structure)
- An installation of java is necessary for the plugin
comment:76 Changed 9 years ago by gkronber
r13225: added plugin dependency
comment:77 Changed 9 years ago by gkronber
- Version changed from branch to 3.3.12
comment:78 Changed 9 years ago by gkronber
comment:79 follow-up: ↓ 81 Changed 9 years ago by gkronber
Robocode does not work with parallel engine. Robocode framework accesses writes to a common file which leads to exceptions when multiple java-processes try to write that file.
comment:80 Changed 9 years ago by gkronber
r13266: added a unit test to create a robocode sample.
comment:81 in reply to: ↑ 79 ; follow-up: ↓ 82 Changed 9 years ago by mkommend
Replying to gkronber:
Robocode does not work with parallel engine. Robocode framework accesses writes to a common file which leads to exceptions when multiple java-processes try to write that file.
OK, what about synchronizing the whole evaluate method?
comment:82 in reply to: ↑ 81 Changed 9 years ago by gkronber
Replying to mkommend:
Replying to gkronber:
Robocode does not work with parallel engine. Robocode framework accesses writes to a common file which leads to exceptions when multiple java-processes try to write that file.
OK, what about synchronizing the whole evaluate method?
Yes... This will be a similar case as we had for the MATLAB COM object. Synchronization must work over multiple instances of the robocode evaluator.
comment:83 Changed 9 years ago by gkronber
- Owner changed from gkronber to mkommend
- Status changed from assigned to reviewing
r13309: added synchronization for the evaluation of robocode programs
comment:84 Changed 9 years ago by mkommend
r13311: Minor code changes in interpreter, restricted ShotPowerTreeNode to [0.1,3], changed evaluation of InterpretComparison.
Please have a look of the change in ShotPowerTreeNode and the InterpretComparison method.
comment:85 Changed 9 years ago by mkommend
Reviewed the HL.Problems.GP.Robocode plugin instead of the individual changesets. Some minor issues were corrected with r13311. Beside that I found no other issues.
A test of the robocode optimization is still pending, as I have no JDK installed and must test this on my workstation.
comment:86 Changed 9 years ago by gkronber
comment:87 Changed 9 years ago by gkronber
- Owner changed from mkommend to gkronber
- Status changed from reviewing to readytorelease
comment:88 Changed 9 years ago by gkronber
- Resolution set to done
- Status changed from readytorelease to closed
comment:89 Changed 9 years ago by abeham
- Component changed from General to Problems.GeneticProgramming
r9414 added robocode branch