using System; using System.Collections.Generic; using System.Linq; using HeuristicLab.Random; namespace HeuristicLab.Problems.Instances.DataAnalysis { public class Feynman49 : FeynmanDescriptor { public Feynman49() : this((int) DateTime.Now.Ticks) { } public Feynman49(int seed) { Seed = seed; } public override string Name { get { return "Feynman I.47.23 sqrt(gamma*pr/rho)"; } } protected override string TargetVariable { get { return "c"; } } protected override string[] VariableNames { get { return new[] {"gamma", "pr", "rho", "c"}; } } protected override string[] AllowedInputVariables { get { return new[] {"gamma", "pr", "rho"}; } } public int Seed { get; private set; } protected override List> GenerateValues() { var rand = new MersenneTwister((uint) Seed); var data = new List>(); var gamma = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList(); var pr = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList(); var rho = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList(); var c = new List(); data.Add(gamma); data.Add(pr); data.Add(rho); data.Add(c); for (var i = 0; i < gamma.Count; i++) { var res = Math.Sqrt(gamma[i] * pr[i] / rho[i]); c.Add(res); } return data; } } }