【发布时间】:2020-05-07 16:22:48
【问题描述】:
尝试使用 cvxpy 将 TSP 解决为线性规划任务,但遇到了问题。这是我的第一次体验,所以感谢您的帮助。因此,我希望有一个 0 和 1 的矩阵来显示每个下一个城市的推销员。
需要完全使用 cvxpy
感谢帮助
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)
收到“无”
感觉像是成本定义的问题,但不知道如何使其正确 也许我应该使用 cvxpy.multiply 或 cvxpy.sum?
【问题讨论】:
-
(1) 打印
prob.status(2) 将verbose=True添加到求解语句 (3) 确保问题中的代码是独立的,因此我们可以执行此代码。跨度> -
返回“infeasible_inaccurate”。不明白我做错了什么
标签: python optimization cvxpy