docplex с обратным вызовом в dropsolve

Можно ли решить модель с обратным вызовом, используя model.solve(url=url, key=api)? Я пробую пример, похожий на этот, но у обратного вызова нет эффект при вызове dropsolve.


person ooo    schedule 19.03.2020    source источник


Ответы (1)


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

Вместо этого вы можете отправить свой скрипт Python с помощью docplex в DOcplexcloud. Затем полный скрипт выполняется в облаке. В этом случае будет вызван обратный вызов. Пример можно найти в документации DOcplexcloud Python API. пример.

person Daniel Junglas    schedule 19.03.2020
comment
Тот же вопрос задан здесь: developer.ibm.com/answers/questions/531431/ Пожалуйста, не переписывайтесь. И если вы чувствуете, что должны это сделать, пожалуйста, соедините вопросы, чтобы люди не отвечали в двух местах. - person Daniel Junglas; 19.03.2020
comment
Я заметил, что в docplexcloud метод обратного вызова для tsp занимает больше времени, чем простое ограничение MTZ. Можете ли вы объяснить причину этого, или в моем наблюдении есть ошибка. - person ooo; 20.03.2020
comment
Если вы вводите все ограничения заранее, то CPLEX может использовать их в предварительном решении. Это невозможно, если они разделены в обратном вызове. Более того, если вы используете ленивые ограничения, некоторые предварительные сокращения не могут быть применены, поскольку CPLEX не видит полную модель. Это также может привести к снижению производительности. Наконец, вызов обратных вызовов курса влечет за собой некоторые накладные расходы во время выполнения. - person Daniel Junglas; 20.03.2020