我得到别人一个程序,他想通过
lb = .0001 * ones(1,4);
ub = 20 * ones(1,4);
initial = ones(1,4);
[params ll] = fmincon('pareto_nbd_ll',initial,[],[],[],[],lb,ub)
来优化pareto_nbd_ll这个函数。
而后我又得到他对pareto_nbd_ll的定义
function [f,g]=pareto_nbd_ll(param)
global p1x tx T
r = param(1);
alpha = param(2);
s = param(3);
beta = param(4);
maxab = max(alpha,beta);
absab = abs(alpha-beta);
param2 = s+1;
if alpha < beta
param2 = r+p1x;
end
part1 = (alpha^r*beta^s/gamma(r))*gamma(r+p1x);
part2 = 1./((alpha+T).^(r+p1x).*(beta+T).^s);
if absab == 0
F1=1./((maxab+tx).^(r+s+p1x));
F2=1./((maxab+T).^(r+s+p1x));
else
F1=h2f1(r+s+p1x,param2,r+s+p1x+1,absab./(maxab+tx))./...
((maxab+tx).^(r+s+p1x));
F2=h2f1(r+s+p1x,param2,r+s+p1x+1,absab./(maxab+T))./...
((maxab+T).^(r+s+p1x));
end
f = -sum(log(part1.*(part2+(s./(r+s+p1x)).*(F1-F2))));
[f/1000 param]
g=[];
我很想知道为何要定义这个g。[f/1000 param]
g=[];这两句是为了什么而存在?
如果我只定义f,我试了下,依然有结果,但是会warning,说trureg不解决此类问题。。
求解答。。跪谢。。