using System; using System.Collections.Generic; using System.Linq; using System.Text; using HeuristicLab.Data; using HeuristicLab.Services.Optimization.ControllerService.Model; using HeuristicLab.Optimization; using HeuristicLab.Encodings.PermutationEncoding; using HeuristicLab.Core; namespace HeuristicLab.Services.Optimization.ControllerService { public interface IScenarioMapper { void MapScenario(OptimizationScenario scenario, IAlgorithm algorithm); } public static class HLMapper { public static DoubleValue ConvertToDoubleValue(Parameter parameter) { var dv = parameter.Value as DecimalValue; return new DoubleValue(dv.Value); } public static Permutation ConvertToPermutation(Parameter parameter) { double[] input = (parameter.Value as DecimalVector).Value; int[] arr = new int[input.Length]; for (int i = 0; i < input.Length; i++) { arr[i] = Convert.ToInt32(input[i]); } var valueObj = new HeuristicLab.Encodings.PermutationEncoding.Permutation(Encodings.PermutationEncoding.PermutationTypes.RelativeUndirected, arr); return valueObj; } public static DoubleMatrix ConvertToDoubleMatrix(Parameter parameter) { var matrix = parameter.Value as DecimalMatrix; // TODO: Check for empty matrices double[,] data = new double[matrix.Value.Length, matrix.Value[0].Length]; for (int i=0; i < matrix.Value.Length; i++) { for (int j=0; j < matrix.Value[i].Length; j++) { data[i,j] = matrix.Value[i][j]; } } return new DoubleMatrix(data); } public static HeuristicLab.Data.BoolValue ConvertToBoolValue(Parameter parameter) { return new HeuristicLab.Data.BoolValue((parameter.Value as HeuristicLab.Services.Optimization.ControllerService.Model.BoolValue).Value); } public static IntValue ConvertToIntValue(Parameter parameter) { return new IntValue((int)(parameter.Value as DecimalValue).Value); } public static PercentValue ConvertToPercentValue(Parameter parameter) { return new PercentValue((parameter.Value as DecimalValue).Value / 100); } public static string GetStringValue(Parameter parameter) { return (parameter.Value as HeuristicLab.Services.Optimization.ControllerService.Model.TypeValue).Value; } public static T FindInItemSet(Core.IItemSet items, Parameter what) where T : class,Core.INamedItem { return items.FirstOrDefault((entry) => { return entry.Name == (what.Value as HeuristicLab.Services.Optimization.ControllerService.Model.TypeValue).Value; }); } public static T FindOperator(IProblem problem, Parameter what) where T : IOperator { return problem.Operators.OfType().FirstOrDefault((item) => { return item.ItemName == (what.Value as HeuristicLab.Services.Optimization.ControllerService.Model.TypeValue).Value; }); } } }