Free cookie consent management tool by TermsFeed Policy Generator

source: branches/OaaS/HeuristicLab.Services.Optimization.Controller/HL/HLMapper.cs @ 9166

Last change on this file since 9166 was 9166, checked in by fschoepp, 11 years ago

#1888:

  • Model: OptimizationScenario may be a tree of algorithms (and problems)
  • Model: Renamed InputParameters to ProblemParameters (as they are the parameters of a problem)
  • Model: Added JobExecutionDetails which contain Repetitions + Group (resource to use)
  • ScenarioParser parses the new XML scenario files
  • Website + Model: You are now able to add/remove rows from a table (no JavaScript involved yet)
  • Website + Controller: Added repetitions (enables batch jobs) and group (resource to use) to OaaS which will be used by the controller to schedule the job
  • Website: Updated templates to use new model structure
  • Website + Scenarios: Added the new algorithm Benchmark Algorithm
  • Controller: Added a singleton to make the (Azure/Mockup)-DAL exchangeable
  • Controller: Added mockup classes for DAL + IScenarioManager
  • Website/Result Page: Line Diagrams will be added via JavaScript, crawling their data using AJAX
  • Website: Most configuration parameters can be set in the ServiceDefinition directly
  • Added a mockup for the Membership classes: These can be used if no network connection is available or if other parts of the app shall be tested
  • Scenarios: Updated TSP mappings to new xsd
File size: 3.1 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using HeuristicLab.Data;
6using HeuristicLab.Services.Optimization.ControllerService.Model;
7using HeuristicLab.Optimization;
8using HeuristicLab.Encodings.PermutationEncoding;
9using HeuristicLab.Core;
10
11namespace HeuristicLab.Services.Optimization.ControllerService {
12  public interface IScenarioMapper {
13    void MapScenario(OptimizationScenario scenario, out IAlgorithm algorithm);
14  }
15
16  public static class HLMapper {
17    public static DoubleValue ConvertToDoubleValue(Parameter parameter) {
18      var dv = parameter.Value as DecimalValue;
19      return new DoubleValue(dv.Value);     
20    }
21
22    public static T Create<T>(Parameter typeParameter) {
23      var type = Type.GetType((typeParameter.Value as TypeValue).Value);     
24      return (T)Activator.CreateInstance(type, null);
25    }
26
27    public static Permutation ConvertToPermutation(Parameter parameter) {
28      double[] input = (parameter.Value as DecimalVector).Value;
29      int[] arr = new int[input.Length];
30      for (int i = 0; i < input.Length; i++) {
31        arr[i] = Convert.ToInt32(input[i]);
32      }
33      var valueObj = new HeuristicLab.Encodings.PermutationEncoding.Permutation(Encodings.PermutationEncoding.PermutationTypes.RelativeUndirected, arr);
34      return valueObj;
35    }
36
37    public static DoubleMatrix ConvertToDoubleMatrix(Parameter parameter) {
38      var matrix = parameter.Value as DecimalMatrix;
39      // TODO: Check for empty matrices
40      double[,] data = new double[matrix.Value.Length, matrix.Value[0].Length];
41      for (int i=0; i < matrix.Value.Length; i++) {
42        for (int j=0; j < matrix.Value[i].Length; j++) {
43          data[i,j] = matrix.Value[i][j];
44        }
45      }
46      return new DoubleMatrix(data);
47    }
48
49    public static HeuristicLab.Data.BoolValue ConvertToBoolValue(Parameter parameter) {
50      return new HeuristicLab.Data.BoolValue((parameter.Value as HeuristicLab.Services.Optimization.ControllerService.Model.BoolValue).Value);
51    }
52
53    public static IntValue ConvertToIntValue(Parameter parameter) {
54      return new IntValue((int)(parameter.Value as DecimalValue).Value);
55    }
56
57    public static PercentValue ConvertToPercentValue(Parameter parameter) {
58      return new PercentValue((parameter.Value as DecimalValue).Value / 100);
59    }
60
61    public static string GetStringValue(Parameter parameter) {
62      return (parameter.Value as HeuristicLab.Services.Optimization.ControllerService.Model.TypeValue).Value;
63    }
64
65    public static T FindInItemSet<T>(Core.IItemSet<T> items, Parameter what) where T : class,Core.INamedItem {
66      return items.FirstOrDefault((entry) => { return entry.Name == (what.Value as HeuristicLab.Services.Optimization.ControllerService.Model.TypeValue).Value; });
67    }
68
69    public static T FindOperator<T>(IProblem problem, Parameter what) where T : IOperator {
70      return problem.Operators.OfType<T>().FirstOrDefault((item) => { return item.ItemName == (what.Value as HeuristicLab.Services.Optimization.ControllerService.Model.TypeValue).Value; });
71    }
72  }
73}
Note: See TracBrowser for help on using the repository browser.