Beispiel #1
0
        public override HoudiniOutcome PerformHoudiniInference(int stage = 0,
                                                               IEnumerable <int> completedStages           = null,
                                                               Dictionary <string, bool> initialAssignment = null)
        {
            this.NotifyStart(program, houdiniConstants.Count);

            currentHoudiniState = new HoudiniState(BuildWorkList(program), BuildAssignment(houdiniConstants));

            if (initialAssignment != null)
            {
                foreach (var v in currentHoudiniState.Assignment.Keys.ToList())
                {
                    currentHoudiniState.Assignment[v] = initialAssignment[v.Name];
                }
            }

            if (refutedSharedAnnotations.Count > 0)
            {
                foreach (var v in currentHoudiniState.Assignment.Keys.ToList())
                {
                    if (refutedSharedAnnotations.ContainsKey(v.Name))
                    {
                        currentHoudiniState.Assignment[v] = false;
                    }
                }
            }

            foreach (Implementation impl in vcgenFailures)
            {
                currentHoudiniState.addToBlackList(impl.Name);
            }

            while (currentHoudiniState.WorkQueue.Count > 0)
            {
                this.NotifyIteration();

                currentHoudiniState.Implementation = currentHoudiniState.WorkQueue.Peek();
                this.NotifyImplementation(currentHoudiniState.Implementation);

                HoudiniSession session;
                this.houdiniSessions.TryGetValue(currentHoudiniState.Implementation, out session);
                HoudiniVerifyCurrent(session, stage, completedStages);
            }

            this.NotifyEnd(true);
            Dictionary <string, bool> assignment = new Dictionary <string, bool>();

            foreach (var x in currentHoudiniState.Assignment)
            {
                assignment[x.Key.Name] = x.Value;
            }
            currentHoudiniState.Outcome.assignment = assignment;
            return(currentHoudiniState.Outcome);
        }
        public override HoudiniOutcome PerformHoudiniInference(int stage = 0, 
            IEnumerable<int> completedStages = null,
            Dictionary<string, bool> initialAssignment = null)
        {
            this.NotifyStart(program, houdiniConstants.Count);

              currentHoudiniState = new HoudiniState(BuildWorkList(program), BuildAssignment(houdiniConstants));

              if (initialAssignment != null) {
            foreach (var v in currentHoudiniState.Assignment.Keys.ToList()) {
              currentHoudiniState.Assignment[v] = initialAssignment[v.Name];
            }
              }

              if (refutedSharedAnnotations.Count > 0) {
            foreach (var v in currentHoudiniState.Assignment.Keys.ToList()) {
              if (refutedSharedAnnotations.ContainsKey(v.Name)) {
            currentHoudiniState.Assignment[v] = false;
              }
            }
              }

              foreach (Implementation impl in vcgenFailures) {
            currentHoudiniState.addToBlackList(impl.Name);
              }

              while (currentHoudiniState.WorkQueue.Count > 0) {
            this.NotifyIteration();

            currentHoudiniState.Implementation = currentHoudiniState.WorkQueue.Peek();
            this.NotifyImplementation(currentHoudiniState.Implementation);

            HoudiniSession session;
            this.houdiniSessions.TryGetValue(currentHoudiniState.Implementation, out session);
            HoudiniVerifyCurrent(session, stage, completedStages);
              }

              this.NotifyEnd(true);
              Dictionary<string, bool> assignment = new Dictionary<string, bool>();
              foreach (var x in currentHoudiniState.Assignment)
            assignment[x.Key.Name] = x.Value;
              currentHoudiniState.Outcome.assignment = assignment;
              return currentHoudiniState.Outcome;
        }