Campionato di ottimizzazione degli algoritmi. - pagina 117

 
La prima chiamata al FF deve consistere in un array formato dall'RNG normale della MT con una distribuzione uniforme? È impossibile usare il proprio RMS con una distribuzione normale? Che sia così, non insisto. Sui criteri di valutazione. Lei suggerisce di contare il tempo macchina dell'esecuzione del codice. Ma, mi dispiace, questa è un'altra cosa. Una cosa è mettere a punto il codice per una ricerca efficiente degli estremi e un'altra cosa è tenere conto del tempo macchina necessario per eseguire i componenti del programma, che inoltre dipende dallo stato dell'hardware al momento. Sarebbe più appropriato contare il numero di chiamate a ftp. Ma qui non insisto. Non voglio impantanarmi di nuovo in questioni procedurali, poiché non avrebbe importanza per il mio algoritmo. Ora ho una domanda. La regola che il numero di chiamate alle FF è fisso e uguale per tutti è rilevante?
 

Yuri Evseenkov:
1. Первое обращение к фф должно состоять иэ массива сформированного штатным ГСЧ МТ с равномерным распределением? Свой ГСЧ с нормальным распределением использовать нельзя?

2. Sui criteri di valutazione. Lei propone di contare il tempo macchina di esecuzione del codice.

1. Sulla prima inizializzazione non insisto, mi limito a raccomandare - per i FF sconosciuti (ed è il FF sconosciuto che sarà nel campionato) qualsiasi parametro iniziale è ugualmente buono, perché il FF è sconosciuto. Ecco perché è meglio usare un MSN qualsiasi (qualunque cosa, ma preferibilmente con il maggior numero possibile di variazioni numeriche). Tanto più che per risultati statisticamente affidabili si faranno almeno 20 esecuzioni dell'algoritmo, ed è semplicemente poco pratico inizializzare l'algoritmo con gli stessi numeri.

2. Già deciso, ci sono 2 criteri di valutazione, la precisione e il numero di corse FF. Ma il link che ho dato un esempio di calcolo, era molto tempo fa, lì invece del numero di corse è il tempo. Ecco perché ho chiarito nel mio post: la precisione e il numero di lanci di FF sono due criteri di valutazione, con la precisione che è 3 volte preferibile.

Secondo questo calcolo dei posti nella tabella, il mio algoritmo prenderebbe il primo posto secondo i risultati del vostro compito. Calcoliamo: la precisione è più alta, quindi il criterio di accuratezza è 3, e il numero di corse FF è più alto, quindi 0. Il totale è 3+0=3, e il tuo algoritmo otterrà 0+1=1, cioè meno punti. Ma questo non significa che vinca il tuo problema, perché diverse condizioni non sono soddisfatte. E se il FF massimo è conosciuto in anticipo, la tabella è calcolata un po' diversamente, al primo posto "virtuale" si mette il valore massimo, e i nostri posti sono calcolati già in base a questo (il numero di punti ottenuti sarà diverso).

 
Yuri Evseenkov:
La regola del numero di accessi è fissa e uguale per tutti?

No, non c'è mai stata una tale regola. C'è solo un massimo consentito. Meno colpi ci sono, meglio è, che è il secondo criterio più importante dopo la precisione.

Personalmente, non ho intenzione di preoccuparmi di questo, userò l'intero limite di accessi, in altre parole - scommetto sulla precisione.

 
Alexander Laur:

In breve, è una sciocchezza, non un campionato.

I criteri per determinare il vincitore sono inventati man mano.

In 15 pagine dovremo introdurre un parametro per stimare il vincitore.

È una fretta, non è ben ponderata.

E la realtà è più complicata dei sogni. :)

È questo il tuo Pensiero del giorno di oggi? O pensiero dell'anno?

I criteri sono stati approvati una dozzina di pagine fa, ma i principi e le formule di calcolo ancora prima. Ci sono molti floodbuster, il che complica la comprensione del materiale da parte del pubblico - ora ne avete il merito, complimenti a voi stessi.

Mi è stato chiesto e ho risposto. Se me lo chiederanno domani, risponderò di nuovo. Ma domani, domani, Vasya Vyazaperelezayko verrà e di nuovo osserverà profondamente: "Il campionato è una merda, le regole vengono inventate al volo!"..........

 
Alexander Laur:
Allora rispondete alla domanda: perché la precisione è 3 volte più preziosa del numero di chiamate FF!

Ho deciso così, l'organizzatore perché. Ci sono anche altre ragioni.

Avete mai scritto il vostro algoritmo di ottimizzazione? Potete immaginare cosa significa trovare l'1 giusto tra 2E16 e usare solo 50 tentativi? È più difficile che trovare un ago tra miliardi di pagliai. E questo solo se c'è un solo parametro, e se ce ne sono 500? 1000? 1000000?

 
Alexander Laur:
Sono le "altre" ragioni che interessano, cioè gli argomenti a favore del numero 3 piuttosto che del numero 10, per esempio.
La relazione empirica. Sono pronto ad aspettare per 3 minuti e ottenere un risultato 3 volte più accurato, che per un minuto e un risultato molto peggiore. Altri rapporti non sono pratici.
 
Alexander Laur:
E lei lo considera un argomento degno di determinare un vincitore?

E pensi che io non lo faccia? - Non si dovrebbe pensare così.

Rispondi alla mia domanda:

Andrey Dik:

Avete mai scritto il vostro algoritmo di ottimizzazione? Potete immaginare, per esempio, cosa significa trovare quello giusto tra 2E16 valori e usare solo 50 tentativi? È più difficile che trovare un ago tra miliardi di pagliai. E questo solo se c'è un solo parametro, e se ce ne sono 500? 1000? 1000000?

 
Alexander Laur:
Non sto contando nulla, sto chiedendo e aspettando una risposta. Perché dovrei speculare quando posso chiedere e ottenere una risposta dalla fonte.

Ecco la risposta: una relazione empirica. Non troverete da nessuna parte una risposta scientificamente fondata.

Ho cercato di trovare la dipendenza della precisione della soluzione dal numero di colpi ad una data probabilità di colpo insieme a Matemat, non ci siamo riusciti. Forse ha qualcosa a che fare con la regola dei 3 sigma, ma non necessariamente.

 
Alexander Laur:

...una domanda diretta: un algoritmo che non riesce a trovare un estremo con un dato errore, anche se non esattamente, dovrebbe essere autorizzato a partecipare al campionato?

Così mi siedo e rifletto... Rispondere direttamente o no. Ho deciso - devo rispondere!)

Perché hai chiesto il significato del criterio "accuratezza" che supera "manipolazione" di un fattore 3? Se c'è un criterio di "accuratezza", bisogna supporre che i partecipanti non avranno un'accuratezza del 100%... Ecco a cosa serve il criterio della "precisione", per classificare in base alla precisione. Quindi, concludiamo - può!, ma non deve (dovrebbe), perché perché qualcuno dovrebbe competere se il suo algoritmo dà sempre una risposta accurata al 100%, e significa contemporaneamente che per un numero accettabile di chiamate FF, dal momento che la risposta dell'algoritmo una volta ricevuta. Quindi, inequivocabilmente, non dovrebbe! - Inoltre, tale algoritmo dovrebbe essere nascosto e non mostrato a nessuno.

E sì... C'è un punto molto importante. Se l'algoritmo non "sa" dove si trova il massimo assoluto - e non lo sa, altrimenti perché lo cercherebbe? Siamo noi "esterni" che possiamo solo giudicare il grado di precisione dell'algoritmo conducendo esperimenti su di esso, ma non possiamo impostare il parametro "cerca con questa precisione", per motivi che spero siano già chiari.

 
Alexander Laur:

La risposta è semplice:

1. Se un algoritmo NON può trovare un estremo con una data precisione, non ha posto nel campionato;

2. Considerando il punto 1, solo gli algoritmi che CERCANO un estremo con una data precisione parteciperanno alla determinazione del vincitore;

3. nessuna classifica in termini di precisione. La precisione è data da un intervallo;

4. determinare un vincitore in base al numero di volte che il FF viene invocato.

A questo punto me ne vado, sono le 2 del mattino.

Capito.

Ma non si può fare così.

Prima di tutto: non c'è una ragione oggettiva per impostare la precisione. A qualcuno non piacerà una deviazione dell'1% e a qualcun altro andrà bene il 20%. Dipende in gran parte dal tipo di compito e dal tipo di algoritmo. Impostare una "precisione di passaggio" ad un campionato significherebbe estirpare diverse soluzioni algoritmiche interessanti.

In secondo luogo: la precisione dipende dagli accessi FF e in modo non lineare. Per diversi tipi di algoritmi questa dipendenza sarà diversa e non si può semplicemente dire "questo algoritmo è buono, e questo è cattivo" - ecco perché usiamo due criteri per valutare gli algoritmi nel modo più oggettivo possibile. C'era un terzo criterio - il tempo di esecuzione dell'algoritmo (non FF) - ma è molto soggettivo, perché gli algoritmi OCL che lo utilizzano volano su alcuni computer e rallentano su altri. Restano quindi solo due criteri: la precisione e i riferimenti alla FF.

Motivazione: