Я дважды запускаю ту же модель с routing.SolveFromAssignmentWithParameters(initial_solution, pywrapcp.DefaultRoutingSearchParameters())
.
Когда я даю ей initial_solution с assignment.ObjectiveValue()=1471713
, она в течение нескольких секунд улучшает цель до 1440093
и заявляет: search.cc:375] ######## NoMoreSolutions()
ОДНАКО, есть намного лучшее назначение!с assignment.ObjectiveValue()=1242107
.Я проверил, что это действительно с routing.solver().CheckAssignment()
, и действительно, это действительно.Почему решатель упустил его и почему он потребовал NoMoreSolutions
?:( Я думал, что вся идея решателя СР заключается в широком поиске всех возможных решений в интеллектуальном эвристическом порядке, пока я не скажу ему остановиться.
Даже незнакомец - я далЛучшее назначение решателю как initial_solution, и оно за несколько секунд улучшает его до еще лучшего решения с целью 1240146
(и снова заявляет NoMoreSolutions
, но я больше не покупаю эту ложь:)
Чего мне не хватает? Уверен, я не давал time_limit
или solution_limit
.
Я использую python с ortools==7.0.6546
.