Решение CVXPY Matrix Optimization Линейное программирование
Я пытаюсь найти идеальную матрицу X в следующей линейной программе:
X = N по матрице T, которая является нашей переменной. Для простоты давайте установим N на 4 и T на 3.
X_column_sum = 1 по матрице T, где каждое значение столбца является суммой всех значений соответствующего столбца в X
R = N на 1 матрицу со случайно определенными значениями
G = константа (давайте установим 100 для простоты)
d = 1 по матрице T, значения которой принимают в диапазоне [0, G-1]
P = 1 по матрице T, равной X_column_sum + d
C = X с точками P
Я хочу минимизировать сумму записей C, сохраняя при этом следующие ограничения:
- все значения в X должны быть>= 0
- сумма всех значений в каждой соответствующей строке X должна быть, по крайней мере, равна соответствующему значению в R
Я попробовал следующий код, используя cvxpy в Python, но безрезультатно:
from cvxpy import *
X = Variable(N,T)
G = 100
d = np.random.randn(1, T)
d *= G-1
X_column_sum = cumsum(X,axis=0)
P = cost_matrix_cars + d
R = matrix([[10]]*N) # all set to 10 for testing
objective = Minimize(sum_entries(X@P)) #think this is good
constraints = [0 <= X, cumsum(X,axis=0) >= R]
prob = Problem(objective, constraints)
print("Optimal value", prob.solve())
print("Optimal X is",x.value ) # A numpy matrix.