1
using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.SolverFoundation.Services;

namespace Test
{
    class Program
    {
        static void Main(string[] args)
        {
            var context= SolverContext.GetContext();
            var model = context.CreateModel();

            var index = new Set(Domain.IntegerRange(0, 6), "index");

            var x = new Decision(Domain.IntegerRange(0, 5), "x", index);
            model.AddDecision(x);

            // When I uncomment the following line, values ends
            // up with only 3 elements instead of 7 as expected

            // model.AddConstraint("constraint", x[0] + x[1] + x[2] == 2);

            model.AddGoal("objective", GoalKind.Minimize, Model.Sum(Model.ForEach(index, i => Model.Power(x[i] - 2, 2))));

            context.Solve();
            var values = x.GetValues().ToArray();
        }
    }
}

このコードをそのまま実行すると、Solver Foundation はそれぞれが 2 に等しい 7 つの値を正しく計算します。

コメントを外すmodel.AddConstraint("constraint", x[0] + x[1] + x[2] == 2)と、最後の値には 0、1、1 の 3 つの値しか含まれていません。残りの値が含まれていないのはなぜですか?

どうしたの?

4

1 に答える 1