Есть ли способ повысить производительность целлюлозы с помощью матриц? - PullRequest
0 голосов
/ 27 сентября 2019

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

for i in range(count_var):
    prob += pulp.lpDot(decision_var, x[i,:]) <= 6

Для чего бы это ни стоило, я перебираю этот LP пару тысяч раз, и каждый раз я увеличиваю i на единицу.Сначала этот код относительно эффективен, но к моменту появления 1000-й итерации производительность на одну итерацию ухудшается примерно на две секунды.

По сути, x - это пустой массив, и я перебираю каждуюстрока в массиве, взяв скалярное произведение с decision_var и убедившись, что результат меньше или равен 6. Мой вопрос: вместо циклического прохождения каждой строки в массиве, есть способ выполнить умножение матриц смякоть?Таким образом, вместо умножения decision_var на каждую строку в массиве, я мог бы умножить decision_var на всю матрицу?Результатом будет i-мерный вектор, и я бы хотел, чтобы максимальный результат в этом векторе был меньше или равен шести.

Есть ли способ векторизовать это ограничение дальше, что я могу не знатьиз?Спасибо!

...