Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Problems.MultiObjectiveTestFunctions/HeuristicLab.Problems.MultiObjectiveTestFunctions/3.3/Calculators/Spacing.cs @ 13672

Last change on this file since 13672 was 13672, checked in by bwerth, 8 years ago

#1087 added Analyzers, reworked PFStore, added licence information, cleaned code

File size: 1.7 KB
Line 
1#region License Information
2/* HeuristicLab
3 * Copyright (C) 2002-2016 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
4 *
5 * This file is part of HeuristicLab.
6 *
7 * HeuristicLab is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * HeuristicLab is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
19 */
20#endregion
21using System;
22using System.Collections.Generic;
23using HeuristicLab.Common;
24
25namespace HeuristicLab.Problems.MultiObjectiveTestFunctions {
26
27  /// <summary>
28  /// Spacing is defined as the standarddeviation of all d[i]
29  /// where d[i] is the minimum eukildean distance any point has
30  /// to all OTHER points in the same front
31  /// </summary>
32  public class Spacing {
33
34    public static double Calculate(IEnumerable<double[]> front) {
35      if (front == null) throw new ArgumentException("Fronts must not be null");
36      List<double> d = new List<double>();
37      foreach (double[] r in front) {
38        double dist = Utilities.minDistance(r, front, false);
39        d.Add(dist >= 0 ? dist : 0);
40      }
41      int n = d.Count;
42      if (n == 0) throw new ArgumentException("Fronts must not be empty");
43      return Math.Sqrt(d.Variance() * (n - 1) / n);
44
45    }
46
47  }
48}
Note: See TracBrowser for help on using the repository browser.