Попытка решить TSP как задачу линейного программирования, используя cvxpy, и с этим возникла проблема. Это мой первый опыт, так что спасибо за помощь. В результате я хочу иметь матрицу с 0 и 1, которая показывает каждый следующий город для продавца.
нужно использовать именно cvxpy
здесь вы можете прочитать теорию
cvxpy website
спасибо за help
import cvxpy as cp
import numpy as np
np.random.seed(1)
N = 10
distances = np.random.rand(N, N)
x = cp.Variable((N, N), boolean=True)
u = cp.Variable(N, integer=True)
constraints = []
for j in range(N):
indices = list(range(0, j)) + list(range(j + 1, N))
constraints.append(cp.sum(x[indices, j]) == 1)
for i in range(N):
indices = list(range(0, i)) + list(range(i + 1, N))
constraints.append(cp.sum(x[i, indices]) == 1)
for i in range(1, N):
for j in range(1, N):
if i != j:
constraints.append(u[i] - u[j] + N*x[i, j] <= N-1)
for i in range(N):
for j in range(N):
if i != j:
сost += (x[i,j]*distances[i,j])
prob = cp.Problem(cp.Minimize(cost), constraints)
prob.solve()
print(prob.value)
получить "None"
похоже на проблему в определении стоимости, но не знаю, как исправить это, может быть, мне стоит использовать cvxpy.multiply или cvxpy.sum?