예제 #1
0
 /// <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.");
 }
예제 #2
0
 public override void StopResearch()
 {
     currentManager.Cancel();
     StatusInfo = new ResearchStatusInfo(ResearchStatus.Stopped, StatusInfo.CompletedStepsCount);
     Logger.Write("Research ID - " + ResearchID.ToString() +
                  ". Research - " + ResearchName + ". STOPPED EVOLUTION 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();
            }
        }
예제 #4
0
        /// <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);
        }
예제 #5
0
        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.");
            }
        }
예제 #6
0
        /// <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();
            }));
        }
예제 #7
0
        /// <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();
        }
예제 #8
0
        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(() => {}));
        }