2016-07-13 3 views
0

Ich habe die folgende Funktion:Befund (lokal) maximal eine benutzerdefinierte Funktion in Matlab

function res = score(probability) 

wo probability = [.7 .4 .8 .1] und res = 0.8512 zum Beispiel/

Mein Ziel ist es, den Wahrscheinlichkeitsvektor zu finden (in 0,01 Sprüngen) das maximiert score? gibt es einen Matlab Weg dafür? oder sollte ich für x Zeiten junping jedes Mal 0,01 in jeder Wahrscheinlichkeit oben?

+2

Ihre Frage recht vage. Wie können Sie 0,01 Sprünge haben, wenn die Wahrscheinlichkeit ein Vektor ist? Wie funktioniert das? Wie folgt 'res' aus' Wahrscheinlichkeit' (was macht score)? Und haben Sie Zugriff auf die Optimierungs-Toolbox, d. H. Haben Sie 'fminsearch' oder' fmincon' usw. versucht? – Bernhard

+0

Hallo, Entschuldigung für die Unbestimmtheit, ich wollte 0,01 Sprünge für jeden Vektorindex machen, bis Sie sie auf [1 1 1 1] ausmaximieren. Res ist eine benutzerdefinierte Funktion, stellen Sie sich diese als Binomialverteilungswahrscheinlichkeits-Massenfunktion vor. Ich habe diese Werkzeuge nicht ausprobiert, ich bin Neuling bei Matlab. –

+0

Es ist immer noch unklar. Sie ändern sie alle zur gleichen Zeit, oder haben Sie nur für unabhängige Parameter in "Wahrscheinlichkeit" versteckt? – Bernhard

Antwort

0

Es hängt von inneren Algorithmus "Score" -Funktion hat.

Wenn Sie jedoch einfache lineare Suche Art von Algorithmus verwenden möchten, könnten Sie Samen Array von Eingaben und dann vektorisieren auf Samen, um das Maximum daraus zu erhalten. B.
seed_ips = [0,1: 0,01: 0,14;
0,2: 0,01: 0,24];
Ergebnisse = array_fun (@ (x) score (seed_ips (x)), 1: Größe (seed_ips, 1));
Jetzt wird der maximale Wert "finden (Ergebnisse == max (Ergebnisse))" sein.
Wahrscheinlichkeit, dass seed_ips (Ergebnisse == max (Ergebnisse), :)

+1

Zumindest die 'find' wird nicht benötigt, weil' max' geben Sie bereits die Ausgabe, die Sie suchen in seinem zweiten Rückgabewert: dh '[ maxValue, maxIndex] = max (Ergebnisse) ' – Bernhard

+0

Hmm. Du hast recht. Niemals die zweite Ausgabe von "max" verwendet. –

0

Ich nehme an, Sie einen Vektor von Wahrscheinlichkeit für einen max res mit einer Genauigkeit von 0,01 whant finden werden max-Wert erzeugt?

this ist der Weg zu gehen. in Ihrem Fall i migth etwa wie folgt aussehen:

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) 

hoffe, das hilft, haben Spaß