using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using HeuristicLab.Common; using HeuristicLab.Random; namespace HeuristicLab.Problems.Instances.DataAnalysis { public class Feynman16 : FeynmanDescriptor{ public override string Name { get { return "Feynman I.14.4 U = 1/2*k_spring*x^2"; } } protected override string TargetVariable { get { return "U"; } } protected override string[] VariableNames { get { return new string[] { "k_spring", "x", "U"}; } } protected override string[] AllowedInputVariables { get { return new string[] {"k_spring", "x"}; } } public int Seed { get; private set; } public Feynman16() : this((int)System.DateTime.Now.Ticks) { } public Feynman16(int seed) { Seed = seed; } protected override List> GenerateValues() { var rand = new MersenneTwister((uint)Seed); var data = new List>(); var k_spring = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList(); var x = ValueGenerator.GenerateUniformDistributedValues(rand.Next(), TestPartitionEnd, 1, 5).ToList(); var U = new List(); data.Add(k_spring); data.Add(x); data.Add(U); for (var i = 0; i < k_spring.Count; i++) { var res = 1.0 / 2 * k_spring[i] * Math.Pow(x[i], 2); U.Add(res); } return data; } } }