Opened 2 years ago

Last modified 20 months 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.

Attachments (3)

PGE_Keijzer_log.png (69.7 KB) - added by gkronber 22 months ago.
PGE_Spatial_log.png (103.6 KB) - added by gkronber 22 months ago.
PGE_Spatial_finalsol.png (109.3 KB) - added by gkronber 22 months ago.

Download all attachments as: .zip

Change History (36)

comment:1 Changed 2 years ago by gkronber

r15990: created branch

comment:2 Changed 2 years ago by gkronber

  • Description modified (diff)

comment:3 Changed 2 years ago by gkronber

r15991: prepared plugin and empty algorithm class for PGE implementation

comment:4 Changed 2 years ago by hmaislin

r16079: added testfile

comment:5 Changed 2 years ago by hmaislin

r16080: initial commit of working PGE version

comment:6 Changed 2 years ago by gkronber

r16081: added a script to start pge with command line parameters

comment:7 Changed 2 years ago by gkronber

r16182: Added PGE dll and the first working call

Last edited 2 years ago by hmaislin (previous) (diff)

comment:8 Changed 2 years ago by hmaislin

r16183: Adapted PGE Go code to work as dll

Last edited 2 years ago by gkronber (previous) (diff)

comment:9 Changed 2 years ago by hmaislin

r16191: Added current DLL to PGE dir that needs to be placed in bin path

Last edited 2 years ago by gkronber (previous) (diff)

comment:10 Changed 2 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 2 years ago by gkronber

r16196: introduced parameter names to prepare for renaming parameters

comment:12 Changed 2 years ago by gkronber

r16197: renaming things

comment:13 Changed 2 years ago by gkronber

r16199: renaming things, use data from regression problem instead of hard-coded data. Algorithm crashes in StepW.

comment:14 Changed 2 years ago by hmaislin

r16200: Updated DLL to get coeff results and release memory

comment:15 Changed 2 years ago by gkronber

r16212: several fixes

comment:16 Changed 2 years ago by hmaislin

r16229: Updated PGE DLL

comment:17 Changed 2 years ago by hmaislin

r16228: Adapted pge plugin to check for null value

comment:18 Changed 2 years ago by hmaislin

r16231: Fixed result error

comment:19 Changed 2 years ago by gkronber

r16315:

  • 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 2 years ago by gkronber

r16316: fixed program crash (searchVar must be zero!)

comment:21 Changed 2 years ago by gkronber

r16335: changed criterion for updating the solution to testScore < bestTestScore

comment:22 Changed 22 months ago by hmaislin

r16510: Updated DLL, result error seems to be fixed, more testing is necessary

comment:23 Changed 22 months ago by gkronber

r16515: changed code to update best solutions to work with empty results.

comment:24 Changed 22 months 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).

Last edited 22 months ago by gkronber (previous) (diff)

Changed 22 months ago by gkronber

Changed 22 months ago by gkronber

Changed 22 months ago by gkronber

comment:25 Changed 22 months ago by hmaislin

r16533: Added Powershell testscript to compare results

Last edited 22 months ago by hmaislin (previous) (diff)

comment:26 Changed 21 months ago by hmaislin

r16614: Fixed result bug, however testScore problem not solved yet, added multitest C and Powershell script

Last edited 21 months ago by hmaislin (previous) (diff)

comment:27 Changed 21 months ago by hmaislin

r16615: Added updated go and plugin files

comment:28 Changed 21 months ago by hmaislin

r16617: Added missing levmar dependency libs amd64 and fixed MultiTest bugs

Last edited 21 months ago by hmaislin (previous) (diff)

comment:29 Changed 21 months ago by hmaislin

r16618: Added C and Go benchmark logs, fixed some MultiTest problems

comment:30 Changed 20 months ago by hmaislin

r16620: Reorganized folder structure for make script, removed explicit marshalling, erased go-side logging

comment:31 Changed 20 months ago by gkronber

r16621: changed code to update the best found solution

comment:32 Changed 20 months ago by hmaislin

r16666: Modified make / folder structure to build original app, added x86 dll

comment:33 Changed 20 months ago by hmaislin

r16669: Added missing dependencies

Note: See TracTickets for help on using tickets.