public static OptimizationProblem DecodeOptimizationProblem(OptimizerService.OptimizationProblem problem) { var objectives = problem.Objectives.Select(objective => DecodeOptimizationObjective(objective)).ToList(); var instance = new OptimizationProblem( parameterSpace: DecodeHypergrid(problem.ParameterSpace), objectiveSpace: DecodeHypergrid(problem.ObjectiveSpace), objectives: objectives); if (problem.ContextSpace != null) { // A context space was provided. // instance.ContextSpace = DecodeHypergrid(problem.ContextSpace); } else { instance.ContextSpace = null; } return(instance); }
/// <summary> /// Convert optimization problem to protobuf instance. /// </summary> /// <param name="optimizationProblem"></param> /// <returns></returns> internal static OptimizerService.OptimizationProblem ToOptimizerServiceOptimizationProblem(this OptimizationProblem optimizationProblem) { var optimizerOptimizationProblem = new OptimizerService.OptimizationProblem { ParameterSpace = new OptimizerService.Hypergrid { HypergridJsonString = optimizationProblem.ParameterSpace.ToJson(), }, ContextSpace = new OptimizerService.Hypergrid { HypergridJsonString = optimizationProblem.ContextSpace != null?optimizationProblem.ContextSpace.ToJson() : string.Empty, }, ObjectiveSpace = new OptimizerService.Hypergrid { HypergridJsonString = optimizationProblem.ObjectiveSpace.ToJson(), }, }; optimizerOptimizationProblem.Objectives.AddRange(optimizationProblem.Objectives.Select(r => r.ToOptimizerServiceObjective())); return(optimizerOptimizationProblem); }