Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
04/16/13 13:13:41 (11 years ago)
Author:
spimming
Message:

#1888:

  • Merged revisions from trunk
Location:
branches/OaaS
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/OaaS

  • branches/OaaS/HeuristicLab.Tests

  • branches/OaaS/HeuristicLab.Tests/HeuristicLab-3.3/SamplesTest.cs

    r8195 r9363  
    2323using System.Linq;
    2424using System.Threading;
     25using HeuristicLab.Algorithms.DataAnalysis;
    2526using HeuristicLab.Algorithms.EvolutionStrategy;
    2627using HeuristicLab.Algorithms.GeneticAlgorithm;
    2728using HeuristicLab.Algorithms.LocalSearch;
    2829using HeuristicLab.Algorithms.ParticleSwarmOptimization;
     30using HeuristicLab.Algorithms.RAPGA;
     31using HeuristicLab.Algorithms.ScatterSearch;
    2932using HeuristicLab.Algorithms.SimulatedAnnealing;
    3033using HeuristicLab.Algorithms.TabuSearch;
     
    3437using HeuristicLab.Encodings.PermutationEncoding;
    3538using HeuristicLab.Encodings.RealVectorEncoding;
     39using HeuristicLab.Encodings.ScheduleEncoding.JobSequenceMatrix;
    3640using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
    3741using HeuristicLab.Optimization;
     
    4953using HeuristicLab.Problems.Instances.VehicleRouting;
    5054using HeuristicLab.Problems.Knapsack;
     55using HeuristicLab.Problems.Scheduling;
    5156using HeuristicLab.Problems.TestFunctions;
    5257using HeuristicLab.Problems.TravelingSalesman;
     
    5661using HeuristicLab.Problems.VehicleRouting.ProblemInstances;
    5762using HeuristicLab.Selection;
     63using HeuristicLab.SequentialEngine;
    5864using Microsoft.VisualStudio.TestTools.UnitTesting;
    5965
     
    97103      ConfigureGeneticAlgorithmParameters<ProportionalSelector, OrderCrossover2, InversionManipulator>(
    98104        ga, 100, 1, 1000, 0.05);
    99 
    100       ga.Analyzer.Operators.SetItemCheckedState(ga.Analyzer.Operators
    101         .OfType<TSPAlleleFrequencyAnalyzer>()
    102         .Single(), false);
    103       ga.Analyzer.Operators.SetItemCheckedState(ga.Analyzer.Operators
    104         .OfType<TSPPopulationDiversityAnalyzer>()
    105         .Single(), false);
    106105      #endregion
    107106      return ga;
     
    132131
    133132      SolomonFormatInstanceProvider instanceProvider = new SolomonInstanceProvider();
    134       IVRPData data = instanceProvider.Import("C101.txt", "C101.opt.txt");
     133      CVRPTWData data = instanceProvider.Import("C101.txt", "C101.opt.txt") as CVRPTWData;
    135134      vrpProblem.Load(data);
    136135      vrpProblem.Name = "C101 VRP (imported from Solomon)";
     
    190189      ga.SetSeedRandomly.Value = false;
    191190      RunAlgorithm(ga);
    192       Assert.AreEqual(67, GetDoubleResult(ga, "BestQuality"));
    193       Assert.AreEqual(45.813, GetDoubleResult(ga, "CurrentAverageQuality"));
     191      Assert.AreEqual(81, GetDoubleResult(ga, "BestQuality"));
     192      Assert.AreEqual(48.19, GetDoubleResult(ga, "CurrentAverageQuality"));
    194193      Assert.AreEqual(0, GetDoubleResult(ga, "CurrentWorstQuality"));
    195194      Assert.AreEqual(50950, GetIntResult(ga, "EvaluatedSolutions"));
     
    241240      ga.SetSeedRandomly.Value = false;
    242241      RunAlgorithm(ga);
    243       Assert.AreEqual(0.78855594192122458, GetDoubleResult(ga, "BestQuality"), 1E-8);
    244       Assert.AreEqual(0.61395271071681523, GetDoubleResult(ga, "CurrentAverageQuality"), 1E-8);
     242      Assert.AreEqual(0.858344291534625, GetDoubleResult(ga, "BestQuality"), 1E-8);
     243      Assert.AreEqual(0.56758466520692641, GetDoubleResult(ga, "CurrentAverageQuality"), 1E-8);
    245244      Assert.AreEqual(0, GetDoubleResult(ga, "CurrentWorstQuality"), 1E-8);
    246245      Assert.AreEqual(50950, GetIntResult(ga, "EvaluatedSolutions"));
     
    252251      SymbolicRegressionSingleObjectiveProblem symbRegProblem = new SymbolicRegressionSingleObjectiveProblem();
    253252      symbRegProblem.Name = "Tower Symbolic Regression Problem";
    254       symbRegProblem.Description = "Tower Dataset (downloaded from: http://vanillamodeling.com/realproblems.html)";
     253      symbRegProblem.Description = "Tower Dataset (downloaded from: http://www.symbolicregression.com/?q=towerProblem)";
    255254      RegressionRealWorldInstanceProvider provider = new RegressionRealWorldInstanceProvider();
    256       var instance = provider.GetDataDescriptors().Where(x => x.Name.Equals("TowerData")).Single();
     255      var instance = provider.GetDataDescriptors().Where(x => x.Name.Equals("Tower")).Single();
    257256      var towerProblemData = (RegressionProblemData)provider.LoadData(instance);
    258257      towerProblemData.TargetVariableParameter.Value = towerProblemData.TargetVariableParameter.ValidValues
     
    273272        towerProblemData.InputVariables.Single(x => x.Value == "towerResponse"), false);
    274273      towerProblemData.TrainingPartition.Start = 0;
    275       towerProblemData.TrainingPartition.End = 4000;
    276       towerProblemData.TestPartition.Start = 4000;
     274      towerProblemData.TrainingPartition.End = 3136;
     275      towerProblemData.TestPartition.Start = 3136;
    277276      towerProblemData.TestPartition.End = 4999;
    278277      towerProblemData.Name = "Data imported from towerData.txt";
     
    301300      symbRegProblem.BestKnownQuality.Value = 0.97;
    302301      symbRegProblem.FitnessCalculationPartition.Start = 0;
    303       symbRegProblem.FitnessCalculationPartition.End = 2800;
    304       symbRegProblem.ValidationPartition.Start = 2800;
    305       symbRegProblem.ValidationPartition.End = 4000;
     302      symbRegProblem.FitnessCalculationPartition.End = 2300;
     303      symbRegProblem.ValidationPartition.Start = 2300;
     304      symbRegProblem.ValidationPartition.End = 3136;
    306305      symbRegProblem.RelativeNumberOfEvaluatedSamples.Value = 1;
    307306      symbRegProblem.MaximumSymbolicExpressionTreeLength.Value = 150;
     
    346345      ga.SetSeedRandomly.Value = false;
    347346      RunAlgorithm(ga);
    348       Assert.AreEqual(0.13775264138895371, GetDoubleResult(ga, "BestQuality"), 1E-8);
    349       Assert.AreEqual(14.232802217120254, GetDoubleResult(ga, "CurrentAverageQuality"), 1E-8);
    350       Assert.AreEqual(104.24339008411457, GetDoubleResult(ga, "CurrentWorstQuality"), 1E-8);
     347      Assert.AreEqual(0.14458636369766503, GetDoubleResult(ga, "BestQuality"), 1E-8);
     348      Assert.AreEqual(2.5613992769560352, GetDoubleResult(ga, "CurrentAverageQuality"), 1E-8);
     349      Assert.AreEqual(100.62175156249987, GetDoubleResult(ga, "CurrentWorstQuality"), 1E-8);
    351350      Assert.AreEqual(100900, GetIntResult(ga, "EvaluatedSolutions"));
     351      var bestTrainingSolution = (IClassificationSolution)ga.Results["Best training solution"].Value;
     352      Assert.AreEqual(0.80625, bestTrainingSolution.TrainingAccuracy, 1E-8);
     353      Assert.AreEqual(0.782608695652174, bestTrainingSolution.TestAccuracy, 1E-8);
    352354    }
    353355
     
    358360      symbClassProblem.Name = "Mammography Classification Problem";
    359361      symbClassProblem.Description = "Mammography dataset imported from the UCI machine learning repository (http://archive.ics.uci.edu/ml/datasets/Mammographic+Mass)";
    360       ClassificationRealWorldInstanceProvider provider = new ClassificationRealWorldInstanceProvider();
    361       var instance = provider.GetDataDescriptors().Where(x => x.Name.Equals("Mammography")).Single();
     362      UCIInstanceProvider provider = new UCIInstanceProvider();
     363      var instance = provider.GetDataDescriptors().Where(x => x.Name.Equals("Mammography, M. Elter, 2007")).Single();
    362364      var mammoData = (ClassificationProblemData)provider.LoadData(instance);
    363365      mammoData.TargetVariableParameter.Value = mammoData.TargetVariableParameter.ValidValues
     
    555557        UnidirectionalRingMigrator, BestSelector, WorstReplacer>(
    556558        ga, 100, 1, 1000, 0.05, 5, 50, 0.25);
    557 
    558       ga.Analyzer.Operators.SetItemCheckedState(ga.Analyzer.Operators
    559         .OfType<TSPAlleleFrequencyAnalyzer>()
    560         .Single(), false);
    561       ga.Analyzer.Operators.SetItemCheckedState(ga.Analyzer.Operators
    562         .OfType<TSPPopulationDiversityAnalyzer>()
    563         .Single(), false);
    564559      #endregion
    565560      return ga;
     
    836831      ts.TabuTenure.Value = 60;
    837832
    838       ts.Analyzer.Operators.SetItemCheckedState(ts.Analyzer.Operators
    839         .OfType<TSPAlleleFrequencyAnalyzer>()
    840         .Single(), false);
    841       ts.Analyzer.Operators.SetItemCheckedState(ts.Analyzer.Operators
    842         .OfType<TSPPopulationDiversityAnalyzer>()
    843         .Single(), false);
    844833      #endregion
    845834      ts.Engine = new ParallelEngine();
     
    920909        .Single(), false);
    921910      vns.ShakingOperator = shakingOperator;
    922       vns.Analyzer.Operators.SetItemCheckedState(vns.Analyzer.Operators
    923         .OfType<TSPAlleleFrequencyAnalyzer>()
    924         .Single(), false);
    925       vns.Analyzer.Operators.SetItemCheckedState(vns.Analyzer.Operators
    926         .OfType<TSPPopulationDiversityAnalyzer>()
    927         .Single(), false);
    928911      #endregion
    929912      vns.Engine = new ParallelEngine();
    930913      return vns;
     914    }
     915    #endregion
     916    #endregion
     917
     918
     919    #region Gaussian Process Regression
     920    [TestMethod]
     921    public void CreateGaussianProcessRegressionSampleTest() {
     922      var vns = CreateGaussianProcessRegressionSample();
     923      XmlGenerator.Serialize(vns, "../../GaussianProcessRegression.hl");
     924    }
     925    [TestMethod]
     926    public void RunGaussianProcessRegressionSample() {
     927      var gpr = CreateGaussianProcessRegressionSample();
     928      gpr.SetSeedRandomly = false;
     929      gpr.Seed = 1618551877;
     930      RunAlgorithm(gpr);
     931      Assert.AreEqual(-940.48768748097029, GetDoubleResult(gpr, "NegativeLogLikelihood"));
     932      Assert.AreEqual(0.99561947047986976, GetDoubleResult(gpr, "Training R²"));
     933    }
     934
     935    private GaussianProcessRegression CreateGaussianProcessRegressionSample() {
     936      var gpr = new GaussianProcessRegression();
     937      var provider = new VariousInstanceProvider();
     938      var instance = provider.GetDataDescriptors().Where(x => x.Name.Contains("Spatial co-evolution")).Single();
     939      var regProblem = new RegressionProblem();
     940      regProblem.Load(provider.LoadData(instance));
     941      #region Algorithm Configuration
     942      gpr.Name = "Gaussian Process Regression";
     943      gpr.Description = "A Gaussian process regression algorithm applied to the spatial co-evolution benchmark problem.";
     944      gpr.Problem = regProblem;
     945
     946      gpr.CovarianceFunction = new CovarianceSquaredExponentialIso();
     947      gpr.MeanFunction = new MeanConst();
     948      gpr.MinimizationIterations = 20;
     949      gpr.Seed = 0;
     950      gpr.SetSeedRandomly = true;
     951      #endregion
     952      gpr.Engine = new ParallelEngine();
     953      return gpr;
     954    }
     955    #endregion
     956
     957    #region Scatter Search
     958    #region VRP
     959    [TestMethod]
     960    public void CreateScatterSearchVRPSampleTest() {
     961      var ss = CreateScatterSearchVRPSample();
     962      XmlGenerator.Serialize(ss, "../../SS_VRP.hl");
     963    }
     964
     965    [TestMethod]
     966    public void RunScatterSearchVRPSampleTest() {
     967      var ss = CreateScatterSearchVRPSample();
     968      ss.SetSeedRandomly.Value = false;
     969      RunAlgorithm(ss);
     970      Assert.AreEqual(828.93686694283383, GetDoubleResult(ss, "BestQuality"));
     971      Assert.AreEqual(868.63623986983077, GetDoubleResult(ss, "CurrentAverageQuality"));
     972      Assert.AreEqual(1048.8333559209832, GetDoubleResult(ss, "CurrentWorstQuality"));
     973      Assert.AreEqual(262622, GetIntResult(ss, "EvaluatedSolutions"));
     974    }
     975
     976    private ScatterSearch CreateScatterSearchVRPSample() {
     977      #region Problem Configuration
     978      var provider = new SolomonInstanceProvider();
     979      var instance = provider.GetDataDescriptors().Single(x => x.Name == "C101");
     980      VehicleRoutingProblem vrpProblem = new VehicleRoutingProblem();
     981      vrpProblem.Load(provider.LoadData(instance));
     982      #endregion
     983
     984      #region Algorithm Configuration
     985      ScatterSearch ss = new ScatterSearch();
     986      ss.Engine = new SequentialEngine();
     987      ss.Name = "Scatter Search - VRP";
     988      ss.Description = "A scatter search algorithm which solves the \"C101\" vehicle routing problem (imported from Solomon)";
     989      ss.Problem = vrpProblem;
     990
     991      var improver = ss.Problem.Operators.OfType<VRPIntraRouteImprovementOperator>().First();
     992      improver.ImprovementAttemptsParameter.Value.Value = 15;
     993      improver.SampleSizeParameter.Value.Value = 10;
     994      ss.Improver = improver;
     995
     996      var pathRelinker = ss.Problem.Operators.OfType<VRPPathRelinker>().First();
     997      pathRelinker.IterationsParameter.Value.Value = 25;
     998      ss.PathRelinker = pathRelinker;
     999
     1000      var similarityCalculator = ss.SimilarityCalculatorParameter.ValidValues.OfType<VRPSimilarityCalculator>().First();
     1001      ss.SimilarityCalculator = similarityCalculator;
     1002
     1003      ss.MaximumIterations.Value = 2;
     1004      ss.PopulationSize.Value = 20;
     1005      ss.ReferenceSetSize.Value = 10;
     1006      ss.Seed.Value = 0;
     1007      return ss;
     1008      #endregion
     1009    }
     1010    #endregion
     1011    #endregion
     1012
     1013    #region RAPGA
     1014    #region Scheduling
     1015    [TestMethod]
     1016    public void CreateRAPGASchedulingSampleTest() {
     1017      var ss = CreateRAPGASchedulingSample();
     1018      XmlGenerator.Serialize(ss, "../../RAPGA_JSSP.hl");
     1019    }
     1020
     1021    [TestMethod]
     1022    public void RunRAPGASchedulingSampleTest() {
     1023      var rapga = CreateRAPGASchedulingSample();
     1024      rapga.SetSeedRandomly.Value = false;
     1025      RunAlgorithm(rapga);
     1026      Assert.AreEqual(988.00, GetDoubleResult(rapga, "BestQuality"));
     1027      Assert.AreEqual(988.00, GetDoubleResult(rapga, "CurrentAverageQuality"));
     1028      Assert.AreEqual(988.00, GetDoubleResult(rapga, "CurrentWorstQuality"));
     1029      Assert.AreEqual(27100, GetIntResult(rapga, "EvaluatedSolutions"));
     1030    }
     1031
     1032    private RAPGA CreateRAPGASchedulingSample() {
     1033      #region Problem Configuration
     1034      JobShopSchedulingProblem problem = new JobShopSchedulingProblem();
     1035      #endregion
     1036
     1037      #region Algorithm Configuration
     1038      RAPGA rapga = new RAPGA();
     1039      rapga.Engine = new SequentialEngine();
     1040      rapga.Name = "RAPGA - Job Shop Scheduling";
     1041      rapga.Description = "A relevant alleles preserving genetic algorithm which solves a job shop scheduling problem";
     1042      rapga.Problem = problem;
     1043      rapga.Mutator = rapga.MutatorParameter.ValidValues.OfType<JSMSwapManipulator>().First();
     1044      rapga.Seed.Value = 0;
     1045      return rapga;
     1046      #endregion
    9311047    }
    9321048    #endregion
Note: See TracChangeset for help on using the changeset viewer.