Matlab:Hacky无约束与约束数值优化

时间:2017-04-16 20:01:10

标签: matlab mathematical-optimization

简短版本:为什么不受约束的无约束优化&#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;解决这个问题的方法?

0 个答案:

没有答案