Free cookie consent management tool by TermsFeed Policy Generator

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

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

#1967: added CovNN symbol and tree node

File size: 22.8 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  [StorableClass]
505  public sealed class CovNn : Symbol {
506    public override int MinimumArity {
507      get { return 0; }
508    }
509    public override int MaximumArity {
510      get { return 0; }
511    }
512
513    [StorableConstructor]
514    private CovNn(bool deserializing) : base(deserializing) { }
515    private CovNn(CovNn original, Cloner cloner)
516      : base(original, cloner) {
517    }
518
519    public CovNn()
520      : base("CovNn", "neural network covariance function") {
521    }
522    [StorableHook(HookType.AfterDeserialization)]
523    private void AfterDeserialization() {
524    }
525
526    public override ISymbolicExpressionTreeNode CreateTreeNode() {
527      return new CovNnTreeNode(this);
528    }
529    public override IDeepCloneable Clone(Cloner cloner) {
530      return new CovNn(this, cloner);
531    }
532  }
533
534  [StorableClass]
535  public sealed class CovMatern : Symbol {
536    [Storable]
537    public int D { get; set; }
538
539    public override int MinimumArity {
540      get { return 0; }
541    }
542    public override int MaximumArity {
543      get { return 0; }
544    }
545
546    [StorableConstructor]
547    private CovMatern(bool deserializing) : base(deserializing) { }
548    private CovMatern(CovMatern original, Cloner cloner)
549      : base(original, cloner) {
550      D = original.D;
551    }
552
553    public CovMatern(int d)
554      : base("CovMatern", "Matern covariance function") {
555      this.D = d;
556    }
557    [StorableHook(HookType.AfterDeserialization)]
558    private void AfterDeserialization() {
559    }
560
561    public override ISymbolicExpressionTreeNode CreateTreeNode() {
562      return new CovMaternTreeNode(this);
563    }
564    public override IDeepCloneable Clone(Cloner cloner) {
565      return new CovMatern(this, cloner);
566    }
567  }
568
569  [StorableClass]
570  public sealed class CovPeriodic : Symbol {
571    public override int MinimumArity {
572      get { return 0; }
573    }
574    public override int MaximumArity {
575      get { return 0; }
576    }
577
578    [Storable]
579    private double? period;
580    public double? Period {
581      get { return period; }
582    }
583
584
585    [StorableConstructor]
586    private CovPeriodic(bool deserializing) : base(deserializing) { }
587    private CovPeriodic(CovPeriodic original, Cloner cloner)
588      : base(original, cloner) {
589      period = original.period;
590    }
591
592    public CovPeriodic(double? period = null)
593      : base("CovPeriodic", "Periodic covariance function") {
594      this.period = period;
595    }
596    [StorableHook(HookType.AfterDeserialization)]
597    private void AfterDeserialization() {
598    }
599
600    public override ISymbolicExpressionTreeNode CreateTreeNode() {
601      return new CovPeriodicTreeNode(this);
602    }
603    public override IDeepCloneable Clone(Cloner cloner) {
604      return new CovPeriodic(this, cloner);
605    }
606  }
607  [StorableClass]
608  public sealed class CovRQArd : Symbol, IDimensionSymbol {
609    public override int MinimumArity {
610      get { return 0; }
611    }
612    public override int MaximumArity {
613      get { return 0; }
614    }
615
616    [Storable]
617    public int Dimension { get; set; }
618
619    [StorableConstructor]
620    private CovRQArd(bool deserializing) : base(deserializing) { }
621    private CovRQArd(CovRQArd original, Cloner cloner)
622      : base(original, cloner) {
623      Dimension = original.Dimension;
624    }
625
626    public CovRQArd(int dimension)
627      : base("CovRQArd", "full rational quadratic covariance function with ARD") {
628      this.Dimension = dimension;
629    }
630    [StorableHook(HookType.AfterDeserialization)]
631    private void AfterDeserialization() {
632    }
633
634    public override ISymbolicExpressionTreeNode CreateTreeNode() {
635      return new CovRQArdTreeNode(this);
636    }
637    public override IDeepCloneable Clone(Cloner cloner) {
638      return new CovRQArd(this, cloner);
639    }
640  }
641  [StorableClass]
642  public sealed class CovRQIso : Symbol {
643    public override int MinimumArity {
644      get { return 0; }
645    }
646    public override int MaximumArity {
647      get { return 0; }
648    }
649
650    [StorableConstructor]
651    private CovRQIso(bool deserializing) : base(deserializing) { }
652    private CovRQIso(CovRQIso original, Cloner cloner)
653      : base(original, cloner) {
654    }
655
656    public CovRQIso()
657      : base("CovRQIso", "Rational quadratic covariance function") {
658    }
659    [StorableHook(HookType.AfterDeserialization)]
660    private void AfterDeserialization() {
661    }
662
663    public override ISymbolicExpressionTreeNode CreateTreeNode() {
664      return new CovRQisoTreeNode(this);
665    }
666    public override IDeepCloneable Clone(Cloner cloner) {
667      return new CovRQIso(this, cloner);
668    }
669  }
670  #endregion
671
672  #region covariance function functions
673  [StorableClass]
674  public sealed class CovSum : Symbol {
675    public override int MinimumArity {
676      get { return 3; }
677    }
678    public override int MaximumArity {
679      get { return 3; }
680    }
681
682    [StorableConstructor]
683    private CovSum(bool deserializing) : base(deserializing) { }
684    private CovSum(CovSum original, Cloner cloner)
685      : base(original, cloner) {
686    }
687
688    public CovSum()
689      : base("CovSum", "Sum of two covariance functions") {
690    }
691    [StorableHook(HookType.AfterDeserialization)]
692    private void AfterDeserialization() {
693    }
694
695    public override IDeepCloneable Clone(Cloner cloner) {
696      return new CovSum(this, cloner);
697    }
698  }
699  [StorableClass]
700  public sealed class CovProd : Symbol {
701    public override int MinimumArity {
702      get { return 3; }
703    }
704    public override int MaximumArity {
705      get { return 3; }
706    }
707
708    [StorableConstructor]
709    private CovProd(bool deserializing) : base(deserializing) { }
710    private CovProd(CovProd original, Cloner cloner)
711      : base(original, cloner) {
712    }
713
714    public CovProd()
715      : base("CovProd", "Product of two covariance functions") {
716    }
717    [StorableHook(HookType.AfterDeserialization)]
718    private void AfterDeserialization() {
719    }
720
721    public override IDeepCloneable Clone(Cloner cloner) {
722      return new CovProd(this, cloner);
723    }
724  }
725  [StorableClass]
726  public sealed class CovScale : Symbol {
727
728    public override int MinimumArity {
729      get { return 1; }
730    }
731    public override int MaximumArity {
732      get { return 1; }
733    }
734
735    [StorableConstructor]
736    private CovScale(bool deserializing) : base(deserializing) { }
737    private CovScale(CovScale original, Cloner cloner)
738      : base(original, cloner) {
739    }
740
741    public CovScale()
742      : base("CovScale", "Scale a covariance function") {
743    }
744    [StorableHook(HookType.AfterDeserialization)]
745    private void AfterDeserialization() {
746    }
747
748    public override ISymbolicExpressionTreeNode CreateTreeNode() {
749      return new CovScaleTreeNode(this);
750    }
751
752    public override IDeepCloneable Clone(Cloner cloner) {
753      return new CovScale(this, cloner);
754    }
755  }
756  [StorableClass]
757  public sealed class CovMask : Symbol, IDimensionSymbol {
758    [Storable]
759    public double MaskingProbability { get; set; }
760
761    public override int MinimumArity {
762      get { return 1; }
763    }
764    public override int MaximumArity {
765      get { return 1; }
766    }
767    [Storable]
768    public int Dimension { get; set; }
769
770    [StorableConstructor]
771    private CovMask(bool deserializing) : base(deserializing) { }
772    private CovMask(CovMask original, Cloner cloner)
773      : base(original, cloner) {
774      this.Dimension = original.Dimension;
775      this.MaskingProbability = original.MaskingProbability;
776    }
777
778    public CovMask(int dimension)
779      : base("CovMask", "Mask some dimensions of the data") {
780      this.Dimension = dimension;
781      MaskingProbability = 0.2;
782    }
783    [StorableHook(HookType.AfterDeserialization)]
784    private void AfterDeserialization() {
785    }
786
787    public override ISymbolicExpressionTreeNode CreateTreeNode() {
788      return new CovMaskTreeNode(this);
789    }
790    public override IDeepCloneable Clone(Cloner cloner) {
791      return new CovMask(this, cloner);
792    }
793  }
794  #endregion
795
796  #region likelihood functions
797  [StorableClass]
798  public sealed class LikGauss : Symbol {
799
800    public override int MinimumArity {
801      get { return 0; }
802    }
803    public override int MaximumArity {
804      get { return 0; }
805    }
806
807    [StorableConstructor]
808    private LikGauss(bool deserializing) : base(deserializing) { }
809    private LikGauss(LikGauss original, Cloner cloner)
810      : base(original, cloner) {
811    }
812
813    public LikGauss()
814      : base("LikGauss", "Gaussian likelihood function") {
815    }
816    [StorableHook(HookType.AfterDeserialization)]
817    private void AfterDeserialization() {
818    }
819
820    public override ISymbolicExpressionTreeNode CreateTreeNode() {
821      return new LikGaussTreeNode(this);
822    }
823
824    public override IDeepCloneable Clone(Cloner cloner) {
825      return new LikGauss(this, cloner);
826    }
827  }
828  #endregion
829}
Note: See TracBrowser for help on using the repository browser.