#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;
}
}
}