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.
Когда я раскомментирую model.AddConstraint("constraint", x[0] + x[1] + x[2] == 2)
, в конце values содержится только три значения: 0, 1 и 1. Почему он не содержит остальные значения?
В чем дело?