RuntimeWarning: переполнение, встречающееся в long_scalars, если self.max_big_small_squared <big * small ** 2: - PullRequest
0 голосов
/ 21 июня 2019

Я пытаюсь запустить модель оптимизации целочисленного программирования на относительно небольшом наборе данных, используя cvxpy, и при попытке решить проблему сталкиваюсь со следующей ошибкой:

C: \ Users \ XXXX \ AppData \ Local \ Continuum \ Anaconda3-5.2.0 \ Lib \ сайта-пакеты \ cvxpy \ проблемы \ problem.py: 791: RuntimeWarning: переполнение, встречающееся в long_scalars, если self.max_big_small_squared <большой * маленький ** 2: </p>

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

import cvxpy as cv

#DEFINE THE SELECTION VARIABLE
selection = cv.Variable((113,33),boolean = True)

#DEFINE THE OBJECTIVE FUNCTION
num_columns_true = cv.sum(cv.max(selection, axis = 0))
  #think this is where the issue is coming from

#DEFINE THE CONSTRAINTS
one_true_per_row = cv.sum(selection, axis = 1) == 1
constraints = [one_true_per_row]

#DEFINE THE PROBLEM
problem = cv.Problem(cv.Minimize(num_columns_true), constraints = constraints)

#SOLVE THE PROBLEM
problem.solve(solver=cv.GLPK_MI, verbose = True)
...