Search code examples
pythonoptimizationcvxpy

receiving "None" as result in CVXPY problem solver


Trying to solve TSP as linear programming task using cvxpy and have problem with this. It is my first experience so thanks for help. As a result I want to have matrix with 0 and 1 that shows every next city for salesman.

need to use exactly cvxpy

here you can read theory

cvxpy website

thanks for 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)

receive "None"

feel like the problem in cost defining, but don`t know how to make it correct maybe I should use cvxpy.multiply or cvxpy.sum?


Solution

  • don't know what was the problem. maybe smth with Jupyter. everything became ok after it refreshing thanks all for help!