public void Initialize() { Console.WriteLine("Initializing GeneticTensorFlowLearning by Evolution."); Console.WriteLine("Function arguments and expected result: arg1,arg2=expected result."); Console.WriteLine("Sample1: 1,2,3=6"); Console.WriteLine("Sample2: 2,3,4=24"); Console.WriteLine("When finish, type ENTER to start the GA."); m_inputs = new List <InstinctualLearningInput>(); do { var parts = Console.ReadLine().Split('='); if (parts.Length != 2) { Console.WriteLine("Max number of operations?"); m_maxOperations = Convert.ToInt32(Console.ReadLine()); break; } var arguments = parts[0].Split(','); var input = new InstinctualLearningInput( arguments.Select(a => Convert.ToDouble(a)).ToList(), Convert.ToDouble(parts[1])); m_inputs.Add(input); }while (true); m_fitness = new InstinctualLearningFitness <Environment>(m_inputs.ToArray()); }
/// <summary> /// Gets the function result. /// </summary> /// <returns>The function result.</returns> /// <param name="function">The function.</param> /// <param name="input">The arguments values and expected results of the function.</param> public double GetFunctionResult(string function, InstinctualLearningInput input) { //var func = Parser<DoubleEvaluator>.Parse(function); //var ctx = new VariableContext<DoubleEvaluator>(); //var vars = "ABCDEFGH"; //for(int i = 0;i<input.Arguments.Count;i++) //{ // ctx.AddVariable(vars.Substring(i, 1), input.Arguments[i]); //} //var result = func.Eval(ctx); var expression = new NCalc.Expression(function); for (int i = 0; i < m_parameterNames.Length; i++) { expression.Parameters.Add(m_parameterNames[i], input.Arguments[i]); } var result = expression.Evaluate(); return((double)result); //return result.Result; // return 0.0; }