heal-research / HeuristicLab

HeuristicLab - An environment for heuristic and evolutionary optimization
https://dev.heuristiclab.com
GNU General Public License v3.0
39 stars 16 forks source link

Improve Constants Optimization for Symbolic Regression #2852

Closed HeuristicLab-Trac-Bot closed 6 years ago

HeuristicLab-Trac-Bot commented 7 years ago

Issue migrated from trac ticket # 2852

milestone: HeuristicLab 3.3.15 | component: Problems.DataAnalysis.Symbolic.Regression | priority: medium | resolution: done

2017-11-03 15:14:42: @mkommend created the issue


  • Constants optimization should work without linear scaling
  • Constants optimization should report the number of function and gradient evaluations
HeuristicLab-Trac-Bot commented 7 years ago

2017-11-03 15:27:30: @mkommend changed status from new to accepted

HeuristicLab-Trac-Bot commented 7 years ago

2017-11-03 15:29:48: @mkommend commented


r15447: Adapted constants optimization and auto diff converter to not add linear scaling terms.

HeuristicLab-Trac-Bot commented 7 years ago

2017-11-03 17:10:04: @mkommend changed status from accepted to reviewing

HeuristicLab-Trac-Bot commented 7 years ago

2017-11-03 17:10:04: @mkommend changed owner from @mkommend to @gkronber

HeuristicLab-Trac-Bot commented 7 years ago

2017-11-03 17:10:04: @mkommend changed milestone from HeuristicLab 3.3.16 to HeuristicLab 3.3.15

HeuristicLab-Trac-Bot commented 7 years ago

2017-11-03 17:10:04: @mkommend commented


r15448: Added counts of function and gradient evaluations performed by constants optimization as results.

Maximum gradient evaluations = maximum iterations + 1 \ Maximum function evaluations = maximum iterations * 2 + 1;

HeuristicLab-Trac-Bot commented 7 years ago

2017-11-07 15:28:49: @gkronber commented


Reviewed r15448.

Are 'result parameters' already available in the trunk?

Reading the code it is odd to find a 'ResultParameter'. I think at least the properties should be renamed (FunctionEvaluationsResultParameter -> FunctionEvaluationsResult, FunctionEvaluationsResultParameterName -> FunctionEvaluationsResultName)

HeuristicLab-Trac-Bot commented 7 years ago

2017-11-08 10:25:18: @mkommend commented


Replying to [comment:4 gkronber]:

Are 'result parameters' already available in the trunk? Resultparameter were introduced with #2281 over a year ago!

\

Reading the code it is odd to find a 'ResultParameter'. I think at least the properties should be renamed (FunctionEvaluationsResultParameter -> FunctionEvaluationsResult, FunctionEvaluationsResultParameterName -> FunctionEvaluationsResultName)

I have already implemented the proposed changes, but during a final review and test I decided against committing them. The reason therefore is that an execution context must be present (and manually set line 169) to allow access to the result and the postfix parameter indicates that.

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-20 20:36:43: @gkronber commented


r15480: moved the scaling parameters to the end of the parameter vector to be able to remove the c.Skip(2).ToArray() call and removed unnecessary .ToArray() calls

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-20 21:06:11: @gkronber changed status from reviewing to readytorelease

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-20 21:06:11: @gkronber changed owner from @gkronber to @mkommend

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-20 21:06:11: @gkronber commented


Reviewed r15447. Concerning r15448 I have the feeling that the algorithm is slower because of the updates of function and gradient evaluation results. However, I have not really tested this.

Please check r15480 and release.

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-21 10:51:14: @mkommend changed status from readytorelease to assigned

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-21 10:51:14: @mkommend changed owner from @mkommend to @gkronber

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-21 10:51:14: @mkommend commented


r15480 is a good idea (too get rid of the .ToArray() calls), but is not implemented correctly.

It might be that r15448 slows down constants optimization. An option would be to make this analysis optional and disabled per default.

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-21 15:40:29: @gkronber commented


r15481: reverted changeset r15480 partially to fix unit test

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-21 15:55:07: @gkronber commented


After some tests I conclude that the order of parameters in lsfit() has an influence on the optimization results. Therefore, we cannot put the scaling parameters at the end of the parameter vector without breaking backwards compatibility.

Please add a parameter to make reporting of the number of gradient and function evaluations optional.

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-21 15:55:26: @gkronber changed owner from @gkronber to @mkommend

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-21 17:12:43: @mkommend changed status from assigned to reviewing

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-21 17:12:43: @mkommend changed owner from @mkommend to @gkronber

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-21 17:12:43: @mkommend commented


r15483: Added option for reporting function and gradient evaluation in the constants optimization evaluator.

Unfortunately, you have been right and reporting the evaluations has a huge impact on the performance. Quick tests on my work station for the OSGP SymReg sample show execution times of ~ 5.1 min with and ~ 3.02 min without reporting (fixed seed of 0).

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-22 12:35:29: @gkronber commented


Reviewed r15483. Thanks for testing this.

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-22 12:35:40: @gkronber changed status from reviewing to readytorelease

HeuristicLab-Trac-Bot commented 6 years ago

2017-11-22 12:35:40: @gkronber changed owner from @gkronber to @mkommend

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-12 16:16:32: @mkommend commented


r15515: Merged r15447, r15448, r15480, r15481, r15483 into stable.

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-27 11:39:07: @mkommend changed status from readytorelease to closed

HeuristicLab-Trac-Bot commented 6 years ago

2017-12-27 11:39:07: @mkommend set resolution to done