Я пытаюсь использовать Microsoft Solver Foundation 2 для решения довольно сложной ситуации, однако я придерживаюсь UnsupportedModelException, даже когда я как можно глубже отказываюсь от модели.
Есть ли у кого-нибудь представление о том, что я делаю неправильно?
Ниже приведен минимальный пример, необходимый для воспроизведения проблемного поведения.Ограничение Microsoft Solver Foundation
var ctx = SolverContext.GetContext();
var model = ctx.CreateModel();
var someConstant = 1337.0;
var decisionA = new Decision(Domain.Real, "decisionA");
var decisionB = new Decision(Domain.Real, "decisionB");
var decisionC = new Decision(Domain.Real, "decisionC");
model.AddConstraint("ca", decisionA <= someConstant);
model.AddConstraint("cb", decisionB <= someConstant);
model.AddConstraint("cc", decisionC <= someConstant);
model.AddConstraint("mainConstraint", Model.Equal(Model.Sum(Model.Abs(decisionA), decisionB, decisionC), someConstant))
model.AddDecisions(decisionA, decisionB, decisionC);
model.AddGoal("myComplicatedGoal", GoalKind.Minimize, decisionC);
var solution = ctx.Solve();
solution.GetReport().WriteTo(Console.Out);
Console.ReadKey();
Пожалуйста, обратите внимание, что моя текущая модель должна включать в себя, после завершения несколько ограничений в виде а + б < = SomeValue, так что если что я готов сделать, в конечном счете, не пожалуйста, сообщите мне заранее. Если это так, я бы также оценил предложение какого-либо другого решателя с .NET-совместимым интерфейсом, который я мог бы использовать (только для известных коммерческих пакетов).
Заранее спасибо
Этот код работает корректно, но, к сожалению, это не полностью устраняет мою проблему. Я думаю, что проблемы, которые я испытываю, находятся на уровне моделирования (похоже, что SFS не может решить мою проблему, как я сформулировал, или я не использую ее правильно). Поскольку проблема, которую я решаю, требует квадратичных ограничений - это уже разложенная версия проблемы, которая исходит из системы квартирных уравнений - мне либо нужен способ использования квадратичных ограничений, либо трюк моделирования. – em70