Opened 6 years ago
Last modified 6 years ago
#2929 new feature request
Prioritized Grammar Enumeration for HeuristicLab
Reported by: | gkronber | Owned by: | |
---|---|---|---|
Priority: | medium | Milestone: | HeuristicLab 4.x Backlog |
Component: | Algorithms.DataAnalysis | Version: | branch |
Keywords: | Cc: |
Description (last modified by gkronber)
It would be great to be able to use PGE (prioritized grammar enumeration) within HeuristicLab.
The original implementation of the algorithm is in Go. So we either need to convert the implementation to C# or provide a wrapper that calls the native binaries via DllImport.
This should be done within an undergraduate thesis.
- PGE paper: https://github.com/verdverm/go-pge/raw/master/pge_gecco2013.pdf
- PGE implementation: https://github.com/verdverm/go-pge
Attachments (3)
Change History (36)
comment:1 Changed 6 years ago by gkronber
comment:2 Changed 6 years ago by gkronber
- Description modified (diff)
comment:3 Changed 6 years ago by gkronber
r15991: prepared plugin and empty algorithm class for PGE implementation
comment:4 Changed 6 years ago by hmaislin
r16079: added testfile
comment:5 Changed 6 years ago by hmaislin
r16080: initial commit of working PGE version
comment:6 Changed 6 years ago by gkronber
r16081: added a script to start pge with command line parameters
comment:7 Changed 6 years ago by gkronber
r16182: Added PGE dll and the first working call
comment:8 Changed 6 years ago by hmaislin
r16183: Adapted PGE Go code to work as dll
comment:9 Changed 6 years ago by hmaislin
r16191: Added current DLL to PGE dir that needs to be placed in bin path
comment:10 Changed 6 years ago by gkronber
r16195: copied go-pge.dll to plugin folder and added to project file so that the native .dll is also copied to the bin folder. Set unsafe property for the project.
comment:11 Changed 6 years ago by gkronber
r16196: introduced parameter names to prepare for renaming parameters
comment:12 Changed 6 years ago by gkronber
r16197: renaming things
comment:13 Changed 6 years ago by gkronber
r16199: renaming things, use data from regression problem instead of hard-coded data. Algorithm crashes in StepW.
comment:14 Changed 6 years ago by hmaislin
r16200: Updated DLL to get coeff results and release memory
comment:15 Changed 6 years ago by gkronber
r16212: several fixes
comment:16 Changed 6 years ago by hmaislin
r16229: Updated PGE DLL
comment:17 Changed 6 years ago by hmaislin
r16228: Adapted pge plugin to check for null value
comment:18 Changed 6 years ago by hmaislin
r16231: Fixed result error
comment:19 Changed 6 years ago by gkronber
- worked on display of PGE results.
- convert PGE expressions into HL solutions
Algorithm does not produce reasonable results (e.g. for Korns-1). I suspect that the index of the target variable is passed incorrectly (searchVar parameter in InitProblem). However, when I change the searchVar value from 0 to 1 the program crashes because of a general protection fault in the call of InitProblem
comment:20 Changed 6 years ago by gkronber
r16316: fixed program crash (searchVar must be zero!)
comment:21 Changed 6 years ago by gkronber
r16335: changed criterion for updating the solution to testScore < bestTestScore
comment:22 Changed 6 years ago by hmaislin
r16510: Updated DLL, result error seems to be fixed, more testing is necessary
comment:23 Changed 6 years ago by gkronber
r16515: changed code to update best solutions to work with empty results.
comment:24 Changed 6 years ago by gkronber
I made a quick test with:
- Keijzer Benchmark Problems -> Keijzer 1
- Various Benchmark Problems -> Spatial Coevolution
With the default parameter settings the algorithm produces a list of empty results for Keijzer 1.
For the Spatial Coevolution problem I changed
- Nodes: Add Mul Div Exp
- NonTrig: Add Mul Div Exp
The log contains a few equations.
The quality of these solutions seems to be very bad.
Another observation is that the testScore produced by GetStepResult is always the number of rows in the dataset (testScore never improves).
Changed 6 years ago by gkronber
Changed 6 years ago by gkronber
Changed 6 years ago by gkronber
comment:25 Changed 6 years ago by hmaislin
rt16533: Added Powershell testscript to compare results
comment:26 Changed 6 years ago by hmaislin
r16614: Fixed result bug, however testScore problem not solved yet, added multitest C and Powershell script
comment:27 Changed 6 years ago by hmaislin
r16615: Added updated go and plugin files
comment:28 Changed 6 years ago by hmaislin
r16617: Added missing levmar dependency libs amd64 and fixed MultiTest bugs
comment:29 Changed 6 years ago by hmaislin
r16618: Added C and Go benchmark logs, fixed some MultiTest problems
comment:30 Changed 6 years ago by hmaislin
r16620: Reorganized folder structure for make script, removed explicit marshalling, erased go-side logging
comment:31 Changed 6 years ago by gkronber
r16621: changed code to update the best found solution
comment:32 Changed 6 years ago by hmaislin
r16666: Modified make / folder structure to build original app, added x86 dll
comment:33 Changed 6 years ago by hmaislin
r16669: Added missing dependencies
r15990: created branch