Я пытаюсь воссоздать целочисленную задачу линейной оптимизации, используя cvxpy, которую я описал в Excel - . Обратите внимание, что это фиктивный пример, фактический набор данных будет содержать тысячи переменных. Не обращайте внимания на решение в ячейке K5 электронной таблицы, так как Excel Solver не может предоставить целочисленные решения.
Учтите, что 9 переменных разделены на 3 сегмента. Обратите внимание, что моя цель с ограничениями 1–3 состоит в том, чтобы либо было как минимум 2 из 3 единиц для набора переменных, либо все значения равны 0. Например, a, b, c должны быть либо 1,1,1 или 1, 1, 0 или 1,0,1 или 0, 1, 1 или 0, 0, 0.
import numpy as np
import cvxpy as cp
import cvxopt
coefs= np.array([0.7, 0.95, 0.3, 2, 1.05, 2.2, 4, 1, 3])
dec_vars = cp.Variable(len(coefs), boolean = True)
constr1 = np.array([1,1,1,0,0,0,0,0,0]) @ dec_vars == 2 * max(dec_vars[0:3])
constr2 = np.array([0,0,0,1,1,1,0,0,0]) @ dec_vars == 2 * max(dec_vars[3:6])
constr3 = np.array([0,0,0,0,0,0,1,1,1]) @ dec_vars == 2 * max(dec_vars[6:9])
constr4 = np.ones(len(coefs)) @ dec_vars >= 2
Когда я подбегаю сюда, я получаю NotImplementedError: Strict inequalities are not allowed.
ошибку