CPLEX использует ограничения if then с оптимизатором CP в C# - PullRequest
0 голосов
/ 07 марта 2020

Пожалуйста, помогите мне, если кто-нибудь может решить эту проблему, и я был бы очень признателен. Если имеется транспортное средство, которое может транспортировать материал от машины 1 к машине 2 или от машины 4 к машине 3, это означает, что есть два необязательных интервала (названных V12 и V43) для этого интервала (названных V). Однако, если предыдущий интервал работы работал на машине 1, а следующий интервал работы работал на машине 2, в качестве альтернативного интервала можно выбрать только V12. Это означает, что мне нужно сделать ограничение вроде

if (presenceOf(V12)) =>
   presenceOf(operation[x][1].machine==1) && presenceOf(operation[x][2].machine == 2)

1 Ответ

1 голос
/ 08 марта 2020

в C# у вас нет перегрузки оператора, поэтому вы должны полагаться на

  • cplex.IfThen for =>
  • cplex.Ge для> =
  • cplex.Eq для ==

и т. д.

См. пример foodmanufact.cs в CPLEX_Studio1210 \ cplex \ examples \ src \ cs

FoodManufact.cs реализует решение проблемы планирования производства пищевых продуктов, хорошо известное из учебника по моделированию HP Williams.

Если вы хотите вызвать OPL из C#, вы можете взглянуть на примеры в

CPLEX_Studio1210 \ OPL \ Examples \ opl_interfaces \ делает tnet

...