我确定了人口中最近的邻居。我希望为总体分配权重向量,以便通过优化最小化最近邻居之间的权重差异。我建了:
fun=@(x)sum(nthroot(x-logicalmatrix*x),2)
A=ones(1,height(Population));
b=1;
Aeq=A;
beq=1; % Solution should sum to 1
lb=zeros(height(Population),1); % Lower Bounds
ub=ones(height(Population),1); % UpperBounds
[opt_combinedfun,~,residualCombfun]=fmincon(fun,lb,A,b,Aeq,beq,lb,ub,[],options);
然而,尽管有时它会在范围内返回一个解决方案但它看起来不是最佳的。 ' logicalmatrix '是标识最近邻居的 n x n 逻辑矩阵。问题是 logicalmatrix 是单数的,导致优化返回:
警告:Matrix接近单一或严重缩放。 结果可能不准确。
是fmincon使用错误的功能吗?或者有办法绕过奇点吗?一种更强大的方法来实现这种优化?