Python-MIP не оптимизирует

#python

Вопрос:

У меня есть матрица E. В каждой строке я должен выбрать ровно одну запись. То же самое относится и к колонкам. Записи должны быть выбраны таким образом, чтобы их накопленные значения были как можно ниже. Я написал фрагмент кода, используя библиотеку Python-MIP, которая должна позаботиться об этом.

Однако, похоже, что код находит только решение, которое удовлетворяет всем условиям (написано после m =), но не оптимизирует. Что я здесь делаю не так?

 from mip import Model, xsum, minimize, BINARY, INTEGER

E_ =    [
            [0, 4, 3, 1],
            [4, 0, 6, 3],
            [5, 8, 0, 10],
            [10, 7, 12, 0]
        ]

N = len(E_)

m = Model("model")

R = [[m.add_var(var_type=INTEGER) for j in range(N)] for i in range(N)]
E = [[m.add_var(var_type=INTEGER) for j in range(N)] for i in range(N)]

m.objective = minimize(xsum(((E[i][j] * R[i][j]) for i in range(N)) for j in range(N)))

for i in range(N):
    for j in range(N):
        m  = E[i][j] == int(E_[i][j])

for i in range(N):
    m  = xsum(R[i][j] for j in range(N)) == 1

for j in range(N):
    m  = xsum(R[i][j] for i in range(N)) == 1

for i in range(N):
    m  = R[i][i] == 0
    
m.optimize()
 

Полученная матрица R выглядит так, как показано ниже, в результате чего в общей сложности получается 30:

 0 1 0 0 
1 0 0 0 
0 0 0 1 
0 0 1 0
 

Однако следующая матрица (я понял это вручную) дает в общей сложности 18. Таким образом, очевидно, что программа не оптимизируется:

 0 0 1 0 
0 0 0 1 
1 0 0 1 
0 1 0 0
 

Комментарии:

1. Я думаю, что моя библиотека сломана, даже примеры, приведенные в документе, не оптимизированы. Я установил пульпу, и она отлично работает. Этот поток может быть закрыт или удален, или без этого.