1 | #region License Information
|
---|
2 | /* HeuristicLab
|
---|
3 | * Copyright (C) 2002-2012 Heuristic and Evolutionary Algorithms Laboratory (HEAL)
|
---|
4 | *
|
---|
5 | * This file is part of HeuristicLab.
|
---|
6 | *
|
---|
7 | * HeuristicLab is free software: you can redistribute it and/or modify
|
---|
8 | * it under the terms of the GNU General Public License as published by
|
---|
9 | * the Free Software Foundation, either version 3 of the License, or
|
---|
10 | * (at your option) any later version.
|
---|
11 | *
|
---|
12 | * HeuristicLab is distributed in the hope that it will be useful,
|
---|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
|
---|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
---|
15 | * GNU General Public License for more details.
|
---|
16 | *
|
---|
17 | * You should have received a copy of the GNU General Public License
|
---|
18 | * along with HeuristicLab. If not, see <http://www.gnu.org/licenses/>.
|
---|
19 | */
|
---|
20 | #endregion
|
---|
21 |
|
---|
22 | using System.Collections.Generic;
|
---|
23 | using System.Linq;
|
---|
24 | using HeuristicLab.Algorithms.DataAnalysis;
|
---|
25 | using HeuristicLab.Data;
|
---|
26 | using HeuristicLab.Random;
|
---|
27 |
|
---|
28 | namespace HeuristicLab.Problems.Instances.DataAnalysis {
|
---|
29 | public class GaussianProcessPolyTen : ArtificialRegressionDataDescriptor {
|
---|
30 |
|
---|
31 | public override string Name {
|
---|
32 | get {
|
---|
33 | return "Gaussian Process Poly-10 y = GP(0, CovSEIso(X1)*CovSEIso(X2) + " +
|
---|
34 | "CovSEIso(X3)*CovSEIso(X4) + CovSEIso(X5)*CovSEIso(X6) + CovSEIso(X1)*CovSEIso(X7)*CovSEIso(X9) + CovSEIso(X3)*CovSEIso(X6)*CovSEIso(X10)";
|
---|
35 | }
|
---|
36 | }
|
---|
37 | public override string Description {
|
---|
38 | get { return ""; }
|
---|
39 | }
|
---|
40 | protected override string TargetVariable { get { return "Y"; } }
|
---|
41 | protected override string[] VariableNames { get { return new string[] { "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10", "Y" }; } }
|
---|
42 | protected override string[] AllowedInputVariables { get { return new string[] { "X1", "X2", "X3", "X4", "X5", "X6", "X7", "X8", "X9", "X10" }; } }
|
---|
43 | protected override int TrainingPartitionStart { get { return 0; } }
|
---|
44 | protected override int TrainingPartitionEnd { get { return 250; } }
|
---|
45 | protected override int TestPartitionStart { get { return 250; } }
|
---|
46 | protected override int TestPartitionEnd { get { return 500; } }
|
---|
47 |
|
---|
48 | protected override List<List<double>> GenerateValues() {
|
---|
49 | var mt = new MersenneTwister(31415);
|
---|
50 |
|
---|
51 | List<List<double>> data = new List<List<double>>();
|
---|
52 | for (int i = 0; i < AllowedInputVariables.Count(); i++) {
|
---|
53 | data.Add(ValueGenerator.GenerateUniformDistributedValues(TestPartitionEnd, -1, 1).ToList());
|
---|
54 | }
|
---|
55 |
|
---|
56 |
|
---|
57 | var hyp = new double[]
|
---|
58 | {
|
---|
59 | 0.0, 0.0,
|
---|
60 | 0.0, 0.0,
|
---|
61 | 0.0, 0.0,
|
---|
62 | 0.0, 0.0,
|
---|
63 | 0.0, 0.0,
|
---|
64 | 0.0, 0.0,
|
---|
65 | 0.0, 0.0,
|
---|
66 | 0.0, 0.0,
|
---|
67 | 0.0, 0.0,
|
---|
68 | 0.0, 0.0,
|
---|
69 | 0.0, 0.0,
|
---|
70 | 0.0, 0.0,
|
---|
71 | 0.0, 0.0,
|
---|
72 | 0.0, 0.0,
|
---|
73 | 0.0, 0.0,
|
---|
74 | -5.0 // noise
|
---|
75 | };
|
---|
76 |
|
---|
77 |
|
---|
78 | var covarianceFunction = new CovarianceSum();
|
---|
79 | var t1 = new CovarianceProduct();
|
---|
80 | var m1 = new CovarianceMask();
|
---|
81 | m1.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 });
|
---|
82 | var m2 = new CovarianceMask();
|
---|
83 | m2.SelectedDimensionsParameter.Value = new IntArray(new int[] { 1 });
|
---|
84 | t1.Factors.Add(m1);
|
---|
85 | t1.Factors.Add(m2);
|
---|
86 |
|
---|
87 | var t2 = new CovarianceProduct();
|
---|
88 | var m3 = new CovarianceMask();
|
---|
89 | m3.SelectedDimensionsParameter.Value = new IntArray(new int[] { 2 });
|
---|
90 | var m4 = new CovarianceMask();
|
---|
91 | m4.SelectedDimensionsParameter.Value = new IntArray(new int[] { 3 });
|
---|
92 | t2.Factors.Add(m3);
|
---|
93 | t2.Factors.Add(m4);
|
---|
94 |
|
---|
95 | var t3 = new CovarianceProduct();
|
---|
96 | var m5 = new CovarianceMask();
|
---|
97 | m5.SelectedDimensionsParameter.Value = new IntArray(new int[] { 4 });
|
---|
98 | var m6 = new CovarianceMask();
|
---|
99 | m6.SelectedDimensionsParameter.Value = new IntArray(new int[] { 5 });
|
---|
100 | t3.Factors.Add(m5);
|
---|
101 | t3.Factors.Add(m6);
|
---|
102 |
|
---|
103 | var t4 = new CovarianceProduct();
|
---|
104 | var m1_ = new CovarianceMask();
|
---|
105 | m1_.SelectedDimensionsParameter.Value = new IntArray(new int[] { 0 });
|
---|
106 | var m7 = new CovarianceMask();
|
---|
107 | m7.SelectedDimensionsParameter.Value = new IntArray(new int[] { 6 });
|
---|
108 | var m9 = new CovarianceMask();
|
---|
109 | m9.SelectedDimensionsParameter.Value = new IntArray(new int[] { 8 });
|
---|
110 | t4.Factors.Add(m1_);
|
---|
111 | t4.Factors.Add(m7);
|
---|
112 | t4.Factors.Add(m9);
|
---|
113 |
|
---|
114 | var t5 = new CovarianceProduct();
|
---|
115 | var m3_ = new CovarianceMask();
|
---|
116 | m3_.SelectedDimensionsParameter.Value = new IntArray(new int[] { 2 });
|
---|
117 | var m6_ = new CovarianceMask();
|
---|
118 | m6_.SelectedDimensionsParameter.Value = new IntArray(new int[] { 5 });
|
---|
119 | var m10 = new CovarianceMask();
|
---|
120 | m10.SelectedDimensionsParameter.Value = new IntArray(new int[] { 9 });
|
---|
121 | t5.Factors.Add(m3);
|
---|
122 | t5.Factors.Add(m6_);
|
---|
123 | t5.Factors.Add(m10);
|
---|
124 |
|
---|
125 | covarianceFunction.Terms.Add(t1);
|
---|
126 | covarianceFunction.Terms.Add(t2);
|
---|
127 | covarianceFunction.Terms.Add(t3);
|
---|
128 | covarianceFunction.Terms.Add(t4);
|
---|
129 | covarianceFunction.Terms.Add(t5);
|
---|
130 |
|
---|
131 | var cov = covarianceFunction.GetParameterizedCovarianceFunction(hyp, Enumerable.Range(0, AllowedInputVariables.Count()));
|
---|
132 |
|
---|
133 |
|
---|
134 | var target = Util.SampleGaussianProcess(mt, cov, data);
|
---|
135 | data.Add(target);
|
---|
136 |
|
---|
137 | return data;
|
---|
138 | }
|
---|
139 | }
|
---|
140 | }
|
---|