我有以下功能:
function res = score(probability)
其中probability = [.7 .4 .8 .1]
和res = 0.8512
例如/
我的目标是找到最大化score
的概率向量(以0.01跳)?
这有matlab的方法吗?或者我应该循环x次junping每次0.01以上的每个概率?
答案 0 :(得分:0)
这取决于内部算法“得分”功能。
但是,如果你想使用简单的线性搜索类算法,你可以使用种子数组输入,然后在种子上进行矢量化以获得最大值。
例如,
seed_ips = [0.1:0.01:0.14;
0.2:0.01:0.24];
results = array_fun(@(x)score(seed_ips(x)),1:size(seed_ips,1));
现在最大值位置将是“查找(结果==最大(结果))”。
产生最大值的概率为 seed_ips(结果== max(结果),:)
答案 1 :(得分:0)
我假设你想找到一个最大分辨率的概率向量,精度为0.01?
this是要走的路。 在你的案例中我的migth看起来像这样:
score1 = @(prob) -score(prob) % score here is your scorefunction
start = [.7 .4 .8 .1]; % your start point
opts = optimset('TolX',0.01); % optim options
prob_vec = fminbnd(@score1,start,opts)
希望这有帮助, 玩得开心