Discussione sull’articolo "Algoritmi di ottimizzazione della popolazione: Semina e Crescita degli Alberelli (Saplings Sowing and Growing up - SSG)"
Qual è il miglior algoritmo per trovare gli estremi locali?
In linea di massima, dobbiamo produrre un elenco di parametri che meglio rientrano negli estremi locali (vertici).
Utilizzando l'esempio di un riccio, mostrate le coordinate delle punte dei suoi aghi.
Mi dica, esistono algoritmi di ottimizzazione che abbiano le seguenti caratteristiche:
selezione di solo una parte dei parametri quando il loro numero è elevato;
i parametri selezionati vengono ottimizzati solo con un algoritmo genetico o con un algoritmo che può essere sostituito dalla genetica;
l'algoritmo per la selezione dei parametri attivi per l'iterazione corrente non ha importanza, è consentito cambiare gli intervalli e il passo dell'ottimizzazione
Qual è il miglior algoritmo per trovare gli estremi locali?
In linea di massima, dobbiamo produrre un elenco dei parametri che meglio rientrano negli estremi locali (vertici).
Utilizzando l'esempio di un riccio, mostrate le coordinate delle punte dei suoi aghi.
Per qualsiasi compito di ricerca globale, qualsiasi algoritmo tra quelli elencati in cima alla tabella funzionerà al meglio. È possibile scegliere quello più adatto individualmente se si sa, ad esempio, che la funzione è liscia o discreta, oppure scegliere quello più adatto in base al numero di parametri ottimizzati nel problema.
Di solito non si imposta il problema in modo tale che sia necessario trovare gli estremi locali, perché nella maggior parte dei problemi pratici il numero di estremi locali è sconosciuto (se non fosse così, sarebbe più facile usare metodi analitici), mentre il numero di estremi globali è noto - uno (se ci sono più globali con lo stesso valore, è equivalente al fatto che è uno). Ecco perché di solito il problema è impostato in modo tale che la funzione sia il più monotona possibile; un esempio è la minimizzazione dell'errore.
Non conosco algoritmi per risolvere problemi di ricerca di locali nel caso generale, e raramente è opportuno scrivere algoritmi specifici per un problema particolare. In questi casi, considererei il modo in cui si potrebbe rappresentare la FF per risolvere il problema. Potrebbero esserci diversi approcci, come l'utilizzo di AO come aggiunta al clustering. Un altro approccio al problema è quello di dividere la FF in ipotetici "strati", dal minimo globale al massimo globale (che deve essere trovato in anticipo), e poi esaminare ogni strato in modo sequenziale, cioè è necessario creare un task manager batch per AO.
In breve, vi deluderò: non esistono algoritmi per risolvere i problemi di ricerca degli estremi locali in forma generale. È più facile modificare la FF che creare un algoritmo speciale.
3. l'algoritmo per la selezione dei parametri attivi per l'iterazione corrente è irrilevante, è consentito cambiare gli intervalli e il passo dell'ottimizzazione
1. Beh, ad AO non interessa quanti e quali parametri sottoporgli per l'ottimizzazione, quindi si possono sottoporre ad AO tutti i parametri e non tutti.
2. È possibile applicare qualsiasi algoritmo singolarmente, congiuntamente, in sequenza e in combinazione. Ho cercato di rendere uniformi gli algoritmi presenti negli articoli.
3. In linea di principio, tutti gli algoritmi presentati possono essere modificati direttamente durante il processo di ottimizzazione. È sufficiente correggere l'inizializzazione in modo che la popolazione accumulata non venga azzerata. È possibile, ad esempio, ridurre il passo dei parametri ottimizzati in proporzione alle epoche trascorse (o aumentarle).
In breve, vi deluderò: non esistono algoritmi per risolvere problemi di ricerca di estremi locali in forma generale. È più facile modificare la FF che creare un algoritmo speciale.
Grazie. Trovo indirettamente gli estremi locali attraverso l'interruzione forzata dell'ottimizzazione quando è coinvolto un gran numero di core. In linea di massima, ci sono 20 agenti in Tester, interrompo l'ottimizzazione dopo 2000 passaggi.
Grazie. Trovo indirettamente quelli locali attraverso l'interruzione forzata dell'ottimizzazione quando è coinvolto un numero elevato di core. Grosso modo, ci sono 20 agenti nel Tester, interrompo l'ottimizzazione dopo 2000 passaggi.
Beh, è assolutamente antiscientifico! ))))) Intelligente, però.
Stavo pensando che ci sono algoritmi di maggiore "raggruppamento", quando la popolazione tende a dividersi in gruppi per località, come IWO, COA, ABC, BFO, le popolazioni di questi algoritmi possono essere analizzate per i gruppi di agenti (un'unità di ricerca logica in AO è chiamata agente) misurando la distanza euclidea tra gli agenti, cioè cercando gruppi di agenti con una distanza minima tra loro.
Si può anche provare in algoritmi di rollback (quando un agente effettua ripetutamente tentativi di ricerca in direzioni diverse dalla stessa posizione) come COA e HS o MA a impostare un contatore di tentativi, a creare fette di stati della popolazione attraverso diverse iterazioni e gli agenti con il maggior numero di tentativi saranno gli estremi locali. MA e BFO hanno questo contatore in modo nativo.
Cioè, ho detto che non ci sono modi esatti per cercare gli estremi locali (la ricerca di un globale può essere considerata "esatta" in questo senso), ma si può cercare approssimativamente come ho descritto sopra. Per una soluzione esatta è necessario conoscere le informazioni sulle differenze di FF.
ZЫ. Una domanda interessante per tutti coloro che sono interessati a questo argomento: qual è la differenza tra gli estremi locali e gli estremi globali (senza tenere conto della loro differenza nei valori di FF)?
ZZY Avendo risposto alla prima domanda, molte domande scompaiono da sole.
Sfortunatamente, sono incompetente in tutto, quindi sono interessato a una soluzione approssimativa ma pronta.
ZЫ. Una domanda interessante per tutti coloro che sono interessati a questo argomento: qual è la differenza tra gli estremi locali e gli estremi globali (senza tenere conto della loro differenza nei valori di FF)?
Se consideriamo il risultato dell'ottimizzazione come un insieme di passaggi, dopo aver applicato il clustering allo spazio dei passaggi calcolati in ingresso saranno visibili accenni a quelli locali. Inoltre, in ogni cluster otteniamo un'ottimizzazione "stretta".
Qual è il miglior algoritmo per trovare gli estremi locali?
In linea di massima, dobbiamo produrre un elenco dei parametri che meglio rientrano negli estremi locali (vertici).
Utilizzando l'esempio di un riccio, mostrate le coordinate delle punte dei suoi aghi.
Purtroppo sono incompetente, quindi mi interessa una soluzione approssimativa ma già pronta.
Se consideriamo il risultato dell'ottimizzazione come un insieme di passaggi, dopo aver applicato la clusterizzazione allo spazio dei passaggi contati in ingresso saranno visibili accenni a quelli locali. Inoltre, in ogni cluster otteniamo un'ottimizzazione "stretta".
- App di trading gratuite
- Oltre 8.000 segnali per il copy trading
- Notizie economiche per esplorare i mercati finanziari
Accetti la politica del sito e le condizioni d’uso
Il nuovo articolo Algoritmi di ottimizzazione della popolazione: Semina e Crescita degli Alberelli (Saplings Sowing and Growing up - SSG) è stato pubblicato:
L'algoritmo è uno dei pochi a non avere una chiara descrizione da parte degli autori (vengono fornite solo disposizioni e idee generali). Anche gli operatori dell'algoritmo presentati dagli autori non sono istruzioni pronte per l'implementazione algoritmica del programma. Non ci sono istruzioni chiare sugli alberi figli e dei genitori e sulla loro interazione. Non ci sono requisiti per l'ordine di esecuzione degli operatori e ogni utente può modificare l'ordine per ottenere una piantina migliore.
In senso lato, SSG non è un algoritmo di ottimizzazione, ma un insieme generale di regole progettate per integrare altri algoritmi e migliorare la qualità dell'ottimizzazione. In altre parole, SSG è un componente aggiuntivo per qualsiasi algoritmo evolutivo di popolazione, quindi ho spazio per l'immaginazione e l'opportunità di sperimentare un'implementazione specifica dell'algoritmo di ottimizzazione. Ho applicato alcuni dei miei pensieri e delle mie esperienze durante la scrittura di algoritmi precedenti e li ho utilizzati per lavorare con SSG. I risultati degli esperimenti sono presentati di seguito per il giudizio del lettore.
Per iniziare a comprendere l'algoritmo, dobbiamo pensare ad un albero come ad un agente di ottimizzazione. Un albero è una soluzione a un problema di ottimizzazione, in cui ogni ramo rappresenta un parametro ottimizzato del problema. Nella Figura 1 è riportata un'illustrazione astratta e artistica degli alberi figlio e genitore. Il tronco dell'albero è un insieme di parametri da ottimizzare. Ogni ramo è un parametro ottimizzato separato, la cui lunghezza è limitata dall’intervallo di valori consentiti del parametro corrispondente. La direzione dei rami non ha importanza e viene mostrata nella figura solo per evidenziare la loro differenza.
Autore: Andrey Dik