示例#1
0
        public void CreateCommodityGraphs()
        {
            lock (objectToLock)
            {
                log.DebugFormat(
                    "CreateCommodityGraphs: {0}",
                    meapContext.Commodities.Count);

                foreach (KeyValuePair <long, Commodity> p in meapContext.Commodities)
                {
                    long      commodityId = p.Key;
                    Commodity commodity   = p.Value;

                    DAG Gi = new("Gi");
                    DAG.MakeCommodity(meapContext.TArbSeqCFG, commodity.sNodeId, commodity.tNodeId, Gi);

                    commodity.Gi = Gi;
                }

                ICommonOptions       commonOptions       = configuration.Get <ICommonOptions>();
                ICheckDataStructures checkDataStructures = configuration.Get <ICheckDataStructures>();

                if (commonOptions.CheckDataStructures)
                {
                    checkDataStructures.CheckCommoditiesHaveNoSingleNodes(meapContext);
                }

                ExcludeDefs();

                if (commonOptions.CheckDataStructures)
                {
                    checkDataStructures.CheckCommoditiesHaveNoSingleNodes(meapContext);
                }
            }
        }
示例#2
0
        protected OperationsBase(ICommonOptions options)
        {
            Options   = options;
            Directory = new DirectoryInfo(Options.Folder ?? ".");

            if (!Directory.Exists)
            {
                throw new InvalidDataException($"Missing folder {Directory.Name}");
            }
        }
示例#3
0
        private static int RunActionAndReturnExitCode(ICommonOptions opts, Action action)
        {
            if (opts.Debug)
            {
                Debugger.Launch();
                Debugger.Break();
            }

            action();

            Log.CloseAndFlush();

            return(0);
        }
        public void Run(string[] args)
        {
            AppStatistics  appStatistics = configuration.Get <AppStatistics>();
            ICommonOptions commonOptions = configuration.Get <ICommonOptions>();

            try
            {
                Ensure.That(ThreadPool.SetMinThreads(32, 2)).IsTrue();

                IVerificator verificator = configuration.Get <IntegerFactVerificator>();
                verificator.Run();
            }
            catch (Exception exception)
            {
                appStatistics.ThereWereErrors = true;
                log.Error(exception.ToString());
            }
        }
        public override void Run(uint[] states)
        {
            log.InfoFormat("mu: {0}", meapContext.mu);

            CreateTASGBuilder();

            tasgBuilder.CreateTArbitrarySeqGraph();
            tasgBuilder.CreateTArbSeqCFG(states);
            meapContext.TArbSeqCFG.Trace();

            if (meapContext.TArbSeqCFG.IsTrivial())
            {
                return;
            }

            ComputeNodeVLevels(meapContext.TArbSeqCFG);

            ICommonOptions       commonOptions       = configuration.Get <ICommonOptions>();
            ICheckDataStructures checkDataStructures = configuration.Get <ICheckDataStructures>();

            if (commonOptions.CheckDataStructures)
            {
                checkDataStructures.CheckTASGHasNoBackAndCrossEdges(meapContext.TArbSeqCFG);
            }

            log.DebugFormat("states = {0}", AppHelper.ArrayToString(states));

            IDebugOptions debugOptions = configuration.Get <IDebugOptions>();

            if (!debugOptions.RunRDA)
            {
                return;
            }

            ComputeCommodities();

            DetermineIfExistsTCPath determineIfExistsTCSeq = new(meapContext);

            determineIfExistsTCSeq.RunForMultipleTapeSegs();

            CopyResultFromTapeSegContext();
        }
        public void Run(string[] args)
        {
            AppStatistics  appStatistics = configuration.Get <AppStatistics>();
            ICommonOptions commonOptions = configuration.Get <ICommonOptions>();

            try
            {
                MathKernelConnector mathKernelConnector = configuration.Get <MathKernelConnector>();

                mathKernelConnector.LoadMathKernel();
                Ensure.That(ThreadPool.SetMinThreads(32, 2)).IsTrue();

                IVerificator verificator = configuration.Get <OrdinaryVerificator>();
                verificator.Run();

                mathKernelConnector.UnloadMathKernel();
            }
            catch (Exception exception)
            {
                appStatistics.ThereWereErrors = true;
                log.Error(exception.ToString());
            }
        }
        public override void Run(uint[] states)
        {
            log.InfoFormat("mu: {0}", meapContext.mu);
            log.DebugFormat("states = {0}", AppHelper.ArrayToString(states));

            tasgBuilder.CreateTArbitrarySeqGraph();
            IDebugOptions debugOptions = configuration.Get <IDebugOptions>();

            if (!debugOptions.RunRDA)
            {
                return;
            }

            uint maxMu = meapContext.MEAPSharedContext.CPLTMInfo.PathLength;

            if (meapContext.mu < maxMu)
            {
                return;
            }

            tasgBuilder.CreateTArbSeqCFG(states);

            if (meapContext.TArbSeqCFG.IsTrivial())
            {
                return;
            }

            ICommonOptions       commonOptions       = configuration.Get <ICommonOptions>();
            ICheckDataStructures checkDataStructures = configuration.Get <ICheckDataStructures>();

            ComputeDUPairs();

            meapContext.CommoditiesBuilder = new CommoditiesBuilderFactCPLTM(meapContext);
            meapContext.CommoditiesBuilder.EnumeratePairs();
            meapContext.Commodities        = meapContext.CommoditiesBuilder.CreateCommodities();
            meapContext.CommoditiesBuilder = default !;
示例#8
0
 public DatabaseMigrator(ICommonOptions options)
 {
     this.Options = options;
 }
        public override void Run(uint[] states)
        {
            log.InfoFormat("mu: {0}", meapContext.mu);

            ITASGBuilder tasgBuilder = configuration.Get <ITASGBuilder>();

            meapContext.TASGBuilder = tasgBuilder;
            tasgBuilder.meapContext = meapContext;

            tasgBuilder.Init();
            tasgBuilder.CreateTArbitrarySeqGraph();
            tasgBuilder.CreateTArbSeqCFG(states);
            meapContext.TArbSeqCFG.Trace();

            if (meapContext.TArbSeqCFG.IsTrivial())
            {
                return;
            }

            ComputeNodeVLevels(meapContext.TArbSeqCFG);

            ICommonOptions       commonOptions       = configuration.Get <ICommonOptions>();
            ICheckDataStructures checkDataStructures = configuration.Get <ICheckDataStructures>();

            if (commonOptions.CheckDataStructures)
            {
                checkDataStructures.CheckTASGHasNoBackAndCrossEdges(meapContext.TArbSeqCFG);
            }

            meapContext.DUPairCount       = 0;
            meapContext.TConsistPairCount = 0;

            TConsistPairSetBuilderOrd tConsistPairSetBuilder = new(meapContext);

            tConsistPairSetBuilder.Run();

            log.InfoFormat("defUsePairSet: {0}", meapContext.DUPairCount);
            log.InfoFormat("TConsistPairSet: {0}", meapContext.TConsistPairCount);

            meapContext.CommoditiesBuilder = new CommoditiesBuilderOrd(meapContext);
            meapContext.CommoditiesBuilder.EnumeratePairs();

            IDebugOptions debugOptions = configuration.Get <IDebugOptions>();

            if (debugOptions.ComputeCommoditiesExplicitely)
            {
                meapContext.Commodities = meapContext.CommoditiesBuilder.CreateCommodities();
                meapContext.CommoditiesBuilder.CreateCommodityGraphs();
            }
            else
            {
                meapContext.Commodities = new SortedDictionary <long, Commodity>();
            }

            log.DebugFormat("states = {0}", AppHelper.ArrayToString(states));

            DetermineIfExistsTCPath determineIfExistsTCSeq = new(meapContext);

            determineIfExistsTCSeq.RunForMultipleTapeSegs();

            CopyResultFromTapeSegContext();
        }