我有一点编程经验,所以我很确定我没有以最佳方式对问题进行编码,所以我很乐意听到任何提示。
我有两个参数:问题的维度n
和N x N
约束矩阵B
where N = 2n
。在我的情况下B
是对称的,只有正值。我需要解决以下问题
也就是说,我需要最大化某个平均距离,并受到由 给出的成对距离的约束B(i,j)
。
我现在这样做的方式是linprog(-f,A,b)
where的实现
f = ones([1,n])/n;
f = [f -f]
和
b = reshape(B',numel(B),[])
并A
定义如下
A = zeros([N^2,N]);
for i = 1:N
for j = 1:N
if i ~= j
A((i-1)*N + j,i) = 1;
A((i-1)*N + j,j) = -1;
end
end
end
然而,n = 500
即使是一个简单的构造也A
需要相当长的时间,更不用说线性程序的解需要多长时间了。任何提示都非常感谢,请随时重新标记。