Hallo Leute,
ich habe das folgenge Polynom und möchte ich das mit Hilfe eines genetischen Algoritmus (ga) vom Toolbox matlabe optimieren. Meine Population ist den angehängten Dateie zu finden. Die Anzahl der Variablen ist 8 und die Länge der Popukation ist bei 400. Ich bitte um Hilfe.
Ich weiß überhaupt nicht ,wie ich dieses Polynom mit Hilfe eine GA optimieren kann. Ausgehend von der gesamten Population sollte die bestLösung finden, aber wie weiß ich nicht. Vielleicht kannst mir eine Code für einen GA schicken.
Danke
"optimieren" heißt bei MATLAB immer minimieren. MATLAB würde also versuchen, ein Minimum des Polynoms zu finden.
Ausprobieren kann ich das in der gegebenen Form schlecht. Kannst du deine Anfangspopulation so zur Verfügung stellen, dass ich sie auch problemlos verwenden kann? (z.B. als mat-File oder Excel-Tabelle)
Hi Harald,
Ich habe so ein matlab-Code entworfen, aber das funktioniert noch nicht optimal. Der wert meiner ausgangsfunktion ändert nicht. kannst du dir das angucken und mir was besseres vorschlagen, wenn geht.Excel und Matlab Dateien sind angehängt.
Danke für die Hilfe
Olga
mir ist nicht ganz klar, was du mit der Mutation Function willst. Du verwendest eine, die anscheinend für Integer-Optimierung gedacht war, löscht dann aber das ROUND raus? Würde ich weglassen bzw. geeignet anpassen.
Wenn du die CreationFcn weglässt, siehst du, dass sich die Zielfunktionswerte verbessern. Das legt nahe, dass ga mit deiner Anfangspopulation deswegen nichts verbessert, weil deine Anfangspopulation schon das Optimum oder zumindest einen sehr guten Wert enthält.
Generell solltest du mehr als 3 Generationen laufen lassen - eher 30 oder 300.
Falls ga lediglich verwendet wird, um möglichst ein globales Minimum zu finden, und keine anderen Einschränkungen bestehen, empfiehlt sich das Verwenden einer HybridFcn zur weiteren Verbesserung des Endwertes von ga.
Wenn ich fragen darf: woher kommt eigentlich diese merkwürdige Zielfunktion?
Hallo Harald,
ich bekomme immer unterschiedliche Ausganwerte beim Ausführen dieses GA. Könntest du mir bestimmt sagen, warum es so ist oder wie kann ich das vermeiden.
Thanks
Olga
% Fitness function and numver of variables
%fitnessFcn = @(x)((2.4086+0.66827*x(1)+0.34454*x(2)-0.13647*x(3)-0.055166*x(4)+0.2008*x(5)+0.096534*x(6)-0.00068195*x(7)+0.019856*x(8)+0.064637*x(1)^2-0.19545*x(1)*x(2)-0.036925*x(1)*x(3)-0.0011845*x(1)*x(4)+0.010788*x(1)*x(5)+0.016573*x(1)*x(6)-0.016368*x(1)*x(7)+0.013489*x(1)*x(8)-0.0010713*x(2)^2-0.047758*x(2)*x(3)-0.057352*x(2)*x(4)+0.06803*x(2)*x(5)+0.091153*x(2)*x(6)-0.074321*x(2)*x(7)+0.050554*x(2)*x(8)-0.021366*x(3)^2+0.005159*x(3)*x(4)-0.24365*x(3)*x(5)+0.0056499*x(3)*x(6)-0.018049*x(3)*x(7)+0.0018549*x(3)*x(8)+0.036388*x(4)^2+0.016773*x(4)*x(5)-0.1207*x(4)*x(6)+0.009459*x(4)*x(7)-0.0035235*x(4)*x(8)-0.41697*x(5)^2-0.0027295*x(5)*x(6)-0.0028339*x(5)*x(7)-0.0075612*x(5)*x(8)-0.082822*x(6)^2-0.008507*x(6)*x(7)+0.0043193*x(6)*x(8)+0.039955*x(7)^2-0.21693*x(7)*x(8)-0.3555*x(8)^2-0.063565*x(1)^3+0.081542*x(1)^2*x(2)+0.0079381*x(1)^2*x(3)+0.014436*x(1)^2*x(4)+0.029956*x(1)^2*x(5)-0.013527*x(1)^2*x(6)+0.019093*x(1)^2*x(7)+0.054795*x(1)^2*x(8)+0.013946*x(1)*x(2)^2+0.027791*x(1)*x(2)*x(3)+0.05592*x(1)*x(2)*x(4)-0.041715*x(1)*x(2)*x(5)-0.066771*x(1)*x(2)*x(6)+0.062442*x(1)*x(2)*x(7)-0.0395*x(1)*x(2)*x(8)+0.020873*x(1)*x(3)^2+0.0011555*x(1)*x(3)*x(4)+0.035324*x(1)*x(3)*x(5)+0.02103*x(1)*x(3)*x(6)-0.0090797*x(1)*x(3)*x(7)+0.0023824*x(1)*x(3)*x(8)-0.013572*x(1)*x(4)^2-0.0066141*x(1)*x(4)*x(5)+0.025993*x(1)*x(4)*x(6)+0.0051252*x(1)*x(4)*x(7)+0.0057658*x(1)*x(4)*x(8)-0.00060671*x(1)*x(5)^2+0.011727*x(1)*x(5)*x(6)-0.0027687*x(1)*x(5)*x(7)+0.008652*x(1)*x(5)*x(8)+0.029861*x(1)*x(6)^2+0.0024512*x(1)*x(6)*x(7)-0.031939*x(1)*x(6)*x(8)-0.038375*x(1)*x(7)^2+0.020942*x(1)*x(7)*x(8)-0.039418*x(1)*x(8)^2-0.0088683*x(2)^3+0.0066961*x(2)^2*x(3)+0.051482*x(2)^2*x(4)-0.026302*x(2)^2*x(5)+0.025826*x(2)^2*x(6)+0.027358*x(2)^2*x(7)-0.0011412*x(2)^2*x(8)-0.0093649*x(2)*x(3)^2+0.0057396*x(2)*x(3)*x(4)+0.066134*x(2)*x(3)*x(5)+0.0085411*x(2)*x(3)*x(6)+0.012005*x(2)*x(3)*x(7)-0.01458*x(2)*x(3)*x(8)+0.055797*x(2)*x(4)^2-0.014575*x(2)*x(4)*x(5)+0.08457*x(2)*x(4)*x(6)+0.021397*x(2)*x(4)*x(7)+0.0018287*x(2)*x(4)*x(8)-0.089903*x(2)*x(5)^2+0.031304*x(2)*x(5)*x(6)-0.012051*x(2)*x(5)*x(7)-0.0035777*x(2)*x(5)*x(8)-0.10618*x(2)*x(6)^2-0.021668*x(2)*x(6)*x(7)-0.0022077*x(2)*x(6)*x(8)+0.035252*x(2)*x(7)^2+0.050071*x(2)*x(7)*x(8)-0.01557*x(2)*x(8)^2+0.07288*x(3)^3+0.013543*x(3)^2*x(4)+0.010653*x(3)^2*x(5)-0.043954*x(3)^2*x(6)-0.029893*x(3)^2*x(7)-0.0043812*x(3)^2*x(8)+0.00061206*x(3)*x(4)^2-0.01905*x(3)*x(4)*x(5)+0.020107*x(3)*x(4)*x(6)-0.0036447*x(3)*x(4)*x(7)+0.0086988*x(3)*x(4)*x(8)+0.34592*x(3)*x(5)^2+0.019907*x(3)*x(5)*x(6)+0.028186*x(3)*x(5)*x(7)-0.023011*x(3)*x(5)*x(8)-0.0090357*x(3)*x(6)^2+0.0061024*x(3)*x(6)*x(7)+0.011772*x(3)*x(6)*x(8)+0.0092044*x(3)*x(7)^2+0.0093733*x(3)*x(7)*x(8)+0.0014965*x(3)*x(8)^2-0.041495*x(4)^3+0.022959*x(4)^2*x(5)+0.072715*x(4)^2*x(6)+0.025785*x(4)^2*x(7)+0.011832*x(4)^2*x(8)-0.015679*x(4)*x(5)^2-0.026233*x(4)*x(5)*x(6)-0.0036978*x(4)*x(5)*x(7)+0.027244*x(4)*x(5)*x(8)+0.19389*x(4)*x(6)^2-0.022284*x(4)*x(6)*x(7)+0.00095422*x(4)*x(6)*x(8)+0.0040384*x(4)*x(7)^2+0.015222*x(4)*x(7)*x(8)+0.027836*x(4)*x(8)^2-0.47556*x(5)^3+0.002219*x(5)^2*x(6)-0.045971*x(5)^2*x(7)+0.014662*x(5)^2*x(8)+0.00054186*x(5)*x(6)^2-0.009189*x(5)*x(6)*x(7)-0.016089*x(5)*x(6)*x(8)-0.080154*x(5)*x(7)^2-0.0062523*x(5)*x(7)*x(8)-0.0062926*x(5)*x(8)^2-0.27842*x(6)^3-0.0088381*x(6)^2*x(7)+0.043002*x(6)^2*x(8)-0.0038757*x(6)*x(7)^2-0.0085079*x(6)*x(7)*x(8)-0.029524*x(6)*x(8)^2+0.0048156*x(7)^3+0.0016265*x(7)^2*x(8)+0.29216*x(7)*x(8)^2-0.3444*x(8)^3-0.072706*x(1)^4+0.072152*x(2)^4-0.0081207*x(3)^4-0.062925*x(4)^4+0.70542*x(5)^4+0.23363*x(6)^4-0.021055*x(7)^4+0.56563*x(8)^4)^0.5);
fitnessFcn=@(x)(80.7086+28.3295*x(1)-50.7263*x(2)+52.2033*x(3)+11.0206*x(4)+68.8204*x(5)+33.6139*x(6)-27.112*x(7)+37.743*x(8)+59.5711*x(1)^2-2.9361*x(1)*x(2)+2.1017*x(1)*x(3)-9.4926*x(1)*x(4)-2.7251*x(1)*x(5)-0.6723*x(1)*x(6)+1.1459*x(1)*x(7)-8.842*x(1)*x(8)-17.7721*x(2)^2-23.491*x(2)*x(3)-3.8372*x(2)*x(4)-28.279*x(2)*x(5)-1.6775*x(2)*x(6)-5.1015*x(2)*x(7)-55.7812*x(2)*x(8)-85.7381*x(3)^2-8.7428*x(3)*x(4)+48.412*x(3)*x(5)-10.4648*x(3)*x(6)-1.3857*x(3)*x(7)-10.3719*x(3)*x(8)+29.2149*x(4)^2-3.065*x(4)*x(5)-3.8016*x(4)*x(6)-3.4036*x(4)*x(7)+6.0511*x(4)*x(8)-29.8811*x(5)^2-11.6183*x(5)*x(6)-0.02048*x(5)*x(7)-12.4638*x(5)*x(8)-35.1234*x(6)^2+4.7239*x(6)*x(7)-0.19847*x(6)*x(8)-104.8242*x(7)^2+7.5212*x(7)*x(8)+43.727*x(8)^2+3.8903*x(1)^3-17.217*x(1)^2*x(2)-0.057026*x(1)^2*x(3)-0.0293*x(1)^2*x(4)-9.4785*x(1)^2*x(5)+7.5645*x(1)^2*x(6)+8.3251*x(1)^2*x(7)-6.1906*x(1)^2*x(8)-13.5496*x(1)*x(2)^2+7.0531*x(1)*x(2)*x(3)-6.3179*x(1)*x(2)*x(4)+2.1875*x(1)*x(2)*x(5)+2.2215*x(1)*x(2)*x(6)-2.1167*x(1)*x(2)*x(7)+0.045324*x(1)*x(2)*x(8)-0.011718*x(1)*x(3)^2+9.2448*x(1)*x(3)*x(4)-4.3944*x(1)*x(3)*x(5)+0.21668*x(1)*x(3)*x(6)+1.2848*x(1)*x(3)*x(7)+9.9264*x(1)*x(3)*x(8)-18.3225*x(1)*x(4)^2+13.6595*x(1)*x(4)*x(5)+3.3517*x(1)*x(4)*x(6)-7.9373*x(1)*x(4)*x(7)-0.13248*x(1)*x(4)*x(8)+6.7418*x(1)*x(5)^2-2.9696*x(1)*x(5)*x(6)+1.5166*x(1)*x(5)*x(7)+7.5156*x(1)*x(5)*x(8)-2.8696*x(1)*x(6)^2+1.4486*x(1)*x(6)*x(7)-6.8834*x(1)*x(6)*x(8)-31.7892*x(1)*x(7)^2+12.7122*x(1)*x(7)*x(8)+8.7583*x(1)*x(8)^2-1.2891*x(2)^3+11.7487*x(2)^2*x(3)-6.1766*x(2)^2*x(4)+21.5656*x(2)^2*x(5)-26.8668*x(2)^2*x(6)+2.4268*x(2)^2*x(7)+30.4144*x(2)^2*x(8)+43.4411*x(2)*x(3)^2-10.4154*x(2)*x(3)*x(4)+42.2632*x(2)*x(3)*x(5)+7.1271*x(2)*x(3)*x(6)-0.42843*x(2)*x(3)*x(7)-11.4647*x(2)*x(3)*x(8)+5.6255*x(2)*x(4)^2-6.3306*x(2)*x(4)*x(5)-2.1558*x(2)*x(4)*x(6)-0.69893*x(2)*x(4)*x(7)+3.6352*x(2)*x(4)*x(8)+47.7833*x(2)*x(5)^2-3.7538*x(2)*x(5)*x(6)-2.0451*x(2)*x(5)*x(7)-11.1103*x(2)*x(5)*x(8)+0.97112*x(2)*x(6)^2+16.2351*x(2)*x(6)*x(7)-1.1196*x(2)*x(6)*x(8)-4.9062*x(2)*x(7)^2+4.6322*x(2)*x(7)*x(8)+95.5524*x(2)*x(8)^2-66.542*x(3)^3+3.652*x(3)^2*x(4)-60.9312*x(3)^2*x(5)+8.8207*x(3)^2*x(6)-6.9722*x(3)^2*x(7)-0.24821*x(3)^2*x(8)+5.94*x(3)*x(4)^2+11.9592*x(3)*x(4)*x(5)+3.1492*x(3)*x(4)*x(6)+10.8806*x(3)*x(4)*x(7)+2.9406*x(3)*x(4)*x(8)-72.9428*x(3)*x(5)^2+9.0682*x(3)*x(5)*x(6)-5.4897*x(3)*x(5)*x(7)+17.7925*x(3)*x(5)*x(8)+4.6864*x(3)*x(6)^2-3.0694*x(3)*x(6)*x(7)+1.0026*x(3)*x(6)*x(8)+6.0892*x(3)*x(7)^2+6.471*x(3)*x(7)*x(8)+7.6957*x(3)*x(8)^2-15.5025*x(4)^3-6.8411*x(4)^2*x(5)-18.0178*x(4)^2*x(6)-4.529*x(4)^2*x(7)-10.8145*x(4)^2*x(8)+5.4568*x(4)*x(5)^2+9.8686*x(4)*x(5)*x(6)+9.5521*x(4)*x(5)*x(7)-1.186*x(4)*x(5)*x(8)-11.8287*x(4)*x(6)^2-5.4597*x(4)*x(6)*x(7)-0.13939*x(4)*x(6)*x(8)+15.8085*x(4)*x(7)^2-8.3951*x(4)*x(7)*x(8)-3.1355*x(4)*x(8)^2-73.6128*x(5)^3+12.6939*x(5)^2*x(6)+3.6271*x(5)^2*x(7)+4.9746*x(5)^2*x(8)+2.804*x(5)*x(6)^2-3.111*x(5)*x(6)*x(7)-1.1569*x(5)*x(6)*x(8)-0.024943*x(5)*x(7)^2+6.3602*x(5)*x(7)*x(8)+0.88499*x(5)*x(8)^2-9.84*x(6)^3+6.9954*x(6)^2*x(7)+27.6188*x(6)^2*x(8)-12.8032*x(6)*x(7)^2+7.3214*x(6)*x(7)*x(8)+0.6733*x(6)*x(8)^2+27.1313*x(7)^3+4.7459*x(7)^2*x(8)-15.2874*x(7)*x(8)^2-145.6249*x(8)^3-56.6297*x(1)^4+0.12745*x(2)^4+112.8036*x(3)^4-21.1416*x(4)^4+64.8184*x(5)^4+22.913*x(6)^4+92.9163*x(7)^4+46.8309*x(8)^4)^(1/0.5);
numberOfVariables = 8;
% If decision variables are bounded provide a bound e.g, LB and UB.
LB=[-1-1-1-1-1-1-1-1];
UB=[11111111];
Bound = [LB;UB]; % If unbounded then Bound = []
% Create an options structure to be passed to GA % Three options namely 'CreationFcn', 'MutationFcn', and % 'PopInitRange' are required part of the problem.
options = gaoptimset('CreationFcn',@int_pop,'MutationFcn',@int_mutation, ...
'PopInitRange',Bound,'Display','iter','StallGenL',800,'Generations',1000, ...
'PopulationSize',400,'PlotFcns',{@gaplotbestf,@gaplotbestindiv})
es liegt in der Natur eines genetischen Algorithmus, dass verschiedene Durchläufe unterschiedliche Ergebnisse liefern. Stelle dir vor, dass die Evolution auf der Erde mehrmals durchlaufen würde; da würden auch unterschiedliche Ergebnisse herauskommen.
Wenn du das vermeiden willst, kannst du mit RNG (bzw. falls du älteres Release verwendest, siehe Doku von RAND) den Status des Zufallszahlengenerators beeinflussen und deine Ergebnisse so reproduzierbar halten.
Sorry, ich habe mich nicht richtig ausgedruckt. für jede Ausführung dieses GA bekommt ich unterschiedlichen Ausgangwerte und möchte ich wissen, wie man Gleichen Werte für jedes Ausführen bekommen kann, wenn keine veränderungen gegeben wurden.
Danke nochmal!
Olga
Danke Harald,
Ich versuche mal mit dieser weiteren Option von RNG.
Gruß
Olga
Einstellungen und Berechtigungen
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.