Changeset 11151


Ignore:
Timestamp:
07/08/14 20:02:59 (5 years ago)
Author:
mkommend
Message:

#2171: Merged r10601:r10607, r10653, r11075, r11076, r11077, r11080, r11081 into stable.

Location:
stable
Files:
12 edited
3 copied

Legend:

Unmodified
Added
Removed
  • stable

    • Property svn:ignore
      •  

        old new  
        88FxCopResults.txt
        99Google.ProtocolBuffers-0.9.1.dll
         10Google.ProtocolBuffers-2.4.1.473.dll
        1011HeuristicLab 3.3.5.1.ReSharper.user
        1112HeuristicLab 3.3.6.0.ReSharper.user
        1213HeuristicLab.4.5.resharper.user
        1314HeuristicLab.ExtLibs.6.0.ReSharper.user
         15HeuristicLab.Scripting.Development
        1416HeuristicLab.resharper.user
        1517ProtoGen.exe
         
        1719_ReSharper.HeuristicLab
        1820_ReSharper.HeuristicLab 3.3
         21_ReSharper.HeuristicLab 3.3 Tests
        1922_ReSharper.HeuristicLab.ExtLibs
        2023bin
        2124protoc.exe
        22 _ReSharper.HeuristicLab 3.3 Tests
        23 Google.ProtocolBuffers-2.4.1.473.dll
    • Property svn:mergeinfo changed
      /trunk/sourcesmerged: 10601-10607,​10653,​11075-11077,​11080-11081
  • stable/HeuristicLab 3.3.sln

    r11103 r11151  
    3232    {F62BCD22-FB83-4444-9401-8031C2487A86} = {F62BCD22-FB83-4444-9401-8031C2487A86}
    3333    {E0B45023-CB84-48A1-A1B7-8295B64B7BAD} = {E0B45023-CB84-48A1-A1B7-8295B64B7BAD}
     34    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED} = {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}
    3435    {CDA28124-ACD0-4231-8EB0-C510B361F84E} = {CDA28124-ACD0-4231-8EB0-C510B361F84E}
    3536    {14AB8D24-25BC-400C-A846-4627AA945192} = {14AB8D24-25BC-400C-A846-4627AA945192}
     
    110111    {F4539FB6-4708-40C9-BE64-0A1390AEA197} = {F4539FB6-4708-40C9-BE64-0A1390AEA197}
    111112    {A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C} = {A9AD58B9-3EF9-4CC1-97E5-8D909039FF5C}
     113    {D2C39FBA-A1D5-403A-9211-B0A299A76313} = {D2C39FBA-A1D5-403A-9211-B0A299A76313}
    112114    {958B43BC-CC5C-4FA2-8628-2B3B01D890B6} = {958B43BC-CC5C-4FA2-8628-2B3B01D890B6}
    113115    {AB687BBE-1BFE-476B-906D-44237135431D} = {AB687BBE-1BFE-476B-906D-44237135431D}
     
    387389EndProject
    388390Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.GrammaticalEvolution-3.3", "HeuristicLab.Problems.GrammaticalEvolution\3.3\HeuristicLab.Problems.GrammaticalEvolution-3.3.csproj", "{7FC70D74-1813-48B7-9CE5-0BD913457579}"
     391EndProject
     392Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.ParameterOptimization-3.3", "HeuristicLab.Problems.ParameterOptimization\3.3\HeuristicLab.Problems.ParameterOptimization-3.3.csproj", "{D2C39FBA-A1D5-403A-9211-B0A299A76313}"
     393EndProject
     394Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.Problems.ExternalEvaluation.Scilab-3.3", "HeuristicLab.Problems.ExternalEvaluation.Scilab\3.3\HeuristicLab.Problems.ExternalEvaluation.Scilab-3.3.csproj", "{C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}"
    389395EndProject
    390396Global
     
    18861892    {7FC70D74-1813-48B7-9CE5-0BD913457579}.Release|x86.ActiveCfg = Release|x86
    18871893    {7FC70D74-1813-48B7-9CE5-0BD913457579}.Release|x86.Build.0 = Release|x86
     1894    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
     1895    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Debug|Any CPU.Build.0 = Debug|Any CPU
     1896    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Debug|x64.ActiveCfg = Debug|x64
     1897    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Debug|x64.Build.0 = Debug|x64
     1898    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Debug|x86.ActiveCfg = Debug|x86
     1899    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Debug|x86.Build.0 = Debug|x86
     1900    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Release|Any CPU.ActiveCfg = Release|Any CPU
     1901    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Release|Any CPU.Build.0 = Release|Any CPU
     1902    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Release|x64.ActiveCfg = Release|x64
     1903    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Release|x64.Build.0 = Release|x64
     1904    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Release|x86.ActiveCfg = Release|x86
     1905    {D2C39FBA-A1D5-403A-9211-B0A299A76313}.Release|x86.Build.0 = Release|x86
     1906    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
     1907    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Debug|Any CPU.Build.0 = Debug|Any CPU
     1908    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Debug|x64.ActiveCfg = Debug|x64
     1909    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Debug|x64.Build.0 = Debug|x64
     1910    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Debug|x86.ActiveCfg = Debug|x86
     1911    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Debug|x86.Build.0 = Debug|x86
     1912    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Release|Any CPU.ActiveCfg = Release|Any CPU
     1913    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Release|Any CPU.Build.0 = Release|Any CPU
     1914    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Release|x64.ActiveCfg = Release|x64
     1915    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Release|x64.Build.0 = Release|x64
     1916    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Release|x86.ActiveCfg = Release|x86
     1917    {C633FB23-BAE6-448E-BF5D-E1F9A839B5ED}.Release|x86.Build.0 = Release|x86
    18881918  EndGlobalSection
    18891919  GlobalSection(SolutionProperties) = preSolution
  • stable/HeuristicLab.ExtLibs

  • stable/HeuristicLab.ExtLibs.sln

    r9931 r11151  
    4444EndProject
    4545Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.EPPlus-3.1.3", "HeuristicLab.ExtLibs\HeuristicLab.EPPlus\3.1.3\HeuristicLab.EPPlus-3.1.3\HeuristicLab.EPPlus-3.1.3.csproj", "{B8B9E73B-18DE-4781-8F31-D3472BA9DB66}"
     46EndProject
     47Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "DotNetScilab-1.0", "HeuristicLab.ExtLibs\HeuristicLab.DotNetScilab\1.0\DotNetScilab-1.0\DotNetScilab-1.0.csproj", "{C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}"
     48EndProject
     49Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "HeuristicLab.DotNetScilab-1.0", "HeuristicLab.ExtLibs\HeuristicLab.DotNetScilab\1.0\HeuristicLab.DotNetScilab-1.0\HeuristicLab.DotNetScilab-1.0.csproj", "{F2F242B0-9996-4B49-828D-2BFC5925FDE0}"
    4650EndProject
    4751Global
     
    283287    {B8B9E73B-18DE-4781-8F31-D3472BA9DB66}.Release|x86.ActiveCfg = Release|x86
    284288    {B8B9E73B-18DE-4781-8F31-D3472BA9DB66}.Release|x86.Build.0 = Release|x86
     289    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
     290    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|Any CPU.Build.0 = Debug|Any CPU
     291    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|x64.ActiveCfg = Debug|x64
     292    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|x64.Build.0 = Debug|x64
     293    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|x86.ActiveCfg = Debug|x86
     294    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Debug|x86.Build.0 = Debug|x86
     295    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|Any CPU.ActiveCfg = Release|Any CPU
     296    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|Any CPU.Build.0 = Release|Any CPU
     297    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|x64.ActiveCfg = Release|x64
     298    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|x64.Build.0 = Release|x64
     299    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|x86.ActiveCfg = Release|x86
     300    {C3F0C7DC-82AD-405B-990A-BF2C5B7F46FF}.Release|x86.Build.0 = Release|x86
     301    {F2F242B0-9996-4B49-828D-2BFC5925FDE0}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
     302    {F2F242B0-9996-4B49-828D-2BFC5925FDE0}.Debug|Any CPU.Build.0 = Debug|Any CPU
     303    {F2F242B0-9996-4B49-828D-2BFC5925FDE0}.Debug|x64.ActiveCfg = Debug|Any CPU
     304    {F2F242B0-9996-4B49-828D-2BFC5925FDE0}.Debug|x86.ActiveCfg = Debug|Any CPU
     305    {F2F242B0-9996-4B49-828D-2BFC5925FDE0}.Release|Any CPU.ActiveCfg = Release|Any CPU
     306    {F2F242B0-9996-4B49-828D-2BFC5925FDE0}.Release|Any CPU.Build.0 = Release|Any CPU
     307    {F2F242B0-9996-4B49-828D-2BFC5925FDE0}.Release|x64.ActiveCfg = Release|Any CPU
     308    {F2F242B0-9996-4B49-828D-2BFC5925FDE0}.Release|x86.ActiveCfg = Release|Any CPU
    285309  EndGlobalSection
    286310  GlobalSection(SolutionProperties) = preSolution
  • stable/HeuristicLab.ExtLibs/HeuristicLab.DotNetScilab/1.0/HeuristicLab.DotNetScilab-1.0/HeuristicLab.DotNetScilab-1.0.csproj

    r10602 r11151  
    6464      <Name>HeuristicLab.PluginInfrastructure-3.3</Name>
    6565    </ProjectReference>
     66    <ProjectReference Include="..\DotNetScilab-1.0\DotNetScilab-1.0.csproj">
     67      <Project>{c3f0c7dc-82ad-405b-990a-bf2c5b7f46ff}</Project>
     68      <Name>DotNetScilab-1.0</Name>
     69    </ProjectReference>
    6670  </ItemGroup>
    6771  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
  • stable/HeuristicLab.Problems.ExternalEvaluation.Scilab/3.3/ScilabParameterOptimizationProblem.cs

    r10595 r11151  
    7575      Parameters.Add(new FixedValueParameter<StringValue>(QualityVariableParameterName, "The name of the quality variable of the Scilab script.", new StringValue("quality")));
    7676      Parameters.Add(new FixedValueParameter<TextFileValue>(ScilabEvaluationScriptParameterName, "The path to the Scilab evaluation script.", new TextFileValue()));
    77       Parameters.Add(new FixedValueParameter<TextFileValue>(ScilabInitializationScriptParameterName, "The path to a Scilab script the should be execute before the evaluation starts.", new TextFileValue()));
     77      Parameters.Add(new FixedValueParameter<TextFileValue>(ScilabInitializationScriptParameterName, "The path to a Scilab script that should be executed once when the algorithm starts.", new TextFileValue()));
    7878
    7979      ScilabEvaluationScript.FileDialogFilter = @"Scilab Scripts|*.sce|All files|*.*";
  • stable/HeuristicLab.Problems.ExternalEvaluation.Scilab/3.3/ScilabParameterVectorEvaluator.cs

    r10605 r11151  
    3535  [StorableClass]
    3636  public sealed class ScilabParameterVectorEvaluator : ParameterVectorEvaluator {
     37    private const string MaximizationParameterName = "Maximization";
    3738    private const string QualityVariableParameterName = "QualityVariableName";
    3839    private const string ScilabEvaluationScriptParameterName = "ScilabEvaluationScript";
     
    4041
    4142    #region parameters
     43    public ILookupParameter<BoolValue> MaximizationParameter {
     44      get { return (ILookupParameter<BoolValue>)Parameters[MaximizationParameterName]; }
     45    }
    4246    public ILookupParameter<StringValue> QualityVariableParameter {
    4347      get { return (ILookupParameter<StringValue>)Parameters[QualityVariableParameterName]; }
     
    6266    public ScilabParameterVectorEvaluator()
    6367      : base() {
     68      Parameters.Add(new LookupParameter<BoolValue>(MaximizationParameterName, "The flag which determines if this is a maximization problem."));
    6469      Parameters.Add(new LookupParameter<StringValue>(QualityVariableParameterName, "The name of the quality variable of the Scilab script."));
    6570      Parameters.Add(new LookupParameter<TextFileValue>(ScilabEvaluationScriptParameterName, "The path to the Scilab evaluation script."));
    66       Parameters.Add(new LookupParameter<TextFileValue>(ScilabInitializationScriptParameterName, "The path to a Scilab script the should be execute before the evaluation starts."));
     71      Parameters.Add(new LookupParameter<TextFileValue>(ScilabInitializationScriptParameterName, "The path to a Scilab script that should be executed once when the algorithm starts."));
    6772    }
    6873
    69     private readonly object locker = new object();
     74    private static readonly object locker = new object();
    7075    private static ScilabConnector scilab = null;
    7176    private bool startedScilab = false;
     
    8085
    8186      int result;
    82       //Scilab is used via a c++ wrapper that calls static methods. Hence it is not possible to parallelize the evaluation.
     87      // Scilab is used via a c++ wrapper that calls static methods. Hence it is not possible to parallelize the evaluation.
     88      // It is also not possible to run multiple algorithms solving separate Scilab optimization problems at the same time.
    8389      lock (locker) {
    8490        //initialize scilab and execute initialization script
     
    96102        var parameterVector = ParameterVectorParameter.ActualValue;
    97103        var parameterNames = ParameterNamesParameter.ActualValue;
    98         if (parameterNames.Any(string.IsNullOrEmpty)) throw new ArgumentException("Not all parameter names are provided.");
     104        if (parameterNames.Any(string.IsNullOrEmpty)) throw new ArgumentException("Not all parameter names are provided. Change the 'ParameterNames' parameter in the 'Problem' tab.");
     105        if (ProblemSizeParameter.ActualValue.Value != parameterVector.Length || ProblemSizeParameter.ActualValue.Value != parameterNames.Length)
     106          throw new ArgumentException("The size of the parameter vector or the parameter names vector does not match the problem size.");
    99107
    100108        for (int i = 0; i < ProblemSizeParameter.ActualValue.Value; i++) {
     
    112120        double quality = values[0];
    113121
    114         if (double.IsNaN(quality)) quality = double.MaxValue;
    115         if (double.IsInfinity(quality)) quality = double.MaxValue;
     122        var worstQualityValue = MaximizationParameter.ActualValue.Value ? double.MinValue : double.MaxValue;
     123        if (double.IsNaN(quality)) quality = worstQualityValue;
     124        if (double.IsInfinity(quality)) quality = worstQualityValue;
    116125
    117126        QualityParameter.ActualValue = new DoubleValue(quality);
  • stable/HeuristicLab.Problems.ParameterOptimization/3.3/BestSolutionAnalyzer.cs

    r10594 r11151  
    9595      DoubleValue bestKnownQuality = BestKnownQualityParameter.ActualValue;
    9696
    97       int ind = -1;
    98       if (!max) ind = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index;
    99       else ind = qualities.Select((x, index) => new { index, x.Value }).OrderByDescending(x => x.Value).First().index;
     97      int indexOfBest = -1;
     98      if (!max) indexOfBest = qualities.Select((x, index) => new { index, x.Value }).OrderBy(x => x.Value).First().index;
     99      else indexOfBest = qualities.Select((x, index) => new { index, x.Value }).OrderByDescending(x => x.Value).First().index;
    100100
    101       var bestQuality = qualities[ind].Value;
    102       var bestParameterVector = (RealVector)parameterVectors[ind].Clone();
     101      var bestQuality = qualities[indexOfBest].Value;
     102      var bestParameterVector = (RealVector)parameterVectors[indexOfBest].Clone();
    103103
    104104      if (BestQualityParameter.ActualValue == null) {
     
    124124
    125125      //update best known quality
    126       if (bestKnownQuality == null || max && bestQuality > bestKnownQuality.Value
     126      if (bestKnownQuality == null
     127        || max && bestQuality > bestKnownQuality.Value
    127128        || !max && bestQuality < bestKnownQuality.Value) {
    128129        BestKnownQualityParameter.ActualValue = new DoubleValue(bestQuality);
  • stable/HeuristicLab.Problems.ParameterOptimization/3.3/BestSolutionsAnalyzer.cs

    r10594 r11151  
    121121      var bestSolutions = (ItemSet<DoubleArray>)results[BestSolutionsResultName].Value;
    122122      //clear best solutions if new found quality is better than the existing one
    123       if (max && bestQuality > previousBestQuality
    124           || !max && bestQuality < previousBestQuality)
     123      if (max && bestQuality > previousBestQuality || !max && bestQuality < previousBestQuality)
    125124        bestSolutions.Clear();
    126125
     
    134133        }
    135134      }
    136       PreviousBestQualityParameter.ActualValue = (DoubleValue)BestQualityParameter.ActualValue.Clone();
    137135
     136      //update best quality
     137      if (max && bestQuality >= BestQualityParameter.ActualValue.Value
     138          || !max && bestQuality <= BestQualityParameter.ActualValue.Value) {
     139        BestQualityParameter.ActualValue.Value = bestQuality;
     140      }
    138141      //update best known quality
    139142      if (bestKnownQuality == null || max && bestQuality > bestKnownQuality.Value
     
    141144        BestKnownQualityParameter.ActualValue = new DoubleValue(bestQuality);
    142145      }
     146      PreviousBestQualityParameter.ActualValue = (DoubleValue)BestQualityParameter.ActualValue.Clone();
    143147
    144148      return base.Apply();
     
    156160    public int GetHashCode(DoubleArray obj) {
    157161      if (obj == null) return 0;
    158       return obj.Aggregate(23, (current, item) => current ^ (int)item);
     162      return (int)obj.Aggregate(23L, (current, item) => current ^ System.BitConverter.DoubleToInt64Bits(item));
    159163    }
    160164  }
  • stable/HeuristicLab.Problems.ParameterOptimization/3.3/ParameterOptimizationProblem.cs

    r10594 r11151  
    9494      : base(evaluator, new UniformRandomRealVectorCreator()) {
    9595      Parameters.Add(new FixedValueParameter<IntValue>(ProblemSizeParameterName, "The dimension of the parameter vector that is to be optimized.", new IntValue(1)));
    96       Parameters.Add(new ValueParameter<DoubleMatrix>(BoundsParameterName, "The bounds for each dimension of the parameter vector. If fewer bounds are", new DoubleMatrix(new double[,] { { 0, 100 } }, new string[] { "LowerBound", "UpperBound" })));
     96      Parameters.Add(new ValueParameter<DoubleMatrix>(BoundsParameterName, "The bounds for each dimension of the parameter vector. If the number of bounds is smaller than the problem size then the bounds are reused in a cyclic manner.", new DoubleMatrix(new double[,] { { 0, 100 } }, new string[] { "LowerBound", "UpperBound" })));
    9797      Parameters.Add(new ValueParameter<StringArray>(ParameterNamesParameterName, "The element names which are used to calculate the quality of a parameter vector.", new StringArray(new string[] { "Parameter0" })));
    9898
     
    121121    protected override void OnEvaluatorChanged() {
    122122      base.OnEvaluatorChanged();
    123       strategyVectorManipulator.GeneralLearningRateParameter.Value = new DoubleValue(1.0 / Math.Sqrt(2 * ProblemSize));
    124       strategyVectorManipulator.LearningRateParameter.Value = new DoubleValue(1.0 / Math.Sqrt(2 * Math.Sqrt(ProblemSize)));
    125123      UpdateParameters();
    126124    }
     
    136134      Evaluator.ParameterNamesParameter.ActualName = ParameterNamesParameter.Name;
    137135
    138       var bestSolutionAnalyzer = Operators.OfType<BestSolutionAnalyzer>().First();
    139       bestSolutionAnalyzer.ParameterVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
    140       bestSolutionAnalyzer.ParameterNamesParameter.ActualName = ParameterNamesParameter.Name;
    141 
     136      foreach (var bestSolutionAnalyzer in Operators.OfType<BestSolutionAnalyzer>()) {
     137        bestSolutionAnalyzer.ParameterVectorParameter.ActualName = SolutionCreator.RealVectorParameter.ActualName;
     138        bestSolutionAnalyzer.ParameterNamesParameter.ActualName = ParameterNamesParameter.Name;
     139      }
    142140      Bounds = new DoubleMatrix(ProblemSize, 2);
    143141      Bounds.RowNames = ParameterNames;
     
    171169        if (string.IsNullOrEmpty(ParameterNames[i])) ParameterNames[i] = "Parameter" + i;
    172170      }
     171
     172      strategyVectorManipulator.GeneralLearningRateParameter.Value = new DoubleValue(1.0 / Math.Sqrt(2 * ProblemSize));
     173      strategyVectorManipulator.LearningRateParameter.Value = new DoubleValue(1.0 / Math.Sqrt(2 * Math.Sqrt(ProblemSize)));
    173174    }
    174175
  • stable/HeuristicLab.Problems.ParameterOptimization/3.3/Plugin.cs.frame

    r10594 r11151  
    2020#endregion
    2121
    22 using System;
    2322using HeuristicLab.PluginInfrastructure;
    24 using Microsoft.Win32;
    2523
    2624namespace HeuristicLab.Problems.ParameterOptimization {
  • stable/HeuristicLab.Problems.ParameterOptimization/3.3/Properties/AssemblyInfo.cs.frame

    r10605 r11151  
    2727// associated with an assembly.
    2828[assembly: AssemblyTitle("HeuristicLab.Problems.ParameterOptimization")]
    29 [assembly: AssemblyDescription("HeuristicLab problems for parameter optimization.")]
     29[assembly: AssemblyDescription("HeuristicLab problem for parameter optimization.")]
    3030[assembly: AssemblyConfiguration("")]
    3131[assembly: AssemblyCompany("")]
Note: See TracChangeset for help on using the changeset viewer.