Changeset 2012
- Timestamp:
- 06/04/09 19:14:48 (16 years ago)
- Location:
- trunk/sources
- Files:
-
- 5 edited
Legend:
- Unmodified
- Added
- Removed
-
TabularUnified trunk/sources/HeuristicLab.CEDMA.Server/3.3/DispatcherBase.cs ¶
r2000 r2012 40 40 public abstract class DispatcherBase : IDispatcher { 41 41 private IStore store; 42 private DataSet dataset; 43 42 44 public DispatcherBase(IStore store) { 43 45 this.store = store; … … 45 47 46 48 public IAlgorithm GetNextJob() { 47 // find and select a dataset 48 var dataSetVar = new HeuristicLab.CEDMA.DB.Interfaces.Variable("DataSet"); 49 var dataSetQuery = new Statement[] { 50 new Statement(dataSetVar, Ontology.PredicateInstanceOf, Ontology.TypeDataSet) 51 }; 52 53 Entity[] datasets = store.Query("?DataSet <" + Ontology.PredicateInstanceOf.Uri + "> <" + Ontology.TypeDataSet.Uri + "> .", 0, 100) 54 .Select(x => (Entity)x.Get("DataSet")) 55 .ToArray(); 56 57 // no datasets => do nothing 58 if (datasets.Length == 0) return null; 59 60 Entity dataSetEntity = SelectDataSet(datasets); 61 DataSet dataSet = new DataSet(store, dataSetEntity); 62 63 int targetVariable = SelectTargetVariable(dataSetEntity, dataSet.Problem.AllowedTargetVariables.ToArray()); 64 IAlgorithm selectedAlgorithm = SelectAlgorithm(dataSetEntity, targetVariable, dataSet.Problem.LearningTask); 65 string targetVariableName = dataSet.Problem.GetVariableName(targetVariable); 49 if (dataset == null) { 50 var datasetEntities = store.Query("?DataSet <" + Ontology.PredicateInstanceOf.Uri + "> <" + Ontology.TypeDataSet.Uri + "> .", 0, 1) 51 .Select(x => (Entity)x.Get("DataSet")); 52 if (datasetEntities.Count() == 0) return null; 53 dataset = new DataSet(store, datasetEntities.ElementAt(0)); 54 } 55 int targetVariable = SelectTargetVariable(dataset.Problem.AllowedTargetVariables.ToArray()); 56 IAlgorithm selectedAlgorithm = SelectAlgorithm(targetVariable, dataset.Problem.LearningTask); 57 string targetVariableName = dataset.Problem.GetVariableName(targetVariable); 66 58 67 59 if (selectedAlgorithm != null) { 68 SetProblemParameters(selectedAlgorithm, data Set.Problem, targetVariable);60 SetProblemParameters(selectedAlgorithm, dataset.Problem, targetVariable); 69 61 } 70 62 return selectedAlgorithm; 71 63 } 72 64 73 public abstract Entity SelectDataSet(Entity[] datasets); 74 public abstract int SelectTargetVariable(Entity dataSet, int[] targetVariables); 75 public abstract IAlgorithm SelectAlgorithm(Entity dataSet, int targetVariable, LearningTask learningTask); 65 public abstract int SelectTargetVariable(int[] targetVariables); 66 public abstract IAlgorithm SelectAlgorithm(int targetVariable, LearningTask learningTask); 76 67 77 68 private void SetProblemParameters(IAlgorithm algo, Problem problem, int targetVariable) { -
TabularUnified trunk/sources/HeuristicLab.CEDMA.Server/3.3/GridExecuter.cs ¶
r1922 r2012 53 53 } 54 54 55 public GridExecuter(IDispatcher dispatcher, IStore store, string gridUrl) : base(dispatcher, store) { 55 public GridExecuter(IDispatcher dispatcher, IStore store, string gridUrl) 56 : base(dispatcher, store) { 56 57 this.jobManager = new JobManager(gridUrl); 58 activeAlgorithms = new Dictionary<WaitHandle, IAlgorithm>(); 57 59 jobManager.Reset(); 58 60 } … … 115 117 int i = 0; 116 118 foreach (IAlgorithm a in activeAlgorithms.Values) { 117 retVal[i++] = "Target-Variable: " + a.TargetVariable + " " + a.Description;119 retVal[i++] = a.Name + " " + a.Dataset.GetVariableName(a.TargetVariable); 118 120 } 119 121 return retVal; -
TabularUnified trunk/sources/HeuristicLab.CEDMA.Server/3.3/HiveExecuter.cs ¶
r1922 r2012 120 120 int i = 0; 121 121 foreach (IAlgorithm a in activeAlgorithms.Values) { 122 retVal[i++] = "Target-Variable: " + a.TargetVariable + " " + a.Description;122 retVal[i++] = a.Name + " " + a.Dataset.GetVariableName(a.TargetVariable); 123 123 } 124 124 return retVal; -
TabularUnified trunk/sources/HeuristicLab.CEDMA.Server/3.3/SimpleDispatcher.cs ¶
r1873 r2012 41 41 private Random random; 42 42 private IStore store; 43 private Dictionary< Entity, Dictionary<int, List<string>>> finishedAndDispatchedRuns;43 private Dictionary<int, List<string>> finishedAndDispatchedRuns; 44 44 45 45 public SimpleDispatcher(IStore store) … … 47 47 this.store = store; 48 48 random = new Random(); 49 finishedAndDispatchedRuns = new Dictionary< Entity, Dictionary<int, List<string>>>();49 finishedAndDispatchedRuns = new Dictionary<int, List<string>>(); 50 50 PopulateFinishedRuns(); 51 51 } 52 52 53 public override IAlgorithm SelectAlgorithm( Entity dataSetEntity,int targetVariable, LearningTask learningTask) {53 public override IAlgorithm SelectAlgorithm(int targetVariable, LearningTask learningTask) { 54 54 DiscoveryService ds = new DiscoveryService(); 55 55 IAlgorithm[] algos = ds.GetInstances<IAlgorithm>(); … … 58 58 case LearningTask.Regression: { 59 59 var regressionAlgos = algos.Where(a => (a as IClassificationAlgorithm) == null && (a as ITimeSeriesAlgorithm) == null); 60 selectedAlgorithm = ChooseDeterministic( dataSetEntity,targetVariable, regressionAlgos) ?? ChooseStochastic(regressionAlgos);60 selectedAlgorithm = ChooseDeterministic(targetVariable, regressionAlgos) ?? ChooseStochastic(regressionAlgos); 61 61 break; 62 62 } 63 63 case LearningTask.Classification: { 64 64 var classificationAlgos = algos.Where(a => (a as IClassificationAlgorithm) != null); 65 selectedAlgorithm = ChooseDeterministic( dataSetEntity,targetVariable, classificationAlgos) ?? ChooseStochastic(classificationAlgos);65 selectedAlgorithm = ChooseDeterministic(targetVariable, classificationAlgos) ?? ChooseStochastic(classificationAlgos); 66 66 break; 67 67 } 68 68 case LearningTask.TimeSeries: { 69 69 var timeSeriesAlgos = algos.Where(a => (a as ITimeSeriesAlgorithm) != null); 70 selectedAlgorithm = ChooseDeterministic( dataSetEntity,targetVariable, timeSeriesAlgos) ?? ChooseStochastic(timeSeriesAlgos);70 selectedAlgorithm = ChooseDeterministic(targetVariable, timeSeriesAlgos) ?? ChooseStochastic(timeSeriesAlgos); 71 71 break; 72 72 } 73 73 } 74 74 if (selectedAlgorithm != null) { 75 AddDispatchedRun( dataSetEntity,targetVariable, selectedAlgorithm.Name);75 AddDispatchedRun(targetVariable, selectedAlgorithm.Name); 76 76 } 77 77 return selectedAlgorithm; 78 78 } 79 79 80 private IAlgorithm ChooseDeterministic( Entity dataSetEntity,int targetVariable, IEnumerable<IAlgorithm> algos) {80 private IAlgorithm ChooseDeterministic(int targetVariable, IEnumerable<IAlgorithm> algos) { 81 81 var deterministicAlgos = algos 82 82 .Where(a => (a as IStochasticAlgorithm) == null) 83 .Where(a => AlgorithmFinishedOrDispatched( dataSetEntity,targetVariable, a.Name) == false);83 .Where(a => AlgorithmFinishedOrDispatched(targetVariable, a.Name) == false); 84 84 85 85 if (deterministicAlgos.Count() == 0) return null; … … 93 93 } 94 94 95 public override Entity SelectDataSet(Entity[] datasets) { 96 return datasets[random.Next(datasets.Length)]; 97 } 98 99 public override int SelectTargetVariable(Entity dataSet, int[] targetVariables) { 95 public override int SelectTargetVariable(int[] targetVariables) { 100 96 return targetVariables[random.Next(targetVariables.Length)]; 101 97 } 102 98 103 99 private void PopulateFinishedRuns() { 100 var datasetEntity = store 101 .Query( 102 "?Dataset <" + Ontology.PredicateInstanceOf + "> <" + Ontology.TypeDataSet + "> .", 0, 1) 103 .Select(x => (Entity)x.Get("Dataset")).ElementAt(0); 104 DataSet ds = new DataSet(store, datasetEntity); 105 104 106 var result = store 105 .Query("?DataSet <" + Ontology.PredicateInstanceOf.Uri + "> <" + Ontology.TypeDataSet.Uri + "> ." + Environment.NewLine + 106 "?DataSet <" + Ontology.PredicateHasModel + "> ?Model ." + Environment.NewLine + 107 .Query( 107 108 "?Model <" + Ontology.TargetVariable + "> ?TargetVariable ." + Environment.NewLine + 108 109 "?Model <" + Ontology.AlgorithmName + "> ?AlgoName .", 109 110 0, 1000) 110 .Select(x => new Resource[] { ( Entity)x.Get("DataSet"), (Literal)x.Get("TargetVariable"), (Literal)x.Get("AlgoName") });111 .Select(x => new Resource[] { (Literal)x.Get("TargetVariable"), (Literal)x.Get("AlgoName") }); 111 112 112 113 foreach (Resource[] row in result) { 113 Entity dataset = (Entity)row[0]; 114 int targetVariable = (int)((Literal)row[1]).Value; 115 string algoName = (string)((Literal)row[2]).Value; 116 if (!AlgorithmFinishedOrDispatched(dataset, targetVariable, algoName)) 117 AddDispatchedRun(dataset, targetVariable, algoName); 114 string targetVariable = (string)((Literal)row[0]).Value; 115 string algoName = (string)((Literal)row[1]).Value; 116 117 int targetVariableIndex = ds.Problem.Dataset.GetVariableIndex(targetVariable); 118 if (!AlgorithmFinishedOrDispatched(targetVariableIndex, algoName)) 119 AddDispatchedRun(targetVariableIndex, algoName); 118 120 } 119 121 } 120 122 121 private void AddDispatchedRun( Entity dataSetEntity,int targetVariable, string algoName) {122 if (!finishedAndDispatchedRuns.ContainsKey( dataSetEntity)) {123 finishedAndDispatchedRuns[ dataSetEntity] = new Dictionary<int, List<string>>();123 private void AddDispatchedRun(int targetVariable, string algoName) { 124 if (!finishedAndDispatchedRuns.ContainsKey(targetVariable)) { 125 finishedAndDispatchedRuns[targetVariable] = new List<string>(); 124 126 } 125 if (!finishedAndDispatchedRuns[dataSetEntity].ContainsKey(targetVariable)) { 126 finishedAndDispatchedRuns[dataSetEntity][targetVariable] = new List<string>(); 127 } 128 finishedAndDispatchedRuns[dataSetEntity][targetVariable].Add(algoName); 127 finishedAndDispatchedRuns[targetVariable].Add(algoName); 129 128 } 130 129 131 private bool AlgorithmFinishedOrDispatched( Entity dataSetEntity,int targetVariable, string algoName) {130 private bool AlgorithmFinishedOrDispatched(int targetVariable, string algoName) { 132 131 return 133 finishedAndDispatchedRuns.ContainsKey(dataSetEntity) && 134 finishedAndDispatchedRuns[dataSetEntity].ContainsKey(targetVariable) && 135 finishedAndDispatchedRuns[dataSetEntity][targetVariable].Contains(algoName); 132 finishedAndDispatchedRuns.ContainsKey(targetVariable) && 133 finishedAndDispatchedRuns[targetVariable].Contains(algoName); 136 134 } 137 135 } -
TabularUnified trunk/sources/HeuristicLab.DataAnalysis/3.2/Dataset.cs ¶
r1786 r2012 120 120 } 121 121 122 public int GetVariableIndex(string variableName) { 123 for (int i = 0; i < variableNames.Length; i++) { 124 if (variableNames[i].Equals(variableName)) return i; 125 } 126 throw new ArgumentException("The variable name " + variableName + " was not found."); 127 } 128 122 129 public void SetVariableName(int variableIndex, string name) { 123 130 variableNames[variableIndex] = name; 124 131 } 125 132 126 127 133 public override IView CreateView() { 128 134 return new DatasetView(this); 129 135 } 130 136 137 #region persistence 131 138 public override object Clone(IDictionary<Guid, object> clonedObjects) { 132 139 Dataset clone = new Dataset(); … … 256 263 return xs; 257 264 } 265 #endregion 258 266 259 267 public double GetMean(int column) {
Note: See TracChangeset
for help on using the changeset viewer.