简短版本:为什么不受约束的无约束优化&#34;黑客攻击&#34;进入目标函数工作,而约束优化不是<?p?
长版:
在Matlab中,我试图找到 p x n 子空间 U ,这解释了我的任意数量的方差 m x p 数据集 X 。目标函数是:
projection = U'*X';
fracVar = sum(var(projection'))/totalVar;
fVal = (targetVar - fracVar)^2;
我尝试使用fmincon()
非线性等式约束, U 必须具有单位规范的正交列:
temp = norm(U'*U - eye(size(U,2)));
我无法让这个工作。它以不同的方式失败,包括没有达到所需的方差分数并且无法满足约束条件。
但是,如果我改为使用fminsearch()
并将目标更改为:
projection = orth(U)'*X';
fracVar = sum(var(projection'))/totalVar;
fVal = abs(targetVar - fracVar);
然后再对结果使用orth()
,它似乎完美无缺。我认为这将是&#34;错误&#34;因为我基本上将约束条件化为目标。
对此有何解释?有没有正确的&#34;解决这个问题的方法?