nonlcon fmincon不按预期工作

2视图(30天)
哈拉尔德Landgren
哈拉尔德Landgren 2020年11月20日
你好,
我试图用fmincon students-t找到合适的相关矩阵的连系动词。当我计算介体需要确保相关矩阵的行列式是正定的。我试着使用nonlcon为了使发生但能让它工作。我的约束函数是这样的:
功能测查[c] = detConstraint(向量)
P = corrMatrixMaker(向量);%的向量矩阵
如果相同(P) < = 0
c = 1;
测查= 1;
其他的
c =相同(P);
测查= 0;
结束
似乎fmincon不在乎什么detConstraint回报,所以它接受行列式是< = 0。这就是我的函数,使用fmincon看起来像:
函数[xOpt] = MLEc (cdf)
n =大小(cdf, 1);%的变量
optionvec = optimset (“MaxFunEvals”, 10000年,“显示”,“通路”,“TolX”, 1 e-12 TolFun, 1 e,“算法”,“内点”);
% x0 =(νPx1……Pxm] x m = mx (m + 1)矩阵
%初始解
ν= 1;
Ptri = 0.5 * (1, n * (n - 1) / 2);
x0 = (Ptriν);
%的自由度< Inf。诊断接头相关矩阵是1。对角线相关矩阵马克斯是1。
nuub =正;
Ptriub = 1 (1, n * (n - 1) / 2);
乌兰巴托= [Ptriub nuub];
%的自由度> 1。诊断接头相关矩阵是1。对角线相关矩阵最小是1。
nulb = 0.0001;%,因为自由度需要严格大于0。
Ptrilb = 1 * 1 (1, n * (n - 1) / 2);
磅= [Ptrilb nulb];
[xOpt] = fmincon (@ (x) -studentsCopula (x, cdf实验组),x0,[],[],[],[],磅,乌兰巴托,@detConstraint, optionvec);
它给我一个有效的解决方案但是它非常慢,经常说“目标函数返回NaN /正/复杂;尝试一种新的…”。“南”和“复杂”来自于相关矩阵的行列式的< = 0和“正”是因为介体的自由度高。我想消除这种为了使程序更快。
感谢任何帮助!

答案(0)

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!