Вопрос

Я пытаюсь использовать Microsoft Solver Foundation 2, чтобы решить довольно сложную ситуацию, однако я застрял с неподтвержденным ModelException, даже когда я тупой как можно больше глупо.
У кого-нибудь есть идея о том, что я делаю не так?
Ниже приведен наименьший пример, необходимый для воспроизведения проблемного поведения.

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();

Пожалуйста, подумайте, что моя фактическая модель должна включать, после завершения, несколько ограничений в формеA + B.A <= quotevalue, так что если что я готов сделать в конечном итоге, не поддерживается, пожалуйста, дайте мне заранее знать. Если это так, я бы также оценил предложение какого-либо другого решателя с помощью удобного интерфейса .NET, который я мог бы использовать (только хорошо известные коммерческие пакеты, пожалуйста).

заранее спасибо

Это было полезно?

Решение

Возьмите источник из этой ссылки и попробуйте (у него есть несколько model.abs). Если он умирает, то что-то не так с вашей настройкой, и кратчайшее решение - удалить, перезагрузить и переустановить.

http://geekswithblogs.net/Cyoung/Archive/2009/02/25/129672.aspx.

Хорошо, теперь, когда вы упомянули квадратичные ограничения, хотя бы экспресс-версия определенно не поддерживает их:

http://code.msdn.microsoft.com/solverfoundation/thrad/view.aspx?threadid=2756.

Enterprise Version может, но она стоит $$$$ - если вы получили «академическое предприятие», это все еще без Guurobi Solver, поэтому, прежде чем думать о расставании от ваших денег, было бы хорошо отправить им конкретные вопросы ( http://gurobi.com/ ) И попросите некоторую гарантию в случае, если они говорят, что это справится с этим, но это не так.

Другие советы

Я думаю, вам нужно добавить решения на модель, прежде чем использовать их в ограничениях. Если вы добавите эту строку после создания решений, ваш код работает для меня:

model.AddDecisions(decisionA, decisionB, decisionC);

Натан

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top