Пример #1
0
        public static void Main(string[] args)
        {
            Network net = new Network();

            IntVariable X = new IntVariable(net, 0, 708);
            IntVariable Y = new IntVariable(net, 0, 708);
            IntVariable Z = new IntVariable(net, 0, 708);
            IntVariable T = new IntVariable(net, 0, 708);

            X.Add(Y).Add(Z).Add(T).Equals(711);
            X.Ge(Y);
            Y.Ge(Z);
            Z.Ge(T);
            X.Multiply(Y).Multiply(Z).Multiply(T).Equals(711000000);
            Solver solver = new DefaultSolver(net);

            for (solver.Start(); solver.WaitNext(); solver.Resume())
            {
                Solution solution = solver.Solution;
                Console.Out.WriteLine();
                Console.Out.WriteLine(" {0:F} + {1:F} + {2:F} + {3:F} = {4:F} ",
                                      solution.GetIntValue(X) / 100.0, solution.GetIntValue(Y) / 100.0,
                                      solution.GetIntValue(Z) / 100.0, solution.GetIntValue(T) / 100.0, 7.11);
            }
            solver.Stop();
            Console.ReadLine();
        }
Пример #2
0
    public static void Main(String[] args)
    {
        Network     net = new Network();
        IntVariable J   = new IntVariable(net, 0, 9);
        IntVariable A   = new IntVariable(net, 0, 9);
        IntVariable V   = new IntVariable(net, 0, 9);
        IntVariable C   = new IntVariable(net, 0, 9);
        IntVariable R   = new IntVariable(net, 0, 9);
        IntVariable E   = new IntVariable(net, 0, 9);
        IntVariable M   = new IntVariable(net, 0, 9);
        IntVariable S   = new IntVariable(net, 0, 9);
        IntVariable O   = new IntVariable(net, 0, 9);
        IntVariable L   = new IntVariable(net, 0, 9);

        new NotEquals(net, new IntVariable[] { J, A, V, C, R, E, M, S, O, L });
        J.NotEquals(0);
        C.NotEquals(0);
        S.NotEquals(0);
        IntVariable JAVA   = J.Multiply(1000).Add(A.Multiply(100)).Add(V.Multiply(10)).Add(A);
        IntVariable CREAM  = C.Multiply(10000).Add(R.Multiply(1000)).Add(E.Multiply(100)).Add(A.Multiply(10)).Add(M);
        IntVariable SOLVER = S.Multiply(100000).Add(O.Multiply(10000)).Add(L.Multiply(1000)).Add(V.Multiply(100)).Add(E.Multiply(10)).Add(R);

        JAVA.Add(CREAM).Equals(SOLVER);
        Solver solver = new DefaultSolver(net);

        for (solver.Start(); solver.WaitNext(); solver.Resume())
        {
            Solution solution = solver.Solution;
            Console.Out.WriteLine(solution.GetIntValue(JAVA) + " + " + solution.GetIntValue(CREAM) + " = " + solution.GetIntValue(SOLVER));
        }
        solver.Stop();
        Console.ReadLine();
    }
Пример #3
0
    public static void Main(String[] args)
    {
        // Create a constraint network
        Network net = new Network();
        // Declare variables
        IntVariable x = new IntVariable(net);
        IntVariable y = new IntVariable(net);

        // x >= 0
        x.Ge(0);
        // y >= 0
        y.Ge(0);
        // x + y == 7
        x.Add(y).Equals(7);
        // 2x + 4y == 20
        x.Multiply(2).Add(y.Multiply(4)).Equals(20);
        // Solve the problem
        Solver solver = new DefaultSolver(net);

        /*Solution solution = solver.findAll(Solution);
         * int xv = solution.GetIntValue(x);
         * int yv = solution.GetIntValue(y);
         * Console.Out.WriteLine("x = " + xv + ", y = " + yv);
         */

        for (solver.Start(); solver.WaitNext(); solver.Resume())
        {
            Solution solution = solver.Solution;
            int      xv       = solution.GetIntValue(x);
            int      yv       = solution.GetIntValue(y);
            Console.Out.WriteLine("x8 = " + xv + ", y = " + yv);
        }
        solver.Stop();


        //solver.findAll(new FirstStepHandler(x, y));
        Console.In.ReadLine();
    }