Ограничить оптимизацию SciPy целыми числами - PullRequest
0 голосов
/ 04 февраля 2020

Я использую функции оптимизации SciPy (в частности, shgo()), чтобы оптимизировать мою проблему. Прямо сейчас мне удается найти правильное решение, однако я бы хотел немного улучшить его.

Моя функция - решение проблемы NLU. По сути, у меня есть предложение токена, и для каждого слова у меня есть потенциальная интерпретация. Для каждой комбинации я могу применить правила грамматики черного ящика, которые приведут к результату.

Проблема в том, что с точки зрения сложности это может иметь катастрофические последствия, поскольку O(exp(n)).

По этой причине я использую алгоритм оптимизации shgo() (или аналогичные вещи), который до сих пор дает мне хорошие результаты, единственное, что функция минимизации использует действительные значения вместо целых, но мои параметры целые (слово 1 = интерпретация 2, слово 2 = интерпретация 1, ..., слово N = интерпретация I).

В конце, для некоторых вариантов, которые являются довольно очевидными (1 интерпретация или меньше для каждого слова), требуется 170 прогонов потому что он пытается найти точное значение, в то время как он на самом деле исследует вещи в диапазоне [0, 1 [что на самом деле все то же самое для меня.

Я хотел бы сделать целочисленные шаги, но после игры с различными Параметры немного, я не мог найти, как сказать минимизатору иметь меньшие шаги. Даже если оно не является целым числом, просто остановить его, когда он находится на расстоянии 0,5 от решения, было бы замечательным улучшением.

Редактировать: вы можете взглянуть на код , если Вы хотите.

Спасибо!

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