Сбой Python с кусочно-линейной целью для gurobi 6.0.2 / setPWLObj

У нас есть сложная задача оптимизации, которая включает в себя несколько квадратичных членов с целочисленными и непрерывными переменными (используя Anaconda Python / Pycharm с Gurobi 6.0.2). Мы применили функцию setPWLObj для аппроксимации квадратичных целевых компонентов. Код для этого выглядит следующим образом:

    m.addConstr(l1[t] == 1/2.0 * (hsqrt[t]+hQ[t]))
    m.addConstr(l2[t] == 1/2.0 * (hsqrt[t]-hQ[t]))
    hlx1 = linspace(-10, 10, 50)  
    hlx2 = linspace(-10, 10, 50)
    h1y1 = [0]*50
    hly2 = [0]*50

    for i in range(len(hlx1)):
        h1y1[i] = hlx1[i] * hlx1[i] * 7.348 / 1000.0
        hly2[i] = -hlx2[i] * hlx2[i] * 7.348 / 1000.0

    m.setPWLObj(l1[t], hlx1, h1y1)
    m.setPWLObj(l2[t], hlx2, hly2)

где l1 и l2 непрерывные переменные.

Проблема ведет себя противоречиво. Запуск его на Mac в основном обеспечивает коды выхода 138 и 139 (соответствует ошибке шины 10), иногда та же проблема, решение которой может быть рассчитано. Это особенно верно при запуске оптимизации несколько раз подряд. Это кажется случайным.

На машинах Windows либо происходит сбой Python, либо выдается код выхода "-1073741819". Дальнейшие поиски этого кода выхода нам не очень помогли.

Любые комментарии, предложения и помощь очень приветствуются и ценятся.

1 ответ

Извините, что так долго, но мы исправили проблему.

На самом деле мы выяснили, что сбой питона произошел или произошел из-за ошибки в Gurobi. После того, как мы подали запрос, ошибка была удалена.

Если Гуроби 6.0.3. или выше используется ошибка больше не существует.

Другие вопросы по тегам