Sto codificando una Particle Swarm Optimization in C ++. Sono stato per giorni a cercare di capire la teoria di come le dimensioni funzionano in ogni diverso problema.
Nei molti esempi che ho visto, tutti mostrano solo come può essere semplice problema (f (x) = pow (x, 2) + 5 * x + 20) può avere 2 dimensioni. Di solito l'asse "x" è uno e l'asse "y" l'altro. E combinando entrambi in uno spazio di ricerca bidimensionale ottieni una singola posizione nello spazio di ricerca. Molto semplice.
Ho visto persone mostrare alcuni esempi di codice in cui avevano impostato 20 o 50 dimensioni. Come mai è ??
Il mio problema da risolvere funziona così: Ho dei parametri, ogni parametro ha variazioni che vanno da 1 a 4. Esempio: i parametri A e B. Ciascuno ha 3 variazioni: A0, A1, A2 - B0, B1, B2. Fondamentalmente ci saranno 9 combinazioni di questi tipi:
A0-B0, A0-B1, A0 - B2
A1-B0, A1-B1, A1 - B2
A2-B0, A2-B1, A2 - B2
3 * 3 = 9
Nota: ogni combinazione avrà una forma fisica basata su alcuni test. Non c'è un grosso problema a riguardo.
Se avessi un 3 ° parametro con anche 3 variazioni, il mio numero totale di combinazioni sarebbe 27 (3 * 3 * 3) Quindi diciamo che ho 5 parametri, A, B, C, D ed E. A - 3 variazioni, B - 4 variazioni, C - 3 variazioni, D - 2 variazioni, E - 4 variazioni.
3, 4, 3, 2, 4 - numero di variazioni
Quindi 3 * 4 * 3 * 2 * 4 = 288 - numero massimo di combinazioni possibili ed è il mio limite superiore.
Quindi ognuna delle 288 posizioni rappresenterebbe una combinazione. Ogni particella, inizializzata casualmente, avrebbe una combinazione casuale.
Quindi, usando PSO, spero di fare meno test possibili e raggiungere comunque l'optimum globale.
Le mie domande sono:
- Quante dimensioni dovrei impostare per il mio problema?
- Mi manca qualcosa? / Ho capito qualcosa di sbagliato?
- Come può un problema avere più di 20 dimensioni?
- Le dimensioni sono facoltative?
Qualsiasi risposta, consiglio, documento sulle dimensioni sono le benvenute. Grazie