Free cookie consent management tool by TermsFeed Policy Generator

source: branches/3075_aifeynman_instances/HeuristicLab.Problems.Instances.DataAnalysis/3.3/Regression/Feynman/FeynmanLargeInstanceProvider.cs @ 17677

Last change on this file since 17677 was 17677, checked in by gkronber, 4 years ago

#3075 update class names to match file names, split problem instances into 'small' and 'large' instances with separate providers

File size: 5.0 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using HeuristicLab.Random;
5
6namespace HeuristicLab.Problems.Instances.DataAnalysis {
7  public class FeynmanLargeInstanceProvider : ArtificialRegressionInstanceProvider {
8    public override string Name {
9      get { return "'AI Feynman' Benchmark Problems (large)"; }
10    }
11
12    public override string Description {
13      get { return "Problem instances from \"AI Feynman\" paper (Feynman Symbolic Regression Database)"; }
14    }
15
16    public override Uri WebLink {
17      get { return new Uri("https://space.mit.edu/home/tegmark/aifeynman.html"); }
18    }
19
20    public override string ReferencePublication {
21      get { return "Udrescu, Silviu-Marian, and Max Tegmark. \"AI Feynman: A physics-inspired method for symbolic regression.\" Science Advances 6.16 (2020): eaay2631."; }
22    }
23
24    public int Seed { get; private set; }
25
26    public FeynmanLargeInstanceProvider() : this((int)DateTime.Now.Ticks) { }
27
28    public FeynmanLargeInstanceProvider(int seed) {
29      Seed = seed;
30    }
31
32    public override IEnumerable<IDataDescriptor> GetDataDescriptors() {
33      var descriptorList = new List<IDataDescriptor>();
34      var rand = new MersenneTwister((uint)Seed);
35
36
37      var noiseRatio = new double?[] { null, 1, 10E-2, 10E-4 };
38
39      #region types
40      var descriptorTypes = new Type[] {
41        typeof(Feynman1),
42        typeof(Feynman2),
43        typeof(Feynman3),
44        typeof(Feynman4),
45        typeof(Feynman5),
46        typeof(Feynman6),
47        typeof(Feynman7),
48        typeof(Feynman8),
49        typeof(Feynman9),
50        typeof(Feynman10),
51        typeof(Feynman11),
52        typeof(Feynman12),
53        typeof(Feynman13),
54        typeof(Feynman14),
55        typeof(Feynman15),
56        typeof(Feynman16),
57        typeof(Feynman17),
58        typeof(Feynman18),
59        typeof(Feynman19),
60        typeof(Feynman20),
61        typeof(Feynman21),
62        typeof(Feynman22),
63        typeof(Feynman23),
64        typeof(Feynman24),
65        typeof(Feynman25),
66        typeof(Feynman26),
67        typeof(Feynman27),
68        typeof(Feynman28),
69        typeof(Feynman29),
70        typeof(Feynman30),
71        typeof(Feynman31),
72        typeof(Feynman32),
73        typeof(Feynman33),
74        typeof(Feynman34),
75        typeof(Feynman35),
76        typeof(Feynman36),
77        typeof(Feynman37),
78        typeof(Feynman38),
79        typeof(Feynman39),
80        typeof(Feynman40),
81        typeof(Feynman41),
82        typeof(Feynman42),
83        typeof(Feynman43),
84        typeof(Feynman44),
85        typeof(Feynman45),
86        typeof(Feynman46),
87        typeof(Feynman47),
88        typeof(Feynman48),
89        typeof(Feynman49),
90        typeof(Feynman50),
91        typeof(Feynman51),
92        typeof(Feynman52),
93        typeof(Feynman53),
94        typeof(Feynman54),
95        typeof(Feynman55),
96        typeof(Feynman56),
97        typeof(Feynman57),
98        typeof(Feynman58),
99        typeof(Feynman59),
100        typeof(Feynman60),
101        typeof(Feynman61),
102        typeof(Feynman62),
103        typeof(Feynman63),
104        typeof(Feynman64),
105        typeof(Feynman65),
106        typeof(Feynman66),
107        typeof(Feynman67),
108        typeof(Feynman68),
109        typeof(Feynman69),
110        typeof(Feynman70),
111        typeof(Feynman71),
112        typeof(Feynman72),
113        typeof(Feynman73),
114        typeof(Feynman74),
115        typeof(Feynman75),
116        typeof(Feynman76),
117        typeof(Feynman77),
118        typeof(Feynman78),
119        typeof(Feynman79),
120        typeof(Feynman80),
121        typeof(Feynman81),
122        typeof(Feynman82),
123        typeof(Feynman83),
124        typeof(Feynman84),
125        typeof(Feynman85),
126        typeof(Feynman86),
127        typeof(Feynman87),
128        typeof(Feynman88),
129        typeof(Feynman89),
130        typeof(Feynman90),
131        typeof(Feynman91),
132        typeof(Feynman92),
133        typeof(Feynman93),
134        typeof(Feynman94),
135        typeof(Feynman95),
136        typeof(Feynman96),
137        typeof(Feynman97),
138        typeof(Feynman98),
139        typeof(Feynman99),
140        typeof(Feynman100),
141        typeof(FeynmanBonus1),
142        typeof(FeynmanBonus2),
143        typeof(FeynmanBonus3),
144        typeof(FeynmanBonus4),
145        typeof(FeynmanBonus5),
146        typeof(FeynmanBonus6),
147        typeof(FeynmanBonus7),
148        typeof(FeynmanBonus8),
149        typeof(FeynmanBonus9),
150        typeof(FeynmanBonus10),
151        typeof(FeynmanBonus11),
152        typeof(FeynmanBonus12),
153        typeof(FeynmanBonus13),
154        typeof(FeynmanBonus14),
155        typeof(FeynmanBonus15),
156        typeof(FeynmanBonus16),
157        typeof(FeynmanBonus17),
158        typeof(FeynmanBonus18),
159        typeof(FeynmanBonus19),
160        typeof(FeynmanBonus20)
161   };
162      #endregion
163
164
165      foreach (var n in noiseRatio) {
166        foreach (var type in descriptorTypes) {
167          descriptorList.Add((IDataDescriptor)Activator.CreateInstance(type, rand.Next(), 10000, 10000, n));
168        }
169      }
170      return descriptorList.ToList();
171    }
172  }
173}
Note: See TracBrowser for help on using the repository browser.