Exemplo n.º 1
0
        void UpPropagateReplacement(Obstacle obstacle, Formula f1, Formula f2)
        {
            if (visited.Contains(obstacle.Identifier))
            {
                return;
            }

            visited.Add(obstacle.Identifier);

            if (obstacle.FormalSpec != null)
            {
                Replace(obstacle, f1, f2);
            }

            foreach (var r in _model.ObstacleRefinements(x => x.SubobstacleIdentifiers.Any(y => y.Identifier == obstacle.Identifier)))
            {
                UpPropagateReplacement(r.ParentObstacle(), f1, f2);
            }

            foreach (var r in obstacle.Resolutions())
            {
                var sg = r.ResolvingGoal();
                DownPropagateReplacement(sg, f1, f2);
            }
        }
        public void Render(KAOSModel model)
        {
            //var goalsInRefinements = model.GoalRefinements ().SelectMany (x => x.SubGoals ().Union (new[] {
            //    x.ParentGoal ()
            //})).Distinct ();

            foreach (var g in model.Goals())
            {
                Render(g);
            }

            foreach (var d in model.GoalRefinements().SelectMany(x => x.DomainProperties()).Distinct())
            {
                Render(d);
            }

            foreach (var r in model.GoalRefinements())
            {
                Render(r);
            }

            foreach (var o in model.Obstacles())
            {
                Render(o);
            }

            foreach (var o in model.ObstacleRefinements())
            {
                Render(o);
            }

            foreach (var o in model.Obstructions())
            {
                Render(o);
            }

            foreach (var o in model.Resolutions())
            {
                Render(o);
            }

            foreach (var r in model.GoalAgentAssignments())
            {
                Render(r, true);
            }

            foreach (var o in model.Resolutions())
            {
                RenderAnchorArrow(o);
            }
        }
Exemplo n.º 3
0
        public ISatisfactionRate GetESR(Obstacle o)
        {
            if (obstacleCache.ContainsKey(o))
            {
                return(obstacleCache[o]);
            }

            ISatisfactionRate esr;
            var refinements = _model.ObstacleRefinements(r => r.ParentObstacleIdentifier == o.Identifier);

            if (refinements.Count() > 0)
            {
                esr = refinements.Aggregate(DoubleSatisfactionRate.ONE, (x, y) => (DoubleSatisfactionRate)x.Product((GetESR(y).OneMinus()))).OneMinus();
                _model.satisfactionRateRepository.AddObstacleSatisfactionRate(o.Identifier, esr);
            }
            else
            {
                esr = o.LatestEPS();
            }

            obstacleCache.Add(o, esr);
            return(esr);
        }
Exemplo n.º 4
0
        private void Delete(Resolution resolution, bool others = true)
        {
            Obstacle obstacle = _model.Obstacle(resolution.ObstacleIdentifier);

            _model.obstacleRepository.Remove(resolution);

            if (!others)
            {
                return;
            }

            foreach (var obstruction in obstacle.Obstructions().ToList())
            {
                _model.obstacleRepository.Remove(obstruction);
            }

            foreach (var refinement in _model.ObstacleRefinements(x => x.SubobstacleIdentifiers.Any(y => y.Identifier == obstacle.Identifier)))
            {
                foreach (var refinee in refinement.SubobstacleIdentifiers.Where(x => x.Identifier == obstacle.Identifier).ToList())
                {
                    refinement.SubobstacleIdentifiers.Remove(refinee);
                }
            }
        }