Utilizzo dell'algoritmo genetico per la regolazione dei controller


9

Ho letto alcuni documenti per il controllo di sistemi non lineari (ad es. Pendolo non lineare). Esistono diversi approcci per il targeting di sistemi non lineari. I più comuni sono i controller di linearizzazione di feedback , backstepping e scorrimento .

Nel mio caso, ho fatto le parti teoriche e pratiche del controllo del modello non lineare di un semplice pendolo più altri problemi dei manipolatori in C ++. Per il pendolo, ho utilizzato un controller backstepping per risolvere l'attività di tracciamento per lo spostamento angolare e la velocità. I risultati sono

θ¨+(K/m)θ˙+(g/L)peccatoθ=u

dove e .m=0.5,K=0.0001,L=.2g=9.81

Grafico 1

Grafico 2

I risultati sono buoni Tuttavia, la regolazione del controller richiede tempo. La maggior parte degli articoli utilizza algoritmi genetici per ottimizzare i propri controller come PD, PID e controller backstepping. Non ho idea in questo campo e spero che qualcuno faccia luce su questo concetto, preferibile se esiste un campione MATLAB per almeno controllare un semplice pendolo.

Finora ho progettato una semplice GUI in C ++ / Qt per ottimizzare manualmente il controller. Nell'immagine seguente, la risposta del controller per la funzione step.

Schermata della GUI dell'applicazione di regolazione del controller

Risposte:


1

L'uso di metodi evolutivi (GA è uno di questi) per l'ottimizzazione dei parametri è in effetti un metodo comune [1] nel dominio di controllo. Soprattutto per i sistemi non lineari, le soluzioni analitiche per parametri ottimali possono essere difficili da trovare. I metodi evolutivi sono un modo per eseguire in modo efficiente una ricerca di parametri quasi ottimali.

Un metodo molto efficace e universale ampiamente utilizzato è CMA-ES . Esistono numerose implementazioni , inclusa MATLAB. So che il bilanciamento dei poli nelle sue varie forme è spesso usato come punto di riferimento.

L'applicazione dell'algoritmo di solito non è così difficile. Valutare le prestazioni del tuo risultato - questa è la funzione di fitness di EA - è di solito la parte più coinvolta.

[1] PJ Fleming, RC Purshouse, algoritmi evolutivi nell'ingegneria dei sistemi di controllo: un sondaggio, Control Engineering Practice, Volume 10, Numero 11, novembre 2002, Pagine 1223-1241, ISSN 0967-0661, http: //dx.doi. org / 10.1016 / S0967-0661 (02) 00081-3 .


Hai trovato qualche buon libro che ritieni valga la pena leggere su GA?
CroCo,

8

Gli algoritmi genetici sono una tecnica di apprendimento automatico per eliminare la necessità per un utente di "mettere a punto" un sistema e consentire invece a un computer di capire come mettere a punto il sistema. I vantaggi di questo approccio sono che consente di liberare tempo dai ricercatori / utenti e spesso può portare a un sistema che è sintonizzato meglio di ciò che il ricercatore / utente sarebbe stato in grado di raggiungere se stesso.

L'idea generale di utilizzare un algoritmo genetico seguirebbe un flusso di controllo di base come segue:

Create_X_Number_Of_Random_Controllers()
while (Not_Yet_Satisfied_With_tuning)
    Score_Each_Controller_Based_On_Performance()
    Remove_Lowest_Performing_Controllers()
    Create_New_Controllers_By_Mixing_Best_Performers()
    Add_Slight_Randomness_For_Evolution()
Display_Top_Performer()

Il miglior esempio che posso facilmente dimostrare di questo principio nella pratica è questo "gioco" che utilizza l'evoluzione genetica per progettare veicoli in grado di guidare su un percorso. La stessa idea si applica a qualsiasi sistema che si desidera mettere a punto senza dover effettuare alcuna messa a punto da soli. Esempio: http://rednuht.org/genetic_cars_2/


Se questo è ciò che intendeva @CroCo usando un algoritmo genetico, allora il metodo di ottimizzazione di Ziegler Nichols sarebbe un ottimo candidato per l'implementazione, perché è ben procedurale.
SteveO,

Non riesco a vedere cos'altro significherebbe @CroCo, ma il problema con Ziegler Nichols è che ti richiede ancora di sintonizzare uno dei componenti in cui come con un algo genetico puoi cambiare qualsiasi aspetto del sistema e si "evolverà" per abbinarsi senza che lo sviluppatore debba fare alcun lavoro bruto
beeedy

1
Questa risposta rappresenta ancora il processo generale per raggiungerlo. Gli algoritmi genetici sono un'intera area di studio e molto complessi, ma per spiegarli davvero in una breve risposta, ti consiglio di leggerli comunque se sei interessato a usarli per mettere a punto i tuoi modelli!
Beeedy,

2
Sto immaginando un algoritmo genetico mal delimitato che scatta abbastanza felicemente la corda quando si sintonizza.
Ramrod,

1
come accennato da @octopus, questo è difficile da ottenere con le apparecchiature fisiche effettive a meno che non si desideri concedere un lungo periodo di tempo per consentire al computer di controllare fisicamente il dispositivo che si sta tentando di sintonizzare, anche se è necessario un programma "guardiano" che monitora e classifica ogni controller in base alle prestazioni e verifica che non danneggi la macchina. Tutto sommato, questo è un compito relativamente complesso che richiederà molta lettura sugli algoritmi genetici da implementare, questo non è un compito piccolo.
Beeedy,

2

Sono confuso da quello che stai chiamando un algoritmo genetico. I controller PD, PID, ecc. Non sono metodi euristici né stocastici e non si basano su algoritmi evolutivi. Sono, invece, algoritmi deterministici intesi a consentire il posizionamento di poli e zero di una risposta del sistema per fornire le prestazioni desiderate (minimizzazione dell'errore, velocità di risposta, tempo di assestamento, stabilità e rifiuto del disturbo). Un buon riferimento all'apprendimento, secondo me, è il libro sui sistemi di controllo automatico di Kuo . Puoi trovare un trattamento meno rigoroso nel libro di Ingegneria del controllo automatico di Raven .


Non conosco l'algoritmo genetico (GA). Ho appena visto alcuni documenti che affermano che la parte di ottimizzazione dei loro controller è stata eseguita utilizzando GA. Non ci sono ulteriori dettagli nei loro articoli in merito a questa questione. Non so che diavolo sia GA e come posso utilizzarlo.
CroCo,

L'uso di metodi evolutivi per la regolazione dei parametri è una tecnica molto comune. Lo considero un metodo alternativo agli approcci analitici che stai descrivendo.
Jakob,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.