public RealTester() { this.Tolerance = 1e-3; this.Attempts = 5; var vars_1 = new[] { "x" }; var vars_2 = new[] { "x", "y" }; var vars_3 = new[] { "x", "y", "z" }; RemoteFunction <double> f1 = new RealRemoteFunction(json: $"{TASKS_LOC}/Dummy/Dummy_1.json", port: 5001, field: "f"); Dictionary <string, Tuple <double, double> > a1 = vars_1.ToDictionary(k => k, k => Tuple.Create(-10.0, 10.0)); Dictionary <string, double> s1 = vars_1.ToDictionary(k => k, k => 0.0); RemoteFunction <double> f2 = new RealRemoteFunction(json: $"{TASKS_LOC}/Dummy/Dummy_2.json", port: 5002, field: "f"); Dictionary <string, Tuple <double, double> > a2 = vars_2.ToDictionary(k => k, k => Tuple.Create(-10.0, 10.0)); Dictionary <string, double> s2 = vars_2.ToDictionary(k => k, k => 0.0); RemoteFunction <double> f3 = new RealRemoteFunction(json: $"{TASKS_LOC}/Dummy/Dummy_3.json", port: 5003, field: "f"); Dictionary <string, Tuple <double, double> > a3 = vars_3.ToDictionary(k => k, k => Tuple.Create(-10.0, 10.0)); Dictionary <string, double> s3 = vars_3.ToDictionary(k => k, k => 0.0); this.TestFunctions = new[] { f1, f2, f3 }; this.Areas = new[] { a1, a2, a3 }; this.Solutions = new[] { s1, s2, s3 }; }
static RealVector RunRealVectorAlgorithm( Algorithm<RealVector, double, RealVector> algorithm, RealRemoteFunction f, Dictionary<string, Tuple<double, double>> area, string logStates) { f.Initialize(); var result = algorithm.Work(x => f.Calculate(x), area, logStates); f.Terminate(); return result; }
public static void TestRealRemoteFunction() { var f = new RealRemoteFunction(json: $"{TASKS_LOC}/Dummy/Dummy_3.json", port: 5000, field: "f"); f.Initialize(); List <double> results = new List <double>(); for (int i = 0; i < N; ++i) { var result = f.Calculate(new Dictionary <string, double>() { { "x", 1.0 }, { "y", 2.0 }, { "z", 3.0 } }); results.Add(result); } f.Terminate(); Assert.True(results.TrueForAll(_ => _ == 36.0)); }
static void Body(Options opts) { var algConfig = JObject.Parse(File.ReadAllText(opts.AlgorithmConfig)); var language = algConfig["language"].Value<string>(); var name = algConfig["algorithm"].Value<string>(); var logStates = opts.LogStates; if (string.Equals(logStates, "_none")) logStates = null; var taskConfig = JObject.Parse(File.ReadAllText(opts.TaskConfig)); var area = new Dictionary<string, Tuple<Double, Double>>(); foreach (var areaPart in taskConfig["area"]) { area.Add( areaPart["name"].Value<string>(), Tuple.Create(areaPart["min"].Value<double>(), areaPart["max"].Value<double>())); } if (string.Equals(language, "CSharp") && (string.Equals(name, "RS") || string.Equals(name, "RandomSearch"))) { var radius = algConfig["radius"].Value<double>(); var maxTime = algConfig["maxTime"].Value<double>(); var algorithm = Algorithms.CSharp.RandomSearch.CreateFixedStepRandomSearch(radius, maxTime); var f = new RealRemoteFunction(opts.TaskConfig, opts.Port, opts.Field); var result = RunRealVectorAlgorithm(algorithm, f, area, logStates); SaveRealVectorResult(result, opts); return; } if (string.Equals(language, "FSharp") && (string.Equals(name, "RS") || string.Equals(name, "RandomSearch"))) { var radius = algConfig["radius"].Value<double>(); var maxTime = algConfig["maxTime"].Value<double>(); var algorithm = Algorithms.FSharp.RandomSearch.CreateFixedStepRandomSearch(radius, maxTime); var f = new RealRemoteFunction(opts.TaskConfig, opts.Port, opts.Field); var result = RunRealVectorAlgorithm(algorithm, f, area, logStates); SaveRealVectorResult(result, opts); return; } if (string.Equals(language, "CSharp") && (string.Equals(name, "DE") || string.Equals(name, "DifferentialEvolution"))) { var populationSize = algConfig["populationSize"].Value<int>(); var weightingFactor = algConfig["weightingFactor"].Value<double>(); var crossoverRate = algConfig["crossoverRate"].Value<double>(); var maxTime = algConfig["maxTime"].Value<double>(); var algorithm = Algorithms.CSharp.DifferentialEvolution.CreateDifferentialEvolution(populationSize, weightingFactor, crossoverRate, maxTime); var f = new RealRemoteFunction(opts.TaskConfig, opts.Port, opts.Field); var result = RunRealVectorAlgorithm(algorithm, f, area, logStates); SaveRealVectorResult(result, opts); return; } throw new Exception("Unsupported Algorithm"); }