Math.Min для целевой функции

Учитывая две переменные решения d1,d2, которые принимают только числа 0 и 1, если целевая функция является их суммой, мы можем выразить это как

Term t1=d1 + d2;
 model.AddGoal("goal", GoalKind.Maximize,t1);

Теперь я хочу взять меньший из них, т.е.

Я хочу написать целевую функцию, где

Math.min(d1,d2)

Как выразить здесь Math.min?


person william007    schedule 18.09.2012    source источник


Ответы (1)


Модель содержит значительный набор соответствующих математических операций в виде статических методов, например мин.

Вы можете просто написать:

Term t1 = Model.Min(d1, d2);

а ты идешь :-)

person Anders Gustafsson    schedule 18.09.2012
comment
Привет, у меня проблема. Microsoft.SolverFoundation.Services.SimplexDirective не может решить модели MINLP. Удалите эту директиву и используйте директиву, поддерживающую возможности MINLP. При использовании Model.Min я использую context.Solve(new SimplexDirective()); - person william007; 18.09.2012
comment
Если вы действительно стремитесь решить эту целевую функцию с помощью (смешанного целочисленного) линейного программирования, вам следует переформулировать ее как задачу максимина. В этом документе вы можете найти некоторые приемы, как это сделать для аналогичная минимаксная задача. В противном случае для прямой оптимизации целевых функций, включающих Min, потребуются нелинейные методы, такие как Нелдер-Мид. - person Anders Gustafsson; 18.09.2012
comment
Привет, я думаю, я получил формулу преобразования, как вы сказали. У меня есть несколько вопросов относительно преобразования целевой функции здесь, посмотрите, знаете ли вы: stackoverflow.com/questions/12482414/ - person william007; 18.09.2012