コード例 #1
0
 public void InitProcess(CalculationTask calculationTask, INetCreator netcreater)
 {
     NetMap           = netcreater.CreateNet();
     _calculationTask = calculationTask;
     SelectAB();
     _percalationResult = new List <int>(_calculationTask.CountOfIteration);
 }
コード例 #2
0
 public void InitProcess(CalculationTask calculationTask, INetCreator netcreater)
 {
     _netMap = netcreater.CreateNet();
     UseOnlyActiveNodes();
     _calculationTask = calculationTask;
     SelectAb();
     _percalationResult = new List <int>(_calculationTask.CountOfIteration);
     _random            = new Random();
 }
コード例 #3
0
 public SimpleKernel(IProcessor processor, CalculationTask calculationTask, INetCreator netcreater, IResultWriter writer, int expirementCount = 100)
 {
     for (var i = 0; i < expirementCount; i++)
     {
         processor.InitProcess(calculationTask, netcreater);
         processor.Processing();
         processor.WriteResult(writer);
         Console.WriteLine("expirement {0} success", i);
     }
 }
コード例 #4
0
 public HoleNetCreator(INetCreator netCreator, double targetAverageLinkCount)
 {
     _netCreator             = netCreator;
     _targetAverageLinkCount = targetAverageLinkCount;
 }
コード例 #5
0
ファイル: Program.cs プロジェクト: AlexBaklaev/percolation
        static void Calc(string[] userinput, double averageLinkCount)
        {
            string      netType    = Properties.Settings.Default.NetType;
            INetCreator Netcreator = null;
            IProcessor  processor;

            var path = Directory.GetCurrentDirectory() + @"\Results\";

            Directory.CreateDirectory(path);
            CalculationTask calculationTask;

            #region Select CalculationTask

            ComaSepareteFileWriter writer = null;
            switch (userinput[0])
            {
            case "4":
            {
                calculationTask = new CalculationTask(0, Nodecount, netType, Minlink, Addtomaxlinkcount, MaxVirus, PofInfective, Granica, Segmentcont, Adressdiffstrategy, Virussendstrategy, Isappend, Isadresdiff,
                                                      Iterationcount, path, percentbackupchannel);
                processor = new TrueProcessor();
                break;
            }

            case "TrueReferenceProcessor":
            {
                calculationTask = new CalculationTask(0, Nodecount, netType, Minlink, (int)averageLinkCount, MaxVirus, PofInfective, Granica, Segmentcont, Adressdiffstrategy, Virussendstrategy, Isappend, Isadresdiff,
                                                      Iterationcount, path, percentbackupchannel);
                processor = new TrueReferenceProcessor();
                break;
            }

            case "ReferenceProcessor":
            {
                calculationTask = CalculationTaskCreator.CreateForReferencesCalculator(path, Iterationcount, netType);
                var weight = FileNetLoad.ReadWeight(userinput[3], Properties.Settings.Default.DefaultConnectionWeight);

                var st = userinput[3];
                for (int i = 4; i < userinput.Length; i++)
                {
                    weight = FileNetLoad.MultiplyWeight(weight, FileNetLoad.ReadWeight(userinput[i], Properties.Settings.Default.DefaultConnectionWeight));
                    st    += "-" + userinput[i];
                }
                processor = new ReferencesProcessor(weight);
                writer    = new ComaSepareteFileWriter(Path.Combine(path, st + "_" + Properties.Settings.Default.DefaultConnectionWeight));
                break;
            }

            default:
            {
                Console.WriteLine(@"Input is not correct");
                return;
            }
            }
            #endregion
            #region Select NetBuilder
            switch (userinput[1])
            {
            case "NetBuilder":
            {
                Netcreator = new NetBuilder(calculationTask);
                break;
            }

            case "HoleNetCreator":
            {
                Netcreator = new HoleNetCreator(new NetBuilder(calculationTask), averageLinkCount);
                break;
            }

            case "FileNetLoad":
            {
                Netcreator = new FileNetLoad(userinput[2]);
                break;
            }

            default:
            {
                Console.WriteLine(@"Input is not correct");
                return;
            }
            }
            #endregion

            if (writer == null)
            {
                writer =
                    new ComaSepareteFileWriter(Path.Combine(path, calculationTask.NetType + "_" + averageLinkCount.ToString("0.00")));
            }
            var d = new SimpleKernel(processor, calculationTask, Netcreator, writer, Experementcount);
        }