예제 #1
0
        void Initialize()
        {
            Ready = false;

            var w = Stopwatch.StartNew();

            logger.Info($"Building an obstacle monitor for '{obstacle.FriendlyName}'.");

            ITLFormula translatedFormula;

            if (obstacle.FormalSpec is Eventually e)
            {
                translatedFormula = TranslateToLtlSharp(e.Enclosed);
            }
            else
            {
                throw new NotSupportedException(
                          "Obstacles must follow the pattern F(phi) where phi is an LTL formula."
                          );
            }

            logger.Trace("Formula {0} converted to {1}", obstacle.FormalSpec, translatedFormula.Normalize());
            monitor = new ProbabilisticLTLMonitor(translatedFormula, storage);

            w.Stop();
            logger.Info("Time to build monitor: {0}ms", w.ElapsedMilliseconds);

            Run();
        }
예제 #2
0
        void Initialize()
        {
            Ready = false;

            var w = Stopwatch.StartNew();

            logger.Info($"Building a goal monitor for '{goal.FriendlyName}'.");

            ITLFormula translatedFormula;

            if (goal.FormalSpec is StrongImply si)
            {
                translatedFormula = TranslateToLtlSharp(new Imply(si.Left, si.Right));
            }
            else if (goal.FormalSpec is KAOSTools.Core.Globally g)
            {
                translatedFormula = TranslateToLtlSharp(g.Enclosed);
            }
            else
            {
                throw new NotSupportedException(
                          "Goals must follow the pattern G(phi) where phi is an LTL formula."
                          );
            }

            logger.Trace("Formula {0} converted to {1}", goal.FormalSpec, translatedFormula.Normalize());
            monitor = new ProbabilisticLTLMonitor(translatedFormula, storage);

            w.Stop();
            logger.Info("Time to build monitor: {0}ms", w.ElapsedMilliseconds);
        }