【发布时间】:2019-05-22 09:37:44
【问题描述】:
我目前正在使用 fmincon 来最小化 18*18 矩阵的对数似然函数。虽然在较小的问题上算法非常快,但在当前设置中收敛大约需要 2 小时 - 因为我正在迭代这个最小化问题,运行代码可能需要长达 2 周的时间。
是否有基于 matlab 的免费替代 fmincon 可以提高此类特定问题的速度? (昂贵的解决方案在here 讨论,非matlab 解决方案here。)或者我需要打电话给例如来自matlab的python脚本?
我要最小化的函数:
function [L] = logL(A, U, Sigma_e, T, lags)
% A - parameters to optimize w.r.t
logL = 0;
for t = 1 : T - lags
logL(t, 1) = 0.5*(log(det(A * diag(Sigma_e(t,:)) * A' ) ) + ...
U(t,:) * (A * diag(Sigma_e(t,:)) * A' )^(-1) * U(t,:)' );
end
L = sum(logL);
并通过以下方式调用它:
Options = optimset('Algorithm', 'active-set', 'Display', 'off', 'Hessian','bfgs', ...
'DerivativeCheck','on','Diagnostics','off','GradObj','off','LargeScale','off');
A = fmincon( @(A0)logL(A0, U, Sigma_e, T, lags), A0 , [], [] , [] , [] , [] , [] , [], Options);
(我尝试了不同的 fmincon 算法,但没有太大改进)。注意,T 相当大~3000。 A 和 A0 是一个 18*18 的矩阵, Sigma_e 为 T*18, U是T*18
【问题讨论】:
标签: matlab optimization log-likelihood