Free cookie consent management tool by TermsFeed Policy Generator

source: branches/OaaS/HeuristicLab.Services.Optimization.Controller/PlaceholderControllerService.cs @ 9215

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

#1888:

  • Janitor is now working as expected in Windows Azure
  • Added basic support for experiments (draggable experiments)
  • Added methods to save/read experiments from TableStorage
  • The job status can now be retrieved by using the GetTasks/GetTaskData methods
  • Added a class to convert JSON-objects to Algorithm instances
  • Web page: Added experiment button to navigation
File size: 7.5 KB
Line 
1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Text;
5using System.ServiceModel;
6using HeuristicLab.Services.Optimization.ControllerService.Interfaces;
7using HeuristicLab.Services.Optimization.ControllerService.Model;
8
9namespace HeuristicLab.Services.Optimization.ControllerService {
10  [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall, IgnoreExtensionDataObject = true)]
11  public class PlaceholderControllerService : IControllerService {
12   
13    private IList<Model.OptimizationScenario> scenarios;
14
15    private ScenarioParser parser = new ScenarioParser();
16
17    private IScenarioManager hiveManager;
18
19    public PlaceholderControllerService() {
20      /*var tsp = new Model.OptimizationScenario() { Name = "Traveling Salesman Problem" };
21      hiveManager = new HiveScenarioManager();
22      tsp.InputParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Decimal, Value = new Model.DecimalValue() { Name = "BestKnownQuality", Value = 6110.0d } });
23      tsp.InputParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.DecimalVector
24      ,Value =
25        new Model.DecimalVector() {
26          Name = "BestKnownSolution",
27          Value = new double[]{
28            0,40,38//,116,111,114,27,61,104,127,15,44,4,10,75,108,60,128,123,63,68,85,87,25,6,96,69,106,126,103,42,33,16,30,26,18,99,14,28,23,115,94,78,86,11,80,102,76,93,88,109,97,67,62,47,24,112,31,35,83,118,110,122,100,81,56,8,55,64,51,74,73,98,72,91,37,105,52,119,57,48,71,90,5,101,9,13,66,12,95,121,54,59,50,41,43,92,36,21,46,39,22,32,20,125,120,77,65,84,124,89,58,29,82,2,113,107,7,17,45,79,117,19,3,34,53,1,49,129,70
29      }}});
30      tsp.InputParameters.Items.Add(new Model.Parameter() {       
31        Type = Model.ParameterType.DecimalMatrix,
32        Value =
33          new Model.DecimalMatrix() {
34            Name = "Coordinates",
35            Value = Utility.ToJagged(new double[,] { { 334.5909245845, 161.7809319139 }, { 334.5909245845, 161.7809319139 }, { 503.8741827107, 172.8741151168 } })
36          }
37      });
38      tsp.InputParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Type, Value = new Model.TypeValue() { Name = "EvaluatorParameter", Value = "HeuristicLab.Problems.TravelingSalesman.TSPRoundedEuclideanPathEvaluator", Options = new string[] { "HeuristicLab.Problems.TravelingSalesman.TSPRoundedEuclideanPathEvaluator", "HeuristicLab.Problems.TravelingSalesman.TSPGeoPathEvaluator", "HeuristicLab.Problems.TravelingSalesman.TSPEuclideanPathEvaluator" } } });
39      //tsp.InputParameters.Add(new Model.Parameter() { Name = "SolutionCreator" });
40      tsp.InputParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Boolean, Value = new Model.BoolValue() { Name = "UseDistanceMatrix", Value = true } });
41
42      tsp.AlgorithmParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Type, Value = new Model.TypeValue() { Name = "CrossoverParameter", Value = "OrderCrossover2", Options = new string[] { "OrderCrossover2", "CosaCrossover" } } });
43      tsp.AlgorithmParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Integer, Value = new Model.DecimalValue() { Name = "Elites", Value = 1 } });
44      tsp.AlgorithmParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Integer, Value = new Model.DecimalValue() { Name = "MaximumGenerations", Value = 1000 } });//, Value = 1000});
45      tsp.AlgorithmParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Percent, Value = new Model.DecimalValue() { Name = "MutationProbability", Value = 5 } });//, Value = 5});
46      tsp.AlgorithmParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Type, Value = new Model.TypeValue() { Name = "Mutator", Value = "InversionManipulator", Options = new string[] { "InversionManipulator", "ScrambleManipulator" } } });
47      tsp.AlgorithmParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Integer, Value = new Model.DecimalValue() { Name = "PopulationSize", Value = 100 } });//, Value = 100 });
48      tsp.AlgorithmParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Integer, Value = new Model.DecimalValue() { Name = "Seed", Value = 100 } });//, Value = 100 });
49      tsp.AlgorithmParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Type, Value = new Model.TypeValue() { Name = "Selector", Value = "ProportionalSelector", Options = new string[] { "ProportionalSelector", "BestSelector" } } });
50      tsp.AlgorithmParameters.Items.Add(new Model.Parameter() { Type = Model.ParameterType.Boolean, Value = new Model.BoolValue() { Name = "SetSeedRandomly", Value = true } });//, Value = true });
51      this.scenarios = new List<Model.OptimizationScenario>() { tsp };*/     
52      //hiveManager.DispatchScenario(tsp);
53      //hiveManager = new MockupScenarioManager();
54      hiveManager = new HiveScenarioManager();
55      scenarios = parser.Scenarios;
56      //hiveManager.DispatchScenario(new User() { Username = "fschoeppl", Password = "fschoeppl" }, scenarios[0]);
57    }
58
59    public IEnumerable<Model.OptimizationScenario> GetOptimizationScenarios() {
60      return scenarios; 
61    }
62
63
64    public Model.OptimizationScenario GetOptimizationScenarioByName(string name) {
65      var scen = (from e in scenarios
66                  where e.Id == name
67                  select e).FirstOrDefault();     
68      return scen;
69    }
70
71    public bool ScheduleOptimizationScenario(Model.User user, Model.OptimizationScenario scenario, JobExecutionDetails details) {
72      hiveManager.DispatchScenario(user, scenario, details);
73      return true;
74    }
75
76    public IEnumerable<Model.Job> GetJobs(Model.User user) {
77      return hiveManager.GetJobs(user);
78    }
79
80
81    public Model.Job GetJob(Model.User user, string id) {
82      return hiveManager.GetJob(user, id);
83    }
84
85
86    public bool DeleteJob(Model.User user, string id) {
87      return hiveManager.DeleteJob(user, id);
88    }
89
90
91    public IList<Model.Run> GetJobResults(Model.User user, string id) {
92      return hiveManager.GetJobResults(user, id);
93    }
94
95
96    public bool AddHiveScenario(User user, string scenarioXml, string scenarioMapper) {
97      var scenario = parser.ParseScenarioFromXml(scenarioXml);
98      if (scenario == null) {
99        return false;
100      }     
101      var added = hiveManager.AddScenario(user, scenario.Id, scenarioXml, scenarioMapper);
102      if (added)
103        scenarios.Add(scenario);
104      return added;
105    }
106
107    public bool DeleteHiveScenario(User user, string scenarioName) {
108      var scen = GetOptimizationScenarioByName(scenarioName);
109      if (scen != null) {
110        scenarios.Remove(scen);
111        return hiveManager.DeleteScenario(user, scenarioName);
112      }
113      return false;
114    }
115
116    public IEnumerable<string> GetOptimizationScenarioNames() {
117      return (from e in scenarios
118              select e.Id).AsEnumerable();     
119    }
120
121
122    public bool SaveExperiment(User user, Experiment experiment) {
123      return hiveManager.SaveExperiment(user, experiment);
124    }
125
126
127    public IEnumerable<string> GetExperiments(User user) {
128      return hiveManager.GetExperiments(user);
129    }
130
131
132    public bool DeleteExperiment(User user, string experiment) {
133      return hiveManager.DeleteExperiment(user, experiment);
134    }
135
136
137    public Job GetTasks(User u, string jobId) {
138      return hiveManager.GetTasks(u, jobId);
139    }
140
141    public Task GetTaskData(User u, string jobId, string taskId) {
142      return hiveManager.GetTaskData(u, jobId, taskId);
143    }
144  }
145}
Note: See TracBrowser for help on using the repository browser.