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