heal-research / HeuristicLab

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

Implement multiobjective test functions #1087

Closed HeuristicLab-Trac-Bot closed 8 years ago

HeuristicLab-Trac-Bot commented 14 years ago

Issue migrated from trac ticket # 1087

milestone: HeuristicLab 3.3.14 | component: Problems.TestFunctions | priority: high | resolution: done

2010-07-20 12:32:49: @abeham created the issue


There are a number of popular test functions for multiobjective optimization that would fit in the scope of Problems.TestFunctions.

These functions are, e.g. ZDT1-6 (except ZDT5 which uses binary representation), Kursawe, Golinski, Schaffer, Fonseca, DTLZ1-7, ... with some of them having constraints as well.

HeuristicLab-Trac-Bot commented 13 years ago

2010-11-15 23:27:48: @s-wagner changed title from Implement Problems: Multiobjective Testfunctions to Implement multiobjective test functions

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-14 15:05:40: @s-wagner changed status from new to assigned

HeuristicLab-Trac-Bot commented 13 years ago

2011-01-14 15:05:40: @s-wagner changed owner from abeham to gkronber

HeuristicLab-Trac-Bot commented 11 years ago

2013-07-22 18:22:48: @gkronber changed priority from medium to high

HeuristicLab-Trac-Bot commented 11 years ago

2013-07-22 18:22:48: @gkronber changed owner from gkronber to swagner

HeuristicLab-Trac-Bot commented 8 years ago

2015-11-17 11:45:28: @mkommend changed owner from swagner to bwerth

HeuristicLab-Trac-Bot commented 8 years ago

2015-11-25 11:53:13: @mkommend commented


r13394: Created new plugin for multi-objective test functions.

HeuristicLab-Trac-Bot commented 8 years ago

2015-11-30 14:52:31: @BernhardWerth commented


r13421: Implemented skeleton structure and first testfunctions(Fonesca, SchafferN1 & SchafferN2)

HeuristicLab-Trac-Bot commented 8 years ago

2015-12-11 11:22:19: @BernhardWerth commented


r13448 Implemented more Testfunctions; enabled setting of SolutionSize

HeuristicLab-Trac-Bot commented 8 years ago

2015-12-11 15:20:42: @BernhardWerth commented


r13451 extensive Testing; fixed minor bugs

HeuristicLab-Trac-Bot commented 8 years ago

2015-12-11 15:20:42: @BernhardWerth

HeuristicLab-Trac-Bot commented 8 years ago

2016-01-15 16:07:48: @BernhardWerth commented


r13515 minor bugfixes and added unittests

HeuristicLab-Trac-Bot commented 8 years ago

2016-01-22 14:44:08: @BernhardWerth commented


r13562 added more unittests and comments

HeuristicLab-Trac-Bot commented 8 years ago

2016-01-22 15:01:39: @mkommend commented


r13563: Added reference to System.Drawing in HL.Problems.MultiObjectiveTestFunctions.

HeuristicLab-Trac-Bot commented 8 years ago

2016-02-15 17:21:08: @BernhardWerth commented


r13620 regorganized testfunctions, added view for qualities

HeuristicLab-Trac-Bot commented 8 years ago

2016-02-17 11:21:07: @BernhardWerth commented


r13622 recommited project file, renamed IMOSolution to MOSolution

HeuristicLab-Trac-Bot commented 8 years ago

2016-02-17 11:21:07: @BernhardWerth

HeuristicLab-Trac-Bot commented 8 years ago

2016-02-17 14:38:55: @mkommend commented


r13623: Added instance provider base class for MOTestFunctions.

HeuristicLab-Trac-Bot commented 8 years ago

2016-03-09 12:45:31: @BernhardWerth commented


r13672 added Analyzers, reworked PFStore, added licence information, cleaned code

HeuristicLab-Trac-Bot commented 8 years ago

2016-03-09 14:06:23: @BernhardWerth commented


r13673 fixed bug in DTLZ1, DTLZ3 and DTLZ7

HeuristicLab-Trac-Bot commented 8 years ago

2016-03-24 12:31:15: @BernhardWerth commented


r13725 minor bugfixes, added Parameters to Analyzers, convenience Tooltips for ScatterPlot

HeuristicLab-Trac-Bot commented 8 years ago

2016-03-24 12:31:46: @BernhardWerth changed status from assigned to reviewing

HeuristicLab-Trac-Bot commented 8 years ago

2016-03-24 12:31:46: @BernhardWerth changed owner from bwerth to mkommend

HeuristicLab-Trac-Bot commented 8 years ago

2016-03-24 13:26:56: @mkommend changed milestone from HeuristicLab 3.3.x Backlog to HeuristicLab 3.3.14

HeuristicLab-Trac-Bot commented 8 years ago

2016-03-24 13:43:11: @BernhardWerth commented


r13726 fixed Naming in FastHyperVolumeTests.cs

HeuristicLab-Trac-Bot commented 8 years ago

2016-03-24 14:12:53: @BernhardWerth commented


r13729 annotated unit tests

HeuristicLab-Trac-Bot commented 8 years ago

2016-04-18 10:50:39: @BernhardWerth commented


r13771 bugfix + additional relative HV calculation added

HeuristicLab-Trac-Bot commented 8 years ago

2016-04-20 10:29:25: @BernhardWerth commented


r13776 added ConstrainedFunctions

HeuristicLab-Trac-Bot commented 8 years ago

2016-04-20 10:29:25: @BernhardWerth

HeuristicLab-Trac-Bot commented 8 years ago

2016-06-15 09:05:24: @BernhardWerth commented


r13894 set pareto-Series to lower Opacity so overlapping series can be identified

HeuristicLab-Trac-Bot commented 8 years ago

2016-06-24 15:04:14: @BernhardWerth commented


r13936 added more functions (IHR1-4, IHR6, CIGTAB, ELLI)

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-04 09:50:22: @BernhardWerth commented


r13988 reformatted project, bugfixes

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-04 09:58:51: @BernhardWerth commented


r13989 removed unused usings

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-04 10:35:30: @BernhardWerth commented


r13991 removed unused function

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-07 14:20:13: @mkommend commented


r14018: Rewrote and adapted the multi-objective calculators.

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-07 14:32:20: @mkommend commented


Review commentsI only had time to review and work on the calculator classes. Review of remaining classes and functionality is still pending.

Calculators

  • Inconsistent usage of points and front for member names. Please check and unify.
  • GenerationalDistance.cs
    • Is the comment "//TODO build a kd-tree, sort the array, do something intelligent here" still valid
    • Why has not been something intelligent done?
    • How should the parameter p be set? A comment (XMLDoc) on this would be helpful
    • The method is everywhere called with p == 1.0
    • IMHO the Calculate method calculates [[math(1/n (\sum d[i])^{1/p})]] which is not [[math(1/n \sum d[i]^{1/p})]] as described in the XMLDoc.
    • This is only true for p == 1.0.
  • HyperVolume.cs
    • Does Calculate2D work with differing maximization values (e.g., min dim0, max dim1)?
    • CalculateMD should reuse the domination functionality of NonDominatedSelect (line 97)
    • IsDominated must be removed. The method provides little to no benefits.
  • Crowding.cs

    • No unit tests

    • There should be a method that calculates the crowding distance between a point and a set of points / front. This method should then be reused for calculating the crowding distance of set of points / front. The crowding distance calculation should yield the same results as the CrowdingDistanceAssignment operator of the NSGA-II!

    • Why have inifinity values to be excluded while calculating the average? Is it normal for the individual calculation to result in infinity?

    • Line 58 - 67 can be rewritten as: return pointsums.Where(d => !double.IsPositiveInfinity(d)).DefaultIfEmpty(double.PositiveInfinity).Average();

    • What is the difference between HyperVolume.CalculateMD and MultiDimensionalHypervolume?

    • The code looks the same to me.

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-08 15:32:38: @BernhardWerth commented


r14030 several fixes according to the review comments in comment 31

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-08 15:32:38: @BernhardWerth

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-08 15:32:38: @mkommend

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-12 18:21:16: @mkommend commented


r14044: Refactored and improved analyzers for multi-objective test functions.

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-13 11:49:37: @mkommend commented


Review of Analyzers* Why is the BestKnownFrontParameter defined in the MOTFAnalyzer, although it is only used by the hyper volume analyzers?

  • HypervolumeAnalyzer

    • Why is the best known hyper volume saved in a parameter of the Analyzer? Should be in the TestFunction / Problem.
    • The ReferencePoint should be taken from the TestFunction (no value parameter).
    • Reuse DoubleValues by setting their values instead of creating new ones (results). Similar to the changes in r14044.
    • Could NonDominatedSelect.selectNonDominatedVectors (line 93) return an empty enumberable? If not the check in line 95 is obsolete.
  • NormalizedHypervolumeAnalyzer

    • Most of the comments for the hypervolume analyzers apply to this class as well.
    • BestKnownFront Zitzler ?!?
    • Always use FixedValueParameters for ValueParameters where T in HeuristicLab.Data and T can be modified.
HeuristicLab-Trac-Bot commented 8 years ago

2016-07-14 11:30:25: @mkommend commented


r14065: Refactored instance providers and data descriptors for MOTF. r14066: Forgot to commit the project file.

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-14 11:30:25: @mkommend

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-14 13:34:32: @mkommend commented


r14067: Refactored multi-objective test functions. r14068: Added checks for min and max objectives to test functions.

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-14 13:34:32: @mkommend

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-14 14:32:52: @mkommend commented


Review of TestFunctions* IHR

  • What is the purpose of the Method Y protected RealVector Y(RealVector x) { return x; }
  • Why is the method G defined as abstract and implemented in derived classes, but never called?
  • F2 never uses its first parameter r
  • Evaluate calls F2(r,y) where y # Y(r) and Y just returns its argument. Therefore y= r. Why does F2 need two arguments at all?
  • IHR5 ?
    • ELLI
  • Line 70 x is never used.
    • SchafferN2
  • Optimal ParetoFront throws NotImplementedException!
    • ZDT5 ?
HeuristicLab-Trac-Bot commented 8 years ago

2016-07-14 14:32:52: @mkommend

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-14 15:08:50: @mkommend commented


r14069: Moved Pareto fronts to subfolders in the according test functions folder and changed PFStore.

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-14 17:41:04: @mkommend commented


r14073: Worked on Multi-objective test function problem and adapted plugin dependencies.

HeuristicLab-Trac-Bot commented 8 years ago

2016-07-15 14:14:59: @mkommend commented


r14085: Further refactoring of testfunction problem and analyzers.