#region License Information /* HeuristicLab * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL) * * This file is part of HeuristicLab. * * HeuristicLab is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * HeuristicLab is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with HeuristicLab. If not, see . */ #endregion using System; using System.Collections.Generic; using System.Linq; using HeuristicLab.Algorithms.DataAnalysis; using HeuristicLab.Data; namespace HeuristicLab.Problems.Instances.DataAnalysis { public class InstanceProvider : ArtificialRegressionInstanceProvider { public override string Name { get { return "GPR Benchmark Problems"; } } public override string Description { get { return ""; } } public override Uri WebLink { get { return new Uri("http://dev.heuristiclab.com/trac/hl/core/wiki/AdditionalMaterial"); } } public override string ReferencePublication { get { return ""; } } public override IEnumerable GetDataDescriptors() { List descriptorList = new List(); descriptorList.Add(new GaussianProcessSEIso()); descriptorList.Add(new GaussianProcessSEIso1()); descriptorList.Add(new GaussianProcessSEIso2()); descriptorList.Add(new GaussianProcessSEIso3()); descriptorList.Add(new GaussianProcessSEIso4()); descriptorList.Add(new GaussianProcessSEIso5()); descriptorList.Add(new GaussianProcessSEIso6()); descriptorList.Add(new GaussianProcessPolyTen()); descriptorList.Add(new GaussianProcessSEIsoDependentNoise()); descriptorList.Add(new GaussianProcess2dPeriodic()); { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceSquaredExponentialIso()); cov.Terms.Add(new CovarianceSquaredExponentialIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.8, -0.1, 0.5, 0.3, -1.5 }; descriptorList.Add(new GaussianProcessRegressionInstance("SE+SE", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceRationalQuadraticIso()); cov.Terms.Add(new CovarianceRationalQuadraticIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -3, 0, 0, -1.5, 0, 2.5, -1.5 }; descriptorList.Add(new GaussianProcessRegressionInstance("RQ+RQ", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovariancePeriodic()); cov.Terms.Add(new CovariancePeriodic()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { 0, -1.8, -1.5, 0, -0.5, -1, -2.1 }; descriptorList.Add(new GaussianProcessRegressionInstance("Periodic+Periodic", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceMaternIso()); cov.Terms.Add(new CovarianceMaternIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { 0, 0, -1, 1, -4 }; descriptorList.Add(new GaussianProcessRegressionInstance("Matern1+Matern1", cov, hyp)); } { var cov = new CovarianceSum(); var m1 = new CovarianceMaternIso(); m1.DParameter.Value = m1.DParameter.ValidValues.First(v => v.Value == 3); var m2 = new CovarianceMaternIso(); m2.DParameter.Value = m2.DParameter.ValidValues.First(v => v.Value == 3); cov.Terms.Add(m1); cov.Terms.Add(m2); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.7, 0, -1, 1, -1.5 }; descriptorList.Add(new GaussianProcessRegressionInstance("Matern3+Matern3", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceRationalQuadraticIso()); cov.Terms.Add(new CovarianceSquaredExponentialIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -1.5, -0.5, -3, -1, -1, -3 }; descriptorList.Add(new GaussianProcessRegressionInstance("RQ+SE", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceSquaredExponentialIso()); var prod = new CovarianceProduct(); prod.Factors.Add(new CovarianceLinear()); prod.Factors.Add(new CovarianceNoise()); cov.Terms.Add(prod); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -3, 0, 0, -1.5 }; descriptorList.Add(new GaussianProcessRegressionInstance("SE+Linear*Noise", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceSquaredExponentialIso()); cov.Terms.Add(new CovariancePeriodic()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -1, 0, 0, -1.5, 0, -2 }; descriptorList.Add(new GaussianProcessRegressionInstance("SE+Periodic", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceSquaredExponentialIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.5, 0, -7 }; descriptorList.Add(new GaussianProcessRegressionInstance1D("1D: SE", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceSquaredExponentialIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.5, 0, -7 }; descriptorList.Add(new GaussianProcessRegressionDemo("1D: SE Noise", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceRationalQuadraticIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.5, 0, -1, -7 }; descriptorList.Add(new GaussianProcessRegressionDemo("1D: RQ Noise", cov, hyp)); } { var cov = new CovarianceSum(); var t = new CovarianceMaternIso(); t.DParameter.Value = t.DParameter.ValidValues.First(x => x.Value == 3); cov.Terms.Add(t); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -1.5, 0, -7 }; descriptorList.Add(new GaussianProcessRegressionDemo("1D: Matern3 Noise", cov, hyp)); } { var cov = new CovarianceSum(); var t = new CovariancePeriodic(); t.PeriodParameter.Value = new DoubleValue(0.3); cov.Terms.Add(t); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { 0, 0, -7 }; descriptorList.Add(new GaussianProcessRegressionDemo("1D: Periodic Noise", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceRationalQuadraticIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.5, 0, -2, -7 }; descriptorList.Add(new GaussianProcessRegressionInstance1D("1D: RQ", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceMaternIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2, 0, -7 }; descriptorList.Add(new GaussianProcessRegressionInstance1D("1D: Matern1", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovariancePeriodic()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { 0, -1.3, 0, -7 }; descriptorList.Add(new GaussianProcessRegressionInstance1D("1D: Periodic", cov, hyp)); } { var cov = new CovarianceSum(); cov.Terms.Add(new CovarianceSquaredExponentialIso()); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.5, 0, -7 }; descriptorList.Add(new GaussianProcessRegressionInstance1D("1D: SE", cov, hyp)); } { var cov = new CovarianceSum(); var m1 = new CovarianceMask(); m1.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 }); m1.CovarianceFunctionParameter.Value = new CovarianceSquaredExponentialIso(); var m2 = new CovarianceMask(); m2.SelectedDimensionsParameter.Value = new IntArray(new int[] { 1 }); m2.CovarianceFunctionParameter.Value = new CovarianceRationalQuadraticIso(); cov.Terms.Add(m1); cov.Terms.Add(m2); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.5, 0, -2.0, 0, -2, -7 }; descriptorList.Add(new GaussianProcessRegressionInstance2D("2D: SE+RQ", cov, hyp)); } { var cov = new CovarianceSum(); var m1 = new CovarianceMask(); m1.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 }); m1.CovarianceFunctionParameter.Value = new CovarianceSquaredExponentialIso(); var m2 = new CovarianceMask(); m2.SelectedDimensionsParameter.Value = new IntArray(new int[] { 1 }); m2.CovarianceFunctionParameter.Value = new CovarianceMaternIso(); cov.Terms.Add(m1); cov.Terms.Add(m2); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.5, 0, 2, 0, -7 }; descriptorList.Add(new GaussianProcessRegressionInstance2D("2D: SE+Matern1", cov, hyp)); } { var cov = new CovarianceSum(); var m1 = new CovarianceMask(); m1.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 }); m1.CovarianceFunctionParameter.Value = new CovarianceSquaredExponentialIso(); var m2 = new CovarianceMask(); m2.SelectedDimensionsParameter.Value = new IntArray(new int[] { 1 }); m2.CovarianceFunctionParameter.Value = new CovariancePeriodic(); cov.Terms.Add(m1); cov.Terms.Add(m2); cov.Terms.Add(new CovarianceNoise()); var hyp = new double[] { -2.5, 0, 0, -1.3, 0, -7 }; descriptorList.Add(new GaussianProcessRegressionInstance2D("2D: SE+Periodic", cov, hyp)); } return descriptorList; } } }