Free cookie consent management tool by TermsFeed Policy Generator

Changes in / [8574:8573]


Ignore:
Location:
/branches/ParameterConfigurationEncoding
Files:
2 added
10 deleted
7 edited

Legend:

Unmodified
Added
Removed
  • /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding.Views/3.3/CreateExperimentDialogV2.cs

    r8574 r8573  
    3737  public partial class CreateExperimentDialogV2 : Form {
    3838    private readonly IAlgorithm algorithm;
    39     private readonly ExperimentFactory experimentFactory;
    4039    private readonly Progress progress;
    4140    private ParameterConfigurationTree parameterConfigurationTree;
     
    7069      progress.CancelRequested += (sender, args) => cts.Cancel();
    7170      progress.ProgressValueChanged += (sender, args) => progress.Status = string.Format("Generating experiment. Please be patient. ({0} %)", (int)(progress.ProgressValue * 100));
    72       experimentFactory = new ExperimentFactory();
    7371      cts = new CancellationTokenSource();
    7472    }
     
    9492      if (algorithm.Problem != null) {
    9593        parameterConfigurationTreeView.Content = parameterConfigurationTree = new ParameterConfigurationTree(algorithm, algorithm.Problem);
     94        parameterConfigurationTree.ExperimentGenerationProgressChanged += (o, args) => progress.ProgressValue = parameterConfigurationTree.ExperimentGenerationProgress;
    9695        parameterConfigurationTree.CombinationsCountChanged += (o, args) => UpdateCombinationsCount();
    97         experimentFactory.ExperimentGenerationProgressChanged += (o, args) => progress.ProgressValue = experimentFactory.ExperimentGenerationProgress;
    9896        new ProgressView(parameterConfigurationTreeView, progress) { CancelTimeoutMs = 10000 };
    9997      } else {
     
    174172        if (engineAlgorithm != null) engineAlgorithm.Engine = engine;
    175173        try {
    176           Experiment = createBatchRun ? experimentFactory.GenerateExperiment(engineAlgorithm, parameterConfigurationTree, true, repetitions, selectedProblemInstanceProviders, cts.Token)
    177                                       : experimentFactory.GenerateExperiment(engineAlgorithm, parameterConfigurationTree, false, 0, selectedProblemInstanceProviders, cts.Token);
     174          Experiment = createBatchRun ? parameterConfigurationTree.GenerateExperiment(engineAlgorithm, true, repetitions, selectedProblemInstanceProviders, cts.Token)
     175                                      : parameterConfigurationTree.GenerateExperiment(engineAlgorithm, false, 0, selectedProblemInstanceProviders, cts.Token);
    178176        }
    179177        finally { FinishProgressView(); }
  • /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/HeuristicLab.Encodings.ParameterConfigurationEncoding-3.3.csproj

    r8574 r8573  
    5858      <Private>False</Private>
    5959    </Reference>
    60     <Reference Include="HeuristicLab.Encodings.IntegerVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
    61     <Reference Include="HeuristicLab.Encodings.RealVectorEncoding-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
    6260    <Reference Include="HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4">
    6361      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Encodings.SymbolicExpressionTreeEncoding-3.4.dll</HintPath>
    6462      <Private>False</Private>
    6563    </Reference>
    66     <Reference Include="HeuristicLab.Operators-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
    6764    <Reference Include="HeuristicLab.Optimization-3.3">
    6865      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Optimization-3.3.dll</HintPath>
     
    8178      <Private>False</Private>
    8279    </Reference>
    83     <Reference Include="HeuristicLab.Problems.DataAnalysis-3.4, Version=3.4.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
    8480    <Reference Include="HeuristicLab.Problems.DataAnalysis.Symbolic-3.4">
    8581      <HintPath>..\..\..\..\trunk\sources\bin\HeuristicLab.Problems.DataAnalysis.Symbolic-3.4.dll</HintPath>
     
    8985      <Private>False</Private>
    9086    </Reference>
    91     <Reference Include="HeuristicLab.Random-3.3, Version=3.3.0.0, Culture=neutral, PublicKeyToken=ba48961d6f65dcec, processorArchitecture=MSIL" />
    92     <Reference Include="Microsoft.CSharp" />
    9387    <Reference Include="System" />
    9488    <Reference Include="System.Core" />
     
    10094    <Compile Include="AlgorithmProblemItem.cs" />
    10195    <None Include="Plugin.cs.frame" />
    102     <Compile Include="Creators\RandomParameterConfigurationCreator.cs" />
    103     <Compile Include="Crossovers\ParameterConfigurationCrossover.cs" />
    104     <Compile Include="ExperimentFactory.cs" />
     96    <Compile Include="ConstrainedItemList.cs" />
     97    <Compile Include="ConstrainedTypeValue.cs" />
    10598    <Compile Include="Interfaces\ICheckedValueConfigurationCollection.cs" />
    10699    <Compile Include="Interfaces\IOptimizable.cs" />
    107100    <Compile Include="Interfaces\IParameterConfiguration.cs" />
    108     <Compile Include="Interfaces\IParameterConfigurationCreator.cs" />
    109     <Compile Include="Interfaces\IParameterConfigurationCrossover.cs" />
    110     <Compile Include="Interfaces\IParameterConfigurationEvaluator.cs" />
    111     <Compile Include="Interfaces\IParameterConfigurationManipulator.cs" />
    112     <Compile Include="Interfaces\IParameterConfigurationOperator.cs" />
    113101    <Compile Include="Interfaces\IRange.cs" />
    114102    <Compile Include="Interfaces\IValueConfiguration.cs" />
    115     <Compile Include="Manipulators\ParameterConfigurationAllPositionsManipulator.cs" />
    116     <Compile Include="Manipulators\ParameterConfigurationManipulator.cs" />
    117     <Compile Include="Manipulators\ParameterConfigurationOnePositionsManipulator.cs" />
    118103    <Compile Include="NullValue.cs" />
    119     <Compile Include="Operators\Crossovers\DoubleValue\AverageDoubleValueCrossover.cs" />
    120     <Compile Include="Operators\Crossovers\DoubleValue\DiscreteDoubleValueCrossover.cs" />
    121     <Compile Include="Operators\Crossovers\DoubleValue\NormalDoubleValueCrossover.cs" />
    122     <Compile Include="Operators\Crossovers\IntValue\AverageIntValueCrossover.cs" />
    123     <Compile Include="Operators\Crossovers\IntValue\DiscreteIntValueCrossover.cs" />
    124     <Compile Include="Operators\Crossovers\IntValue\MultiIntValueCrossover.cs" />
    125     <Compile Include="Operators\Crossovers\IntValue\NormalIntValueCrossover.cs" />
    126     <Compile Include="Operators\Interfaces\IDoubleValueCrossover.cs" />
    127     <Compile Include="Operators\Interfaces\IDoubleValueManipulator.cs" />
    128     <Compile Include="Operators\Interfaces\IIntValueCrossover.cs" />
    129     <Compile Include="Operators\Interfaces\IIntValueManipulator.cs" />
    130     <Compile Include="Operators\Interfaces\IValueManipulator.cs" />
    131     <Compile Include="Operators\Manipulators\DoubleValue\NormalDoubleValueManipulator.cs" />
    132     <Compile Include="Operators\Manipulators\DoubleValue\UniformDoubleValueManipulator.cs" />
    133     <Compile Include="Operators\Manipulators\IntValue\NormalIntValueManipulator.cs" />
    134     <Compile Include="Operators\Manipulators\IntValue\UniformIntValueManipulator.cs" />
    135104    <Compile Include="ParameterCombinationsEnumerator.cs" />
    136105    <Compile Include="ParameterConfigurations\ParameterConfiguration.cs" />
     
    157126    <None Include="HeuristicLab.snk" />
    158127  </ItemGroup>
    159   <ItemGroup>
    160     <Folder Include="Operators\Crossovers\SymbolicExpressionGrammar\" />
    161   </ItemGroup>
     128  <ItemGroup />
    162129  <Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
    163130  <PropertyGroup>
  • /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Interfaces/IRange.cs

    r8574 r8573  
    4242  }
    4343
    44   public interface IRange<T> : IRange where T : class {
     44  public interface IRange<T> : IRange, IItem where T : class {
    4545    new T LowerBound { get; set; }
    4646    new T UpperBound { get; set; }
  • /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ParameterConfigurationTree.cs

    r8574 r8573  
    166166      get { return parameters; }
    167167      set { parameters = value; }
     168    }
     169
     170    [Storable]
     171    private double experimentGenerationProgress;
     172    public double ExperimentGenerationProgress {
     173      get { return experimentGenerationProgress; }
     174      private set {
     175        if (experimentGenerationProgress != value) {
     176          experimentGenerationProgress = value;
     177          OnExperimentGenerationProgressChanged();
     178        }
     179      }
    168180    }
    169181
     
    279291      CombinationsCount = GetCombinationCount(0);
    280292    }
     293
     294    public event EventHandler ExperimentGenerationProgressChanged;
     295    private void OnExperimentGenerationProgressChanged() {
     296      var handler = ExperimentGenerationProgressChanged;
     297      if (handler != null) handler(this, EventArgs.Empty);
     298    }
    281299    #endregion
    282300
     
    290308
    291309      algorithm.CollectParameterValues(this.Parameters);
     310    }
     311
     312    public Experiment GenerateExperiment(IAlgorithm algorithm, bool createBatchRuns, int repetitions, Dictionary<IProblemInstanceProvider, HashSet<IDataDescriptor>> problemInstances, CancellationToken ct) {
     313      Experiment experiment = new Experiment();
     314      var algorithms = new List<IAlgorithm>(1 + problemInstances.Values.Count) { (IAlgorithm)algorithm.Clone() };
     315      foreach (var provider in problemInstances) {
     316        foreach (var descriptor in provider.Value) {
     317          var alg = (IAlgorithm)algorithm.Clone();
     318          ProblemInstanceManager.LoadData(provider.Key, descriptor, (IProblemInstanceConsumer)alg.Problem);
     319          algorithms.Add(alg);
     320        }
     321      }
     322      ExperimentGenerationProgress = 0;
     323      foreach (var alg in algorithms) {
     324        foreach (ParameterizedValueConfiguration combination in this) {
     325          ct.ThrowIfCancellationRequested();
     326          var clonedAlg = (IAlgorithm)alg.Clone();
     327          clonedAlg.Name = combination.ParameterInfoString;
     328          combination.Parameterize(clonedAlg);
     329          clonedAlg.StoreAlgorithmInEachRun = false;
     330          if (createBatchRuns) {
     331            BatchRun batchRun = new BatchRun(string.Format("BatchRun: {0}", combination.ParameterInfoString));
     332            batchRun.Optimizer = clonedAlg;
     333            batchRun.Repetitions = repetitions;
     334            experiment.Optimizers.Add(batchRun);
     335          } else {
     336            experiment.Optimizers.Add(clonedAlg);
     337          }
     338          ExperimentGenerationProgress = (double)experiment.Optimizers.Count / (this.GetCombinationCount(0) * algorithms.Count);
     339        }
     340      }
     341      return experiment;
     342    }
     343
     344    public Experiment GenerateExperiment(IAlgorithm algorithm) {
     345      return GenerateExperiment(algorithm, false, 0, null, CancellationToken.None);
     346    }
     347
     348    public Experiment GenerateExperiment(IAlgorithm algorithm, bool createBatchRuns, int repetitions) {
     349      return GenerateExperiment(algorithm, createBatchRuns, repetitions, null, CancellationToken.None);
    292350    }
    293351
  • /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/ParameterConfigurations/ParameterConfiguration.cs

    r8574 r8573  
    573573        }
    574574      }
    575 
    576575      var clonedValue = this.ActualValue.Value != null ? (IItem)this.ActualValue.Value.Clone() : null;
    577576      if (clonedValue != null) AdaptValidValues(parameter, clonedValue);
    578 
    579       if (!(parameter is IFixedValueParameter)) {
    580         parameter.Value = clonedValue;
    581       } else {
    582         var original = (dynamic)parameter.Value;
    583         var clone = (dynamic)clonedValue;
    584         if (typeof(ValueTypeValue<>).IsAssignableFrom(parameter.DataType) && !original.ReadOnly) {
    585           original.Value = clone.Value;
    586         } else if (typeof(ValueTypeArray<>).IsAssignableFrom(parameter.DataType) && !original.ReadOnly) {
    587           for (int i = 0; i < original.Length; i++)
    588             original[i] = clone[i];
    589         } else if (typeof(ValueTypeMatrix<>).IsAssignableFrom(parameter.DataType) && !original.ReadOnly) {
    590           for (int i = 0; i < original.Rows; i++)
    591             for (int j = 0; j < original.Columns; j++)
    592               original[i, j] = clone[i, j];
    593         } // StringConvertibleValueTuple<,> not supported
    594       }
     577      parameter.Value = clonedValue;
    595578    }
    596579
  • /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/Plugin.cs.frame

    r8574 r8573  
    3333  [PluginDependency("HeuristicLab.Core", "3.3")]
    3434  [PluginDependency("HeuristicLab.Data", "3.3")]
    35   [PluginDependency("HeuristicLab.Encodings.IntegerVectorEncoding", "3.3")]
    36   [PluginDependency("HeuristicLab.Encodings.RealVectorEncoding", "3.3")]
    3735  [PluginDependency("HeuristicLab.Encodings.SymbolicExpressionTreeEncoding", "3.4")]
    38   [PluginDependency("HeuristicLab.Operators", "3.3")]
    3936  [PluginDependency("HeuristicLab.Optimization", "3.3")]
    4037  [PluginDependency("HeuristicLab.Parameters", "3.3")]
    4138  [PluginDependency("HeuristicLab.Persistence", "3.3")]
    42   [PluginDependency("HeuristicLab.Problems.DataAnalysis", "3.4")]
    4339  [PluginDependency("HeuristicLab.Problems.DataAnalysis.Symbolic", "3.4")]
    4440  [PluginDependency("HeuristicLab.Problems.Instances", "3.3")]
    45   [PluginDependency("HeuristicLab.Random", "3.3")]
    4641  public class HeuristicLabEncodingsParameterConfigurationEncodingPlugin : PluginBase {
    4742  }
  • /branches/ParameterConfigurationEncoding/HeuristicLab.Encodings.ParameterConfigurationEncoding/3.3/RangeConstraints/Range.cs

    r8574 r8573  
    219219        errorMessage = "Could not parse range."; return false;
    220220      }
     221
    221222      if (lowerBound.SetValue(parts2[0]) &&
    222223          upperBound.SetValue(parts2[1]) &&
Note: See TracChangeset for help on using the changeset viewer.