Как решить "Gurobipy.GurobiError: Ошибка сети" для запуска pyomo с gurobi-cloud в контейнере docker - PullRequest
0 голосов
/ 27 января 2020

Я запускаю приложение python в контейнере docker, который использует pyomo для постановки задачи математической оптимизации и использует решатель облака Gurobi (gurobi_direct) для решения задачи оптимизации.

Однако первые несколько раз после создания контейнера docker приложение работает нормально. Но через некоторое время, когда приложение не используется (например, 1 час), приложение возвращает приведенное ниже сообщение об ошибке при попытке инициализации gurobi-модели и запуска облачного решателя gurobi.

Traceback (most recent call last):
  File "/home/guser/miniconda/lib/python3.7/site-packages/pyomo/solvers/plugins/solvers/gurobi_direct.py", line 238, in _set_instance
    self._solver_model = self._gurobipy.Model(model.name)
  File "model.pxi", line 75, in gurobipy.Model.__init__
gurobipy.GurobiError: Network error

Обратите внимание, что первый Когда я запускаю приложение, т. е. при первом использовании решателя gurobi, файл журнала показывает следующее сообщение (обратите внимание, что я изменил файл журнала ниже, указав «[идентификатор пула и имя]» вместо фактического идентификатора пула ):

------------------------ Start calculation steps -----------------------
Using license file /home/guser/gurobi.lic
INFO:gurobipy:Using license file /home/guser/gurobi.lic
INFO:gurobipy:Set parameter CloudAccessID
Set parameter CloudAccessID
Set parameter CloudSecretKey
Set parameter CloudPool to value [pool id & name]
INFO:gurobipy:Set parameter CloudSecretKey
INFO:gurobipy:Set parameter CloudPool to value [pool id & name]
Waiting for cloud server to start (pool [pool id & name])...
INFO:gurobipy:Waiting for cloud server to start ([pool id & name])...
Starting...
Compute Server job ID: [server Job-ID]
Capacity available on [pool id & name] cloud pool - connecting...
INFO:gurobipy:Capacity available on [pool id & name] cloud pool - connecting...
Established HTTPS encrypted connection
INFO:gurobipy:Established HTTPS encrypted connection
Parameter OutputFlag unchanged
   Value: 1  Min: 0  Max: 1  Default: 1

И в последующие моменты он выглядит несколько иначе: предупреждение о состоянии решения предыдущего запуска, пропускает часть об установлении https-соединений и начинается с Outputlag и log-файла. файл.

WARNING: Loading a SolverResults object with an 'aborted' status, but
    containing a solution
------------------------- Start calculation steps -----------------------
Parameter OutputFlag unchanged
INFO:gurobipy:Parameter OutputFlag unchanged
   Value: 1  Min: 0  Max: 1  Default: 1
INFO:gurobipy:   Value: 1  Min: 0  Max: 1  Default: 1
Changed value of parameter LogFile to /tmp/tmp0fd91rm9.log
INFO:gurobipy:Changed value of parameter LogFile to /tmp/tmp0fd91rm9.log
   Prev:   Default: 

У меня такое ощущение, что клиент gurobi в docker -контейнерах запоминает идентификатор задания облачного сервера gurobi даже после выключения облачного сервера из-за время простоя. Таким образом, на следующий день docker пытается получить доступ к машине облачного сервера со старым идентификатором задания, но старый идентификатор задания больше не действителен.

...