我试图通过使用fmincon函数来获取优化值。 在优化过程中,将“ integProb”函数与quadl(或积分,或可选)方法集成。
,但是具有integProb的四元积分函数返回NaN并显示警告:“遇到无限或非数字函数值。”在a,b,Vmat和Vj的某些值。但是我不确切知道它们的值使Quadl函数返回NaN,因为这些值是在fmincon优化过程中确定的。
有人对如何解决此问题有任何想法吗?
我将不胜感激
谢谢。
quadl(@(e) integProb(e,j,k,Vmat,Vj),a,b,eps1);
function [val]=integProb(e,j,k,Vmat,Vj);
len = length(e);
x=repmat(e+Vj,k,1)-Vmat(:,1:len);
x2 = normcdf(x); % need the sigma of j (the chosen product)
x2(j,:)=1; % we do not need this. See the integrand in our integration eqn
val = prod(x2).* normpdf(e);
答案 0 :(得分:0)
在成本函数中,您需要防止出现错误值,并在出现错误时返回高成本(告诉优化程序它们为错误值),
function [val]=integProb(e,j,k,Vmat,Vj);
len = length(e);
x=repmat(e+Vj,k,1)-Vmat(:,1:len);
x2 = normcdf(x); % need the sigma of j (the chosen product)
x2(j,:)=1; % we do not need this. See the integrand in our integration eqn
val = prod(x2).* normpdf(e);
if isnan(val) || isinf(val) || ~isreal(val)
val = 1e10; % or some other large value
end