Использование Google OR-Tools для ищущего цели в C#? - PullRequest
0 голосов
/ 16 апреля 2020

Я пытаюсь закодировать искатель целей с несколькими переменными в C#. Основная идея состоит в том, чтобы иметь набор переменных от x_1 до x_n, которые могут быть изменены решателем, поэтому целевая функция f (x) максимально приближена к заданному значению Z.

Пока что я ' В основном мы использовали GLOP_LinearSolver, который способен только минимизировать или максимизировать целевую функцию. Чтобы обойти это, я хотел минимизировать абсолютный квадрат f (x) -Z, но GLOP_LinearSolver не включает абсолютное значение или квадратный оператор (из моего понимания ни один из решателей OR-Tools не делает).

Мой вопрос: возможно ли реализовать эту цель с помощью Google OR-Tools? Если да: что бы обойти мою проблему? Если нет: какой еще пакет я могу использовать?

1 Ответ

1 голос
/ 16 апреля 2020

Целевая функция

 min |f(x) - Z|

может быть переформулирована следующим образом:

 min d1 + d2
     f(x) + d1 - d2 = Z
     d1, d2 ≥ 0

Пока f(x) линейно, ее можно подавать в любой решатель LP.

d1 и d2 - положительные и отрицательные отклонения или провалы. Мы минимизируем отклонения, поэтому получаем f (x) как можно ближе к Z. Обратите внимание, что в оптимальном решении только один из d1, d2 может быть ненулевым (не оба). Например, если f (x) = 10 и Z = 8, то d1 = 0, d2 = 2. Если f (x) = 7 и Z = 8, то d1 = 1, d2 = 0.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...