Unsicher bei Code

Steffen_1990

Newbie
Registriert
Juni 2016
Beiträge
3
Hallo, kann mir einer sagen, was im folgenden Code gemacht wird?

Code:
SomeVal = zeros(NumSol,1);
for ind = 1: NumSol
   SomeVal(ind) = length(find((Fitness(:,1)<Fitness(ind,1))&(Fitness(:,2)>Fitness(ind,2))));
end

Meiner Meinung nach wird ein Spaltenvektor erstellt, der für jede Lösung angibt, von wie vielen anderen Lösungen diese dominiert wird. Ist das richtig?


Danke vorab
 
Zuletzt bearbeitet:
Ist das Matlab? Ich hab das schon ewig nicht mehr benutzt.

SomeVal ist ein Vektor mit der Länge NumSol.

Fitness sieht aus wie eine Matrix. Davon wird dann jeweils die 'ind'te Spalte und die danach genommen und dann irgendwas verglichen. In SomeVal landet dann die Zahl wie oft die Bedinging für das jeweilige 'ind' zugetroffen hat.

Denke ich zumindest. Sieht schon etwas kompliziert aus.
 
Ja genau.

Also "NumSol" steht für die Anzahl der Lösungen und "Fitness" ist eine NumSol x2 Matrix, jeder Zeile gibt die zwei Fitnesswerte der entsprechenden Lösung. Erste Spalte Zeit und zweite Qualität.
 
Ich glaube hinter (ind,1) fehlt noch ne geschlossene Klammer.

(Fitness(:,1)<Fitness(ind,1)) vergleicht einen speziellen Wert der ersten Spalte mit allen anderen in der ersten Spalte. Es entsteht ein Vektor (länge Zeilenanzahl) mit 1 wo Wahr und 0 wo Falsch.
(Fitness(:,2)>Fitness(ind,2)) ebenso mit der zweiten Spalte nur muss der Wert dort kleiner sein.
Die beiden Vektoren werden logisch UND verknüpft. Es bleibt ein Vektor wo nur dort 1 stehen, wo beides erfüllt war.
find gibt dann einen Vektor zurück mit den den Indizes der Stellen wo Einsen standen.
length spuckt dann einen Integer aus wie lang find war. Zählt also wie oft beide Bedingungen für den Wert an Position ind erfüllt waren.
Das wird dann in den Vektor SomeVal gespeichert.

Was du mit dominieren meinst kann man ohne Kontext was da überhaupt verglichen wird nicht nachvollziehen.
 
Zuletzt bearbeitet:
Alles klar. Hast recht, hab die Klammer hinter dem ind,1 verbessert. Danke euch beiden für eure Antwort!
 
Zuletzt bearbeitet:
Ok du hast ja den Kontext angegeben... Es wird also gespeichert wie oft ANDERE Lösungen schneller UND von besserer Qualität waren.
Also je höher der Wert desto schlechter die Lösung würde ich sagen.
 
Zurück
Oben