- SF800 Solar Speicher Tutorial         
Ergebnis 1 bis 10 von 35

Thema: Genetischer Algorithmus für QuadroCopter

Baum-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #4
    Benutzer Stammmitglied
    Registriert seit
    09.05.2007
    Beiträge
    99
    simulated annealing = simulierte Abkühlung
    - Hat natürlich was mit Temperatur zu tun und ist ein heuristisches Optimierungsverfahren.
    - Nein, T ist gerade kein zufälliger Faktor sondern ein systematischer. Denn durch das kleiner werdende T wird das Suchintervall/Umgebung um w(0) immer enger.
    - Zufällig sind allein rp, ri und rd. Mit denen wird die Umgebung von w(0) "erkundet".
    - Halbieren von T muß nicht sein man kann auch allgemein mit a abkühlen d.h. T:=a*T mit a in ]0.0, 1.0[. (a:=0.5 ist nur die bequeme Mitte.)
    - Nein, einen vernünftigen ASURO Quellcode habe ich hier nicht an zu bieten. Denn der ist heute "verseucht" mit "tausend" kleinen Abkürzungen die das zu Grunde liegende simulated annealing Prinzip leider nur verschleiern.

    Aber mein C-code sieht ca. wie folgt aus:
    Code:
    typedef struct {double Kp, Ki, Kd;} Pid;
    
    int simulated_annealing(int N) {
    int test;
    PID w0, wcandidate={1000, 500, 30};
    double f0, fcandidate;
    double T=1.0;
    double fp=50, fi=10, fd=6;
    double a=0.99;
     fcandidate=fitness(wcandidate);
     w0=wcandidate;
     f0=fcandidate;
     for(test=0; fcandidate>10; test++) {
      int i;
      for(i=0; i<N; i++) {
       PID wi={w0.Kp + T*fp*r(), w0.Ki + T*fi*r(), w0.Kd + T*fd*r()};
       double f=fitness(wi);
       if (f<fcandidate) {
         fcandidate=f;
         wcandidate=wi;
        }
       }
       if (fcandidate<f0) T*=a;
       w0=wcandidate;
       f0=fcandidate;
       printf("%d T=%.4f, fitness=%4.1f: Kp=%6.1f, Ki=%6.1f, Kd=%6.1f\n", test, T, f0, w0.Kp, w0.Ki, w0.Kd);
     }
    }
    
    Und ausgehend von Kp= 1000, Ki= 500 und Kd= 30 auf der Suche nach den (angenommenen) optimalen Parametern z.B. Kp= 845.3, Ki= 555.2 und Kd= 4 liefert ein Beispiellauf folgende Ausgabe:


    0 T=0.9900, fitness=14650.0: Kp= 950.7, Ki= 501.5, Kd= 29.4
    1 T=0.9801, fitness=8098.1: Kp= 920.4, Ki= 510.6, Kd= 25.8
    2 T=0.9703, fitness=3977.0: Kp= 881.8, Ki= 507.4, Kd= 22.8
    3 T=0.9606, fitness=2280.7: Kp= 840.4, Ki= 512.2, Kd= 24.1
    4 T=0.9510, fitness=2254.4: Kp= 863.2, Ki= 515.8, Kd= 23.5
    5 T=0.9415, fitness=2073.1: Kp= 824.1, Ki= 520.2, Kd= 23.9
    6 T=0.9321, fitness=1795.5: Kp= 855.7, Ki= 521.1, Kd= 27.0
    7 T=0.9321, fitness=1795.5: Kp= 855.7, Ki= 521.1, Kd= 27.0
    8 T=0.9227, fitness=1782.5: Kp= 843.6, Ki= 523.9, Kd= 32.3
    9 T=0.9135, fitness=1075.5: Kp= 842.3, Ki= 532.9, Kd= 27.9
    10 T=0.9044, fitness=807.9: Kp= 857.9, Ki= 539.5, Kd= 24.0
    11 T=0.8953, fitness=418.5: Kp= 842.2, Ki= 544.8, Kd= 21.4
    12 T=0.8953, fitness=418.5: Kp= 842.2, Ki= 544.8, Kd= 21.4
    13 T=0.8864, fitness=381.6: Kp= 840.5, Ki= 552.3, Kd= 22.7
    14 T=0.8864, fitness=381.6: Kp= 840.5, Ki= 552.3, Kd= 22.7
    15 T=0.8864, fitness=381.6: Kp= 840.5, Ki= 552.3, Kd= 22.7
    16 T=0.8864, fitness=381.6: Kp= 840.5, Ki= 552.3, Kd= 22.7
    17 T=0.8864, fitness=381.6: Kp= 840.5, Ki= 552.3, Kd= 22.7
    18 T=0.8864, fitness=381.6: Kp= 840.5, Ki= 552.3, Kd= 22.7
    19 T=0.8864, fitness=381.6: Kp= 840.5, Ki= 552.3, Kd= 22.7
    20 T=0.8864, fitness=381.6: Kp= 840.5, Ki= 552.3, Kd= 22.7
    21 T=0.8775, fitness=332.9: Kp= 845.7, Ki= 545.4, Kd= 19.4
    22 T=0.8775, fitness=332.9: Kp= 845.7, Ki= 545.4, Kd= 19.4
    23 T=0.8687, fitness=213.1: Kp= 846.1, Ki= 554.1, Kd= 18.5
    24 T=0.8687, fitness=213.1: Kp= 846.1, Ki= 554.1, Kd= 18.5
    25 T=0.8687, fitness=213.1: Kp= 846.1, Ki= 554.1, Kd= 18.5
    26 T=0.8601, fitness=205.8: Kp= 838.1, Ki= 558.9, Kd= 15.8
    27 T=0.8515, fitness=134.7: Kp= 838.6, Ki= 557.0, Kd= 13.3
    28 T=0.8515, fitness=134.7: Kp= 838.6, Ki= 557.0, Kd= 13.3
    29 T=0.8515, fitness=134.7: Kp= 838.6, Ki= 557.0, Kd= 13.3
    30 T=0.8515, fitness=134.7: Kp= 838.6, Ki= 557.0, Kd= 13.3
    31 T=0.8429, fitness=82.4: Kp= 851.1, Ki= 557.6, Kd= 10.6
    32 T=0.8345, fitness=68.6: Kp= 840.1, Ki= 560.9, Kd= 6.8
    33 T=0.8262, fitness=67.7: Kp= 850.8, Ki= 555.5, Kd= 10.1
    34 T=0.8262, fitness=67.7: Kp= 850.8, Ki= 555.5, Kd= 10.1
    35 T=0.8262, fitness=67.7: Kp= 850.8, Ki= 555.5, Kd= 10.1
    36 T=0.8262, fitness=67.7: Kp= 850.8, Ki= 555.5, Kd= 10.1
    37 T=0.8262, fitness=67.7: Kp= 850.8, Ki= 555.5, Kd= 10.1
    38 T=0.8262, fitness=67.7: Kp= 850.8, Ki= 555.5, Kd= 10.1
    39 T=0.8262, fitness=67.7: Kp= 850.8, Ki= 555.5, Kd= 10.1
    40 T=0.8179, fitness=65.1: Kp= 838.7, Ki= 556.1, Kd= 8.5
    41 T=0.8179, fitness=65.1: Kp= 838.7, Ki= 556.1, Kd= 8.5
    42 T=0.8179, fitness=65.1: Kp= 838.7, Ki= 556.1, Kd= 8.5
    43 T=0.8097, fitness=60.7: Kp= 838.8, Ki= 551.1, Kd= 5.5
    44 T=0.8016, fitness=42.1: Kp= 847.0, Ki= 549.2, Kd= 2.3
    45 T=0.8016, fitness=42.1: Kp= 847.0, Ki= 549.2, Kd= 2.3
    46 T=0.8016, fitness=42.1: Kp= 847.0, Ki= 549.2, Kd= 2.3
    47 T=0.7936, fitness=23.1: Kp= 847.1, Ki= 552.0, Kd= 7.1
    48 T=0.7936, fitness=23.1: Kp= 847.1, Ki= 552.0, Kd= 7.1
    49 T=0.7857, fitness=20.8: Kp= 842.7, Ki= 551.7, Kd= 2.7
    50 T=0.7857, fitness=20.8: Kp= 842.7, Ki= 551.7, Kd= 2.7
    51 T=0.7857, fitness=20.8: Kp= 842.7, Ki= 551.7, Kd= 2.7
    52 T=0.7857, fitness=20.8: Kp= 842.7, Ki= 551.7, Kd= 2.7
    53 T=0.7857, fitness=20.8: Kp= 842.7, Ki= 551.7, Kd= 2.7
    54 T=0.7857, fitness=20.8: Kp= 842.7, Ki= 551.7, Kd= 2.7
    55 T=0.7778, fitness= 2.6: Kp= 844.9, Ki= 555.5, Kd= 5.5



    Lagestabilisierung der 3 Achsen hört sich einfacher an als Höhenregelung. Hier mein Vorschlag für eine Fitnessfunktion:
    f: summe(i in [0, tmax| sqr(ax(i-1)-ax(i))+sqr(ay(i-1)-ay(i))+sqr(az(i-1)-az(i)))

    Und ax(i), ay(i) und az(i) sind die Werte der 3 Achsen Gyros zum Zeitpunkt i.
    Geändert von rossir (20.08.2011 um 11:30 Uhr)

Ähnliche Themen

  1. Quadrocopter
    Von Thalhammer im Forum Suche bestimmtes Bauteil bzw. Empfehlung
    Antworten: 16
    Letzter Beitrag: 10.02.2011, 12:06
  2. Ballspielender Quadrocopter
    Von Andree-HB im Forum Allgemeines zum Thema Roboter / Modellbau
    Antworten: 3
    Letzter Beitrag: 09.12.2010, 17:01
  3. -=4C=- Quadrocopter
    Von Salvador im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 42
    Letzter Beitrag: 15.05.2009, 19:43
  4. quadrocopter
    Von goara im Forum Vorstellung+Bilder+Ideen zu geplanten eigenen Projekten/Bots
    Antworten: 257
    Letzter Beitrag: 27.12.2008, 21:07
  5. Gleichstrommotoren für Quadrocopter
    Von sebbi1989 im Forum Motoren
    Antworten: 0
    Letzter Beitrag: 25.01.2008, 12:53

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test