Free cookie consent management tool by TermsFeed Policy Generator

source: branches/HeuristicLab.Problems.GaussianProcessTuning/HeuristicLab.Problems.GaussianProcessTuning/Symbols.cs @ 9212

Last change on this file since 9212 was 9212, checked in by gkronber, 11 years ago

#1967: worked on Gaussian Process evolution problem

File size: 22.0 KB
Line 
1using System;
2using HeuristicLab.Common;
3using HeuristicLab.Encodings.SymbolicExpressionTreeEncoding;
4using HeuristicLab.Persistence.Default.CompositeSerializers.Storable;
5
6namespace HeuristicLab.Problems.GaussianProcessTuning {
7
8  #region interfaces
9  public interface IDimensionSymbol : ISymbol {
10    int Dimension { get; set; }
11  }
12  #endregion
13
14  [StorableClass]
15  public sealed class ConfigurationStartSymbol : Symbol {
16    public override int MinimumArity {
17      get { return 3; }
18    }
19    public override int MaximumArity {
20      get { return 3; }
21    }
22    [StorableConstructor]
23    private ConfigurationStartSymbol(bool deserializing) : base(deserializing) { }
24    private ConfigurationStartSymbol(ConfigurationStartSymbol original, Cloner cloner)
25      : base(original, cloner) {
26    }
27
28    public ConfigurationStartSymbol()
29      : base("GP Configuration", "The start symbol for a GP configuration") {
30    }
31    [StorableHook(HookType.AfterDeserialization)]
32    private void AfterDeserialization() {
33    }
34    public override IDeepCloneable Clone(Cloner cloner) {
35      return new ConfigurationStartSymbol(this, cloner);
36    }
37  }
38
39  #region mean function terminals
40  [StorableClass]
41  public sealed class MeanZero : Symbol {
42    public override int MinimumArity {
43      get { return 0; }
44    }
45    public override int MaximumArity {
46      get { return 0; }
47    }
48    [StorableConstructor]
49    private MeanZero(bool deserializing) : base(deserializing) { }
50    private MeanZero(MeanZero original, Cloner cloner)
51      : base(original, cloner) {
52    }
53
54    public MeanZero()
55      : base("MeanZero", "Zero mean function") {
56    }
57    [StorableHook(HookType.AfterDeserialization)]
58    private void AfterDeserialization() {
59    }
60
61    public override ISymbolicExpressionTreeNode CreateTreeNode() {
62      return new EmptyTerminalTreeNode(new MeanZero());
63    }
64    public override IDeepCloneable Clone(Cloner cloner) {
65      return new MeanZero(this, cloner);
66    }
67  }
68
69  [StorableClass]
70  public sealed class MeanOne : Symbol {
71    public override int MinimumArity {
72      get { return 0; }
73    }
74    public override int MaximumArity {
75      get { return 0; }
76    }
77    [StorableConstructor]
78    private MeanOne(bool deserializing) : base(deserializing) { }
79    private MeanOne(MeanOne original, Cloner cloner)
80      : base(original, cloner) {
81    }
82
83    public MeanOne()
84      : base("MeanOne", "One mean function") {
85    }
86    [StorableHook(HookType.AfterDeserialization)]
87    private void AfterDeserialization() {
88    }
89
90    public override ISymbolicExpressionTreeNode CreateTreeNode() {
91      return new EmptyTerminalTreeNode(this);
92    }
93    public override IDeepCloneable Clone(Cloner cloner) {
94      return new MeanOne(this, cloner);
95    }
96  }
97
98  [StorableClass]
99  public sealed class MeanConst : Symbol {
100    public override int MinimumArity {
101      get { return 0; }
102    }
103    public override int MaximumArity {
104      get { return 0; }
105    }
106    [StorableConstructor]
107    private MeanConst(bool deserializing) : base(deserializing) { }
108    private MeanConst(MeanConst original, Cloner cloner)
109      : base(original, cloner) {
110    }
111
112    public MeanConst()
113      : base("MeanConst", "Constant mean function") {
114    }
115    [StorableHook(HookType.AfterDeserialization)]
116    private void AfterDeserialization() {
117    }
118
119    public override ISymbolicExpressionTreeNode CreateTreeNode() {
120      return new MeanConstTreeNode();
121    }
122    public override IDeepCloneable Clone(Cloner cloner) {
123      return new MeanConst(this, cloner);
124    }
125  }
126
127  [StorableClass]
128  public sealed class MeanLinear : Symbol, IDimensionSymbol {
129    public override int MinimumArity {
130      get { return 0; }
131    }
132    public override int MaximumArity {
133      get { return 0; }
134    }
135    [Storable]
136    public int Dimension { get; set; }
137
138    [StorableConstructor]
139    private MeanLinear(bool deserializing) : base(deserializing) { }
140    private MeanLinear(MeanLinear original, Cloner cloner)
141      : base(original, cloner) {
142      Dimension = original.Dimension;
143    }
144
145    public MeanLinear(int dimension)
146      : base("MeanLinear", "Linear mean function") {
147      this.Dimension = dimension;
148    }
149    [StorableHook(HookType.AfterDeserialization)]
150    private void AfterDeserialization() {
151    }
152
153    public override ISymbolicExpressionTreeNode CreateTreeNode() {
154      return new MeanLinearTreeNode(this);
155    }
156    public override IDeepCloneable Clone(Cloner cloner) {
157      return new MeanLinear(this, cloner);
158    }
159  }
160  #endregion
161
162  #region mean function functions
163  [StorableClass]
164  public sealed class MeanScale : Symbol {
165    public override int MinimumArity {
166      get { return 1; }
167    }
168    public override int MaximumArity {
169      get { return 1; }
170    }
171
172    [StorableConstructor]
173    private MeanScale(bool deserializing) : base(deserializing) { }
174    private MeanScale(MeanScale original, Cloner cloner)
175      : base(original, cloner) {
176    }
177
178    public MeanScale()
179      : base("MeanScale", "Scaled version of a mean function") {
180    }
181    [StorableHook(HookType.AfterDeserialization)]
182    private void AfterDeserialization() {
183    }
184
185    public override ISymbolicExpressionTreeNode CreateTreeNode() {
186      return new MeanScaleTreeNode();
187    }
188    public override IDeepCloneable Clone(Cloner cloner) {
189      return new MeanScale(this, cloner);
190    }
191  }
192
193
194  [StorableClass]
195  public sealed class MeanPow : Symbol {
196    [Storable]
197    public int Exponent { get; set; }
198    public override int MinimumArity {
199      get { return 1; }
200    }
201    public override int MaximumArity {
202      get { return 1; }
203    }
204
205    [StorableConstructor]
206    private MeanPow(bool deserializing) : base(deserializing) { }
207    private MeanPow(MeanPow original, Cloner cloner)
208      : base(original, cloner) {
209      Exponent = original.Exponent;
210    }
211
212    public MeanPow(int exponent = 2)
213      : base("MeanPow", "Power of a mean function") {
214      Exponent = exponent;
215    }
216    [StorableHook(HookType.AfterDeserialization)]
217    private void AfterDeserialization() {
218    }
219
220    public override IDeepCloneable Clone(Cloner cloner) {
221      return new MeanPow(this, cloner);
222    }
223  }
224
225  [StorableClass]
226  public sealed class MeanProd : Symbol {
227    public override int MinimumArity {
228      get { return 2; }
229    }
230    public override int MaximumArity {
231      get { return 2; }
232    }
233
234    [StorableConstructor]
235    private MeanProd(bool deserializing) : base(deserializing) { }
236    private MeanProd(MeanProd original, Cloner cloner)
237      : base(original, cloner) {
238    }
239
240    public MeanProd()
241      : base("MeanProd", "Product of two functions") {
242    }
243    [StorableHook(HookType.AfterDeserialization)]
244    private void AfterDeserialization() {
245    }
246
247    public override IDeepCloneable Clone(Cloner cloner) {
248      return new MeanProd(this, cloner);
249    }
250  }
251
252  [StorableClass]
253  public sealed class MeanSum : Symbol {
254    public override int MinimumArity {
255      get { return 2; }
256    }
257    public override int MaximumArity {
258      get { return 2; }
259    }
260
261    [StorableConstructor]
262    private MeanSum(bool deserializing) : base(deserializing) { }
263    private MeanSum(MeanSum original, Cloner cloner)
264      : base(original, cloner) {
265    }
266
267    public MeanSum()
268      : base("MeanSum", "Sum of two functions") {
269    }
270    [StorableHook(HookType.AfterDeserialization)]
271    private void AfterDeserialization() {
272    }
273
274    public override IDeepCloneable Clone(Cloner cloner) {
275      return new MeanSum(this, cloner);
276    }
277  }
278
279  [StorableClass]
280  public sealed class MeanMask : Symbol, IDimensionSymbol {
281    [Storable]
282    public double MaskingProbability { get; set; }
283
284    public override int MinimumArity {
285      get { return 1; }
286    }
287    public override int MaximumArity {
288      get { return 1; }
289    }
290    [Storable]
291    public int Dimension { get; set; }
292
293    [StorableConstructor]
294    private MeanMask(bool deserializing) : base(deserializing) { }
295    private MeanMask(MeanMask original, Cloner cloner)
296      : base(original, cloner) {
297      MaskingProbability = original.MaskingProbability;
298      Dimension = original.Dimension;
299    }
300
301    public MeanMask(int dimension)
302      : base("MeanMask", "Mask some dimensions of the data") {
303      this.Dimension = dimension;
304      MaskingProbability = 0.2;
305    }
306    [StorableHook(HookType.AfterDeserialization)]
307    private void AfterDeserialization() {
308    }
309
310    public override ISymbolicExpressionTreeNode CreateTreeNode() {
311      return new MeanMaskTreeNode(this);
312    }
313    public override IDeepCloneable Clone(Cloner cloner) {
314      return new MeanMask(this, cloner);
315    }
316  }
317
318  #endregion
319
320  #region covariance function terminals
321  [StorableClass]
322  public sealed class CovConst : Symbol {
323    public override int MinimumArity {
324      get { return 0; }
325    }
326    public override int MaximumArity {
327      get { return 0; }
328    }
329    [StorableConstructor]
330    private CovConst(bool deserializing) : base(deserializing) { }
331    private CovConst(CovConst original, Cloner cloner)
332      : base(original, cloner) {
333    }
334
335    public CovConst()
336      : base("CovConst", "Covariance for constant functions") {
337    }
338    [StorableHook(HookType.AfterDeserialization)]
339    private void AfterDeserialization() {
340    }
341
342    public override ISymbolicExpressionTreeNode CreateTreeNode() {
343      return new CovConstTreeNode();
344    }
345    public override IDeepCloneable Clone(Cloner cloner) {
346      return new CovConst(this, cloner);
347    }
348  }
349
350  [StorableClass]
351  public sealed class CovNoise : Symbol {
352    public override int MinimumArity {
353      get { return 0; }
354    }
355    public override int MaximumArity {
356      get { return 0; }
357    }
358    [StorableConstructor]
359    private CovNoise(bool deserializing) : base(deserializing) { }
360    private CovNoise(CovNoise original, Cloner cloner)
361      : base(original, cloner) {
362    }
363
364    public CovNoise()
365      : base("CovNoise", "Noise covariance function") {
366    }
367    [StorableHook(HookType.AfterDeserialization)]
368    private void AfterDeserialization() {
369    }
370
371    public override ISymbolicExpressionTreeNode CreateTreeNode() {
372      return new CovNoiseTreeNode();
373    }
374    public override IDeepCloneable Clone(Cloner cloner) {
375      return new CovNoise(this, cloner);
376    }
377  }
378
379  [StorableClass]
380  public sealed class CovLin : Symbol {
381    public override int MinimumArity {
382      get { return 0; }
383    }
384    public override int MaximumArity {
385      get { return 0; }
386    }
387    [StorableConstructor]
388    private CovLin(bool deserializing) : base(deserializing) { }
389    private CovLin(CovLin original, Cloner cloner)
390      : base(original, cloner) {
391    }
392
393    public CovLin()
394      : base("CovLin", "linear covariance function") {
395    }
396    [StorableHook(HookType.AfterDeserialization)]
397    private void AfterDeserialization() {
398    }
399
400    public override ISymbolicExpressionTreeNode CreateTreeNode() {
401      return new EmptyTerminalTreeNode(this);
402    }
403    public override IDeepCloneable Clone(Cloner cloner) {
404      return new CovLin(this, cloner);
405    }
406  }
407  [StorableClass]
408  public sealed class CovLinArd : Symbol, IDimensionSymbol {
409    public override int MinimumArity {
410      get { return 0; }
411    }
412    public override int MaximumArity {
413      get { return 0; }
414    }
415
416    [Storable]
417    public int Dimension { get; set; }
418
419    [StorableConstructor]
420    private CovLinArd(bool deserializing) : base(deserializing) { }
421    private CovLinArd(CovLinArd original, Cloner cloner)
422      : base(original, cloner) {
423      Dimension = original.Dimension;
424    }
425
426    public CovLinArd(int dimension)
427      : base("CovLinArd", "linear covariance function with ARD") {
428      this.Dimension = dimension;
429    }
430    [StorableHook(HookType.AfterDeserialization)]
431    private void AfterDeserialization() {
432    }
433
434    public override ISymbolicExpressionTreeNode CreateTreeNode() {
435      return new CovLinArdTreeNode(this);
436    }
437    public override IDeepCloneable Clone(Cloner cloner) {
438      return new CovLinArd(this, cloner);
439    }
440  }
441  [StorableClass]
442  public sealed class CovSeArd : Symbol, IDimensionSymbol {
443    public override int MinimumArity {
444      get { return 0; }
445    }
446    public override int MaximumArity {
447      get { return 0; }
448    }
449
450    [Storable]
451    public int Dimension { get; set; }
452
453    [StorableConstructor]
454    private CovSeArd(bool deserializing) : base(deserializing) { }
455    private CovSeArd(CovSeArd original, Cloner cloner)
456      : base(original, cloner) {
457      Dimension = original.Dimension;
458    }
459
460    public CovSeArd(int dimension)
461      : base("CovSeArd", "full squared exponential covariance function with ARD") {
462      this.Dimension = dimension;
463    }
464    [StorableHook(HookType.AfterDeserialization)]
465    private void AfterDeserialization() {
466    }
467
468    public override ISymbolicExpressionTreeNode CreateTreeNode() {
469      return new CovSeArdTreeNode(this);
470    }
471    public override IDeepCloneable Clone(Cloner cloner) {
472      return new CovSeArd(this, cloner);
473    }
474  }
475  [StorableClass]
476  public sealed class CovSeIso : Symbol {
477    public override int MinimumArity {
478      get { return 0; }
479    }
480    public override int MaximumArity {
481      get { return 0; }
482    }
483
484    [StorableConstructor]
485    private CovSeIso(bool deserializing) : base(deserializing) { }
486    private CovSeIso(CovSeIso original, Cloner cloner)
487      : base(original, cloner) {
488    }
489
490    public CovSeIso()
491      : base("CovSeIso", "diagonal squared exponential covariance function") {
492    }
493    [StorableHook(HookType.AfterDeserialization)]
494    private void AfterDeserialization() {
495    }
496
497    public override ISymbolicExpressionTreeNode CreateTreeNode() {
498      return new CovSeIsoTreeNode(this);
499    }
500    public override IDeepCloneable Clone(Cloner cloner) {
501      return new CovSeIso(this, cloner);
502    }
503  }
504
505  [StorableClass]
506  public sealed class CovMatern : Symbol {
507    [Storable]
508    public int D { get; set; }
509
510    public override int MinimumArity {
511      get { return 0; }
512    }
513    public override int MaximumArity {
514      get { return 0; }
515    }
516
517    [StorableConstructor]
518    private CovMatern(bool deserializing) : base(deserializing) { }
519    private CovMatern(CovMatern original, Cloner cloner)
520      : base(original, cloner) {
521      D = original.D;
522    }
523
524    public CovMatern(int d)
525      : base("CovMatern", "Matern covariance function") {
526      this.D = d;
527    }
528    [StorableHook(HookType.AfterDeserialization)]
529    private void AfterDeserialization() {
530    }
531
532    public override ISymbolicExpressionTreeNode CreateTreeNode() {
533      return new CovMaternTreeNode(this);
534    }
535    public override IDeepCloneable Clone(Cloner cloner) {
536      return new CovMatern(this, cloner);
537    }
538  }
539
540  [StorableClass]
541  public sealed class CovPeriodic : Symbol {
542    public override int MinimumArity {
543      get { return 0; }
544    }
545    public override int MaximumArity {
546      get { return 0; }
547    }
548
549    [Storable]
550    private double? period;
551    public double? Period {
552      get { return period; }
553    }
554
555
556    [StorableConstructor]
557    private CovPeriodic(bool deserializing) : base(deserializing) { }
558    private CovPeriodic(CovPeriodic original, Cloner cloner)
559      : base(original, cloner) {
560      period = original.period;
561    }
562
563    public CovPeriodic(double? period = null)
564      : base("CovPeriodic", "Periodic covariance function") {
565      this.period = period;
566    }
567    [StorableHook(HookType.AfterDeserialization)]
568    private void AfterDeserialization() {
569    }
570
571    public override ISymbolicExpressionTreeNode CreateTreeNode() {
572      return new CovPeriodicTreeNode(this);
573    }
574    public override IDeepCloneable Clone(Cloner cloner) {
575      return new CovPeriodic(this, cloner);
576    }
577  }
578  [StorableClass]
579  public sealed class CovRQArd : Symbol, IDimensionSymbol {
580    public override int MinimumArity {
581      get { return 0; }
582    }
583    public override int MaximumArity {
584      get { return 0; }
585    }
586
587    [Storable]
588    public int Dimension { get; set; }
589
590    [StorableConstructor]
591    private CovRQArd(bool deserializing) : base(deserializing) { }
592    private CovRQArd(CovRQArd original, Cloner cloner)
593      : base(original, cloner) {
594      Dimension = original.Dimension;
595    }
596
597    public CovRQArd(int dimension)
598      : base("CovRQArd", "full rational quadratic covariance function with ARD") {
599      this.Dimension = dimension;
600    }
601    [StorableHook(HookType.AfterDeserialization)]
602    private void AfterDeserialization() {
603    }
604
605    public override ISymbolicExpressionTreeNode CreateTreeNode() {
606      return new CovRQArdTreeNode(this);
607    }
608    public override IDeepCloneable Clone(Cloner cloner) {
609      return new CovRQArd(this, cloner);
610    }
611  }
612  [StorableClass]
613  public sealed class CovRQIso : Symbol {
614    public override int MinimumArity {
615      get { return 0; }
616    }
617    public override int MaximumArity {
618      get { return 0; }
619    }
620
621    [StorableConstructor]
622    private CovRQIso(bool deserializing) : base(deserializing) { }
623    private CovRQIso(CovRQIso original, Cloner cloner)
624      : base(original, cloner) {
625    }
626
627    public CovRQIso()
628      : base("CovRQIso", "Rational quadratic covariance function") {
629    }
630    [StorableHook(HookType.AfterDeserialization)]
631    private void AfterDeserialization() {
632    }
633
634    public override ISymbolicExpressionTreeNode CreateTreeNode() {
635      return new CovRQisoTreeNode(this);
636    }
637    public override IDeepCloneable Clone(Cloner cloner) {
638      return new CovRQIso(this, cloner);
639    }
640  }
641  #endregion
642
643  #region covariance function functions
644  [StorableClass]
645  public sealed class CovSum : Symbol {
646    public override int MinimumArity {
647      get { return 3; }
648    }
649    public override int MaximumArity {
650      get { return 3; }
651    }
652
653    [StorableConstructor]
654    private CovSum(bool deserializing) : base(deserializing) { }
655    private CovSum(CovSum original, Cloner cloner)
656      : base(original, cloner) {
657    }
658
659    public CovSum()
660      : base("CovSum", "Sum of two covariance functions") {
661    }
662    [StorableHook(HookType.AfterDeserialization)]
663    private void AfterDeserialization() {
664    }
665
666    public override IDeepCloneable Clone(Cloner cloner) {
667      return new CovSum(this, cloner);
668    }
669  }
670  [StorableClass]
671  public sealed class CovProd : Symbol {
672    public override int MinimumArity {
673      get { return 3; }
674    }
675    public override int MaximumArity {
676      get { return 3; }
677    }
678
679    [StorableConstructor]
680    private CovProd(bool deserializing) : base(deserializing) { }
681    private CovProd(CovProd original, Cloner cloner)
682      : base(original, cloner) {
683    }
684
685    public CovProd()
686      : base("CovProd", "Product of two covariance functions") {
687    }
688    [StorableHook(HookType.AfterDeserialization)]
689    private void AfterDeserialization() {
690    }
691
692    public override IDeepCloneable Clone(Cloner cloner) {
693      return new CovProd(this, cloner);
694    }
695  }
696  [StorableClass]
697  public sealed class CovScale : Symbol {
698
699    public override int MinimumArity {
700      get { return 1; }
701    }
702    public override int MaximumArity {
703      get { return 1; }
704    }
705
706    [StorableConstructor]
707    private CovScale(bool deserializing) : base(deserializing) { }
708    private CovScale(CovScale original, Cloner cloner)
709      : base(original, cloner) {
710    }
711
712    public CovScale()
713      : base("CovScale", "Scale a covariance function") {
714    }
715    [StorableHook(HookType.AfterDeserialization)]
716    private void AfterDeserialization() {
717    }
718
719    public override ISymbolicExpressionTreeNode CreateTreeNode() {
720      return new CovScaleTreeNode(this);
721    }
722
723    public override IDeepCloneable Clone(Cloner cloner) {
724      return new CovScale(this, cloner);
725    }
726  }
727  [StorableClass]
728  public sealed class CovMask : Symbol, IDimensionSymbol {
729    [Storable]
730    public double MaskingProbability { get; set; }
731
732    public override int MinimumArity {
733      get { return 1; }
734    }
735    public override int MaximumArity {
736      get { return 1; }
737    }
738    [Storable]
739    public int Dimension { get; set; }
740
741    [StorableConstructor]
742    private CovMask(bool deserializing) : base(deserializing) { }
743    private CovMask(CovMask original, Cloner cloner)
744      : base(original, cloner) {
745      this.Dimension = original.Dimension;
746      this.MaskingProbability = original.MaskingProbability;
747    }
748
749    public CovMask(int dimension)
750      : base("CovMask", "Mask some dimensions of the data") {
751      this.Dimension = dimension;
752      MaskingProbability = 0.2;
753    }
754    [StorableHook(HookType.AfterDeserialization)]
755    private void AfterDeserialization() {
756    }
757
758    public override ISymbolicExpressionTreeNode CreateTreeNode() {
759      return new CovMaskTreeNode(this);
760    }
761    public override IDeepCloneable Clone(Cloner cloner) {
762      return new CovMask(this, cloner);
763    }
764  }
765  #endregion
766
767  #region likelihood functions
768  [StorableClass]
769  public sealed class LikGauss : Symbol {
770
771    public override int MinimumArity {
772      get { return 0; }
773    }
774    public override int MaximumArity {
775      get { return 0; }
776    }
777
778    [StorableConstructor]
779    private LikGauss(bool deserializing) : base(deserializing) { }
780    private LikGauss(LikGauss original, Cloner cloner)
781      : base(original, cloner) {
782    }
783
784    public LikGauss()
785      : base("LikGauss", "Gaussian likelihood function") {
786    }
787    [StorableHook(HookType.AfterDeserialization)]
788    private void AfterDeserialization() {
789    }
790
791    public override ISymbolicExpressionTreeNode CreateTreeNode() {
792      return new LikGaussTreeNode(this);
793    }
794
795    public override IDeepCloneable Clone(Cloner cloner) {
796      return new LikGauss(this, cloner);
797    }
798  }
799  #endregion
800}
Note: See TracBrowser for help on using the repository browser.