/// <summary> /// Saves the results of research analyze. /// </summary> protected void SaveResearch() { if (result.EnsembleResults.Count == 0 || result.EnsembleResults[0] == null) { StatusInfo = new ResearchStatusInfo(ResearchStatus.Failed, StatusInfo.CompletedStepsCount + 1); return; } result.ResearchID = ResearchID; result.ResearchName = ResearchName; result.ResearchType = GetResearchType(); result.ModelType = modelType; result.RealizationCount = realizationCount; result.Size = result.EnsembleResults[0].NetworkSize; result.Edges = result.EnsembleResults[0].EdgesCount; result.Date = DateTime.Now; result.ResearchParameterValues = ResearchParameterValues; result.GenerationParameterValues = GenerationParameterValues; Storage.Save(result); StatusInfo = new ResearchStatusInfo(ResearchStatus.Completed, StatusInfo.CompletedStepsCount + 1); CustomLogger.Write("Research - " + ResearchName + ". Result is SAVED"); result.Clear(); CustomLogger.Write("Research - " + ResearchName + ". Result is CLEARED."); }
public override void StopResearch() { currentManager.Cancel(); StatusInfo = new ResearchStatusInfo(ResearchStatus.Stopped, StatusInfo.CompletedStepsCount); Logger.Write("Research ID - " + ResearchID.ToString() + ". Research - " + ResearchName + ". STOPPED EVOLUTION RESEARCH."); }
/// <summary> /// Force stops the research. /// </summary> public virtual void StopResearch() { currentManager.Cancel(); StatusInfo = new ResearchStatusInfo(ResearchStatus.Stopped, StatusInfo.CompletedStepsCount); CustomLogger.Write("Research ID - " + ResearchID.ToString() + ". Research - " + ResearchName + ". STOPPED " + GetResearchType() + " RESEARCH."); }
public override void StartResearch() { ValidateResearchParameters(); StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0); Logger.Write("Research ID - " + ResearchID.ToString() + ". Research - " + ResearchName + ". STARTED COLLECTION RESEARCH."); MatrixPath mp = ((MatrixPath)ResearchParameterValues[ResearchParameter.InputPath]); List <MatrixPath> matrixes = new List <MatrixPath>(); Debug.Assert((File.GetAttributes(mp.Path) & FileAttributes.Directory) == FileAttributes.Directory); foreach (string fn in Directory.GetFiles(mp.Path, "*.txt")) { MatrixPath m = new MatrixPath(); m.Path = fn; m.Size = mp.Size; matrixes.Add(m); } ResearchType rt = ResearchType.Basic; // subresearch type is not supported and is always Basic subResearches = new List <AbstractResearch>(); foreach (MatrixPath m in matrixes) { AbstractResearch r = AbstractResearch.CreateResearchByType(rt); r.ResearchName = ResearchName + "_" + Path.GetFileNameWithoutExtension(m.Path); r.GenerationType = GenerationType.Static; r.ModelType = ModelType; Debug.Assert(r.GenerationParameterValues.ContainsKey(GenerationParameter.AdjacencyMatrix)); r.GenerationParameterValues[GenerationParameter.AdjacencyMatrix] = m; r.AnalyzeOption = AnalyzeOption; string storageString = Storage.StorageString; // depracate sql storage /*if (Storage.GetStorageType() != StorageType.SQLStorage) * {*/ storageString += ResearchName; if (!Directory.Exists(storageString)) { Directory.CreateDirectory(storageString); } //} r.Storage = AbstractResultStorage.CreateStorage(Storage.GetStorageType(), storageString); r.OnUpdateResearchStatus += method; subResearches.Add(r); } if (subResearches.Count() != 0) { ++currentResearchIndex; subResearches[currentResearchIndex].StartResearch(); } }
/// <summary> /// Creates single EnsembleManagers, runs in background thread. /// </summary> public override void StartResearch() { ValidateResearchParameters(); CreateEnsembleManager(); StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0); Logger.Write("Research ID - " + ResearchID.ToString() + ". Research - " + ResearchName + ". STARTED EVOLUTION RESEARCH."); ManagerRunner r = new ManagerRunner(currentManager.Run); r.BeginInvoke(new AsyncCallback(RunCompleted), null); }
public override void StopResearch() { if (subResearches != null) { foreach (AbstractResearch r in subResearches) { r.StopResearch(); } StatusInfo = new ResearchStatusInfo(ResearchStatus.Stopped, StatusInfo.CompletedStepsCount); CustomLogger.Write("Research ID - " + ResearchID.ToString() + ". Research - " + ResearchName + ". STOPPED COLLECTION RESEARCH."); } }
/// <summary> /// Creates single EnsembleManager, runs in background thread. /// </summary> public virtual Task StartResearch() { ValidateResearchParameters(); CreateEnsembleManager(); StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0); CustomLogger.Write("Research ID - " + ResearchID.ToString() + ". Research - " + ResearchName + ". STARTED " + GetResearchType() + " RESEARCH."); return(Task.Run(() => { currentManager.Run(); RunCompleted(); })); }
private void AbstractResearch_OnUpdateNetworkStatus(Object sender, NetworkEventArgs e) { switch (e.Status) { case NetworkStatus.StepCompleted: StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, StatusInfo.CompletedStepsCount + 1); break; case NetworkStatus.Failed: StatusInfo = new ResearchStatusInfo(ResearchStatus.Failed, StatusInfo.CompletedStepsCount); break; default: Debug.Assert(false); break; } }
private void method(Object sender, ResearchEventArgs e) { ResearchStatus rs = GetSubresearchStatus(e.ResearchID); if (rs == ResearchStatus.Completed) { Interlocked.Increment(ref currentResearchIndex); if (currentResearchIndex >= subResearches.Count()) { StatusInfo = new ResearchStatusInfo(ResearchStatus.Completed, (uint)currentResearchIndex); } else { StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, StatusInfo.CompletedStepsCount + 1); subResearches[currentResearchIndex].StartResearch(); } } }
/// <summary> /// Creates multiple EnsembleManagers, running sequentially. /// </summary> public override void StartResearch() { ValidateResearchParameters(); Debug.Assert(GenerationParameterValues.ContainsKey(GenerationParameter.Probability) || GenerationParameterValues.ContainsKey(GenerationParameter.Mu)); probabilityParameter = GenerationParameterValues.ContainsKey(GenerationParameter.Probability) ? GenerationParameter.Probability : GenerationParameter.Mu; minProbability = Double.Parse(GenerationParameterValues[probabilityParameter].ToString(), CultureInfo.InvariantCulture); currentProbability = minProbability; maxProbability = Double.Parse(ResearchParameterValues[ResearchParameter.ProbabilityMax].ToString(), CultureInfo.InvariantCulture); delta = Double.Parse(ResearchParameterValues[ResearchParameter.ProbabilityDelta].ToString(), CultureInfo.InvariantCulture); StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0); Logger.Write("Research ID - " + ResearchID.ToString() + ". Research - " + ResearchName + ". STARTED Threshold RESEARCH."); StartCurrentEnsemble(); }
private void UpdateStatusesInTableAndInPanel(object sender, ResearchEventArgs e) { Guid id = e.ResearchID; ResearchStatusInfo rsi = SessionManager.GetResearchStatus(id); string status = rsi.Status.ToString() + " "; double percent = rsi.CompletedStepsCount * 100.0 / SessionManager.GetProcessStepsCount(id); status += Math.Round(percent, 1).ToString() + "%"; DataGridViewRow r = FindRowInTableById(id); Debug.Assert(r != null); r.Cells["statusColumn"].Value = status; if (GetSelectedResearchId() == id) { statusProgress.Visible = true; statusProgress.Maximum = SessionManager.GetProcessStepsCount(id); statusProgress.Value = (int)SessionManager.GetResearchStatus(id).CompletedStepsCount; } }
public override Task StartResearch() { ValidateResearchParameters(); StatusInfo = new ResearchStatusInfo(ResearchStatus.Running, 0); CustomLogger.Write("Research ID - " + ResearchID.ToString() + ". Research - " + ResearchName + ". STARTED STRUCTURAL RESEARCH."); MatrixPath mp = ((MatrixPath)ResearchParameterValues[ResearchParameter.InputPath]); List <MatrixPath> matrixes = new List <MatrixPath>(); Debug.Assert((File.GetAttributes(mp.Path) & FileAttributes.Directory) == FileAttributes.Directory); Debug.Assert(Directory.GetFiles(mp.Path, "*.txt").Count() == 1); MatrixPath m = new MatrixPath(); m.Path = Directory.GetFiles(mp.Path, "*.txt")[0]; m.Size = mp.Size; matrixes.Add(m); NetworkInfoToRead mr = FileManager.Read(m.Path, m.Size); // TODO FIX Debug.Assert(mr is MatrixInfoToRead); string storageString = Storage.StorageString; // depraceting sql storage /*if (Storage.GetStorageType() != StorageType.SQLStorage) * {*/ storageString += ResearchName; if (!Directory.Exists(storageString)) { Directory.CreateDirectory(storageString); } //} foreach (string fn in Directory.GetFiles(mp.Path, "*.sm")) { int[] s; FileManager.ReadSubnetworkMatrix(fn, out s); MatrixInfoToWrite tmp = new MatrixInfoToWrite(); // TODO FIX //tmp.Matrix = CreateMatrixForSubgraph((mr as MatrixInfoToRead).Matrix, s); // Create temporary .txt files for each matrix string tmpFileName = storageString + "\\" + Path.GetFileNameWithoutExtension(fn); FileManager.Write(RandNetSettings.TracingDirectory, tmp, tmpFileName); MatrixPath sm = new MatrixPath(); sm.Path = tmpFileName + ".txt"; matrixes.Add(sm); } ResearchType rt = ResearchType.Basic; // subresearch type is not supported and is always Basic subResearches = new List <AbstractResearch>(); foreach (MatrixPath p in matrixes) { AbstractResearch r = AbstractResearch.CreateResearchByType(rt); r.ResearchName = ResearchName + "_" + Path.GetFileNameWithoutExtension(p.Path); r.GenerationType = GenerationType.Static; r.ModelType = ModelType; Debug.Assert(r.GenerationParameterValues.ContainsKey(GenerationParameter.AdjacencyMatrix)); r.GenerationParameterValues[GenerationParameter.AdjacencyMatrix] = p; r.AnalyzeOption = AnalyzeOption; r.Storage = AbstractResultStorage.CreateStorage(Storage.GetStorageType(), storageString); r.OnUpdateResearchStatus += method; subResearches.Add(r); } if (subResearches.Count() != 0) { ++currentResearchIndex; return(subResearches[currentResearchIndex].StartResearch()); } return(Task.Run(() => {})); }