コード例 #1
0
ファイル: CpModel.cs プロジェクト: tariqhamid/or-tools
        public Constraint AddAutomata(
            IEnumerable <IntVar> vars,
            long starting_state,
            IEnumerable <Tuple <long, long, long> > transitions,
            IEnumerable <long> final_states)
        {
            Constraint ct = new Constraint(model_);
            AutomataConstraintProto aut = new AutomataConstraintProto();

            foreach (IntVar var in vars)
            {
                aut.Vars.Add(var.Index);
            }
            aut.StartingState = starting_state;
            foreach (long f in final_states)
            {
                aut.FinalStates.Add(f);
            }
            foreach (Tuple <long, long, long> transition in transitions)
            {
                aut.TransitionHead.Add(transition.Item1);
                aut.TransitionLabel.Add(transition.Item2);
                aut.TransitionTail.Add(transition.Item3);
            }

            ct.Proto.Automata = aut;
            return(ct);
        }
コード例 #2
0
ファイル: CpModel.cs プロジェクト: tariqhamid/or-tools
        public Constraint AddAutomata(IEnumerable <IntVar> vars,
                                      long starting_state,
                                      long[,] transitions,
                                      IEnumerable <long> final_states)
        {
            Constraint ct = new Constraint(model_);
            AutomataConstraintProto aut = new AutomataConstraintProto();

            foreach (IntVar var in vars)
            {
                aut.Vars.Add(var.Index);
            }
            aut.StartingState = starting_state;
            foreach (long f in final_states)
            {
                aut.FinalStates.Add(f);
            }
            for (int i = 0; i < transitions.GetLength(0); ++i)
            {
                aut.TransitionTail.Add(transitions[i, 0]);
                aut.TransitionLabel.Add(transitions[i, 1]);
                aut.TransitionHead.Add(transitions[i, 2]);
            }

            ct.Proto.Automata = aut;
            return(ct);
        }