using System; using System.Collections.Generic; using System.Linq; using HeuristicLab.Random; namespace HeuristicLab.Problems.Instances.DataAnalysis { public class Feynman39 : FeynmanDescriptor { public override string Name { get { return "Feynman I.38.12 4*pi*epsilon*(h/(2*pi))**2/(m*q**2)"; } } protected override string TargetVariable { get { return "r"; } } protected override string[] VariableNames { get { return new[] {"m", "q", "h", "epsilon", "r"}; } } protected override string[] AllowedInputVariables { get { return new[] {"m", "q", "h", "epsilon"}; } } public int Seed { get; private set; } public Feynman39() : this((int) DateTime.Now.Ticks) { } public Feynman39(int seed) { Seed = seed; } protected override List> GenerateValues() { var rand = new MersenneTwister((uint) Seed); var data = new List>(); var m = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList(); var q = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList(); var h = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList(); var epsilon = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList(); var r = new List(); data.Add(m); data.Add(q); data.Add(h); data.Add(epsilon); data.Add(r); for (var i = 0; i < m.Count; i++) { var res = 4 * Math.PI * epsilon[i] * Math.Pow((h[i] / (2 * Math.PI)), 2) / (m[i] * Math.Pow(q[i], 2)); r.Add(res); } return data; } } }