Campionato di ottimizzazione degli algoritmi. - pagina 79

 
Andrey Dik:
È fantastico! Gli approcci non convenzionali sono, se non la chiave del successo, almeno una buona base per esso. Allora, gareggerai contro i tuoi colleghi nel campionato?
Ero interessato a risolvere il problema proposto.
Ho finito l'asilo molto tempo fa :)
 
Andrey Dik:

"Non ci credo!" (с)

Beh, si può, naturalmente, incollare il dizionario di Dahl o Ozhegov nell'algoritmo e confrontarlo con parole conosciute, ma poi se il testo nel problema non avrà alcuna parola significativa (per esempio - un insieme casuale di lettere), allora l'algoritmo è sicuro di "impazzire".

Non farei dichiarazioni infondate.

Per questa particolare stringa, il mio algoritmo ha bisogno di 904 accessi al FF.

Per la stessa lunghezza di stringa (49 caratteri) ma con qualsiasi altro testo (anche con un set di lettere completamente senza senso e casuale) la quantità di chiamate FF sarà leggermente diversa.

In altre parole, le lettere stesse determinano il numero esatto di accessi.

La variazione è di circa ( +/- 40) chiamate a seconda del particolare set di lettere.

Quando si cambia la lunghezza della stringa, il numero di colpi aumenta, ma la proporzione rimane la stessa. Cioè, per ogni personaggio, una media di 15-20 chiamate al FF.

Quindi si può stimare che per una stringa di 100 caratteri, sono necessarie circa 2000 chiamate. E così via...

La precisione della stringa sarà sempre del 100%.

Ecco come funziona il mio algoritmo.

 
Event:
Ero interessato a risolvere il problema proposto.
Combattere - ho finito l'asilo molto tempo fa :)
puoi controllare

//+------------------------------------------------------------------+
//|                                                  OptimFFtext.mq5 |
//|                        Copyright 2016, MetaQuotes Software Corp. |
//|                                             https://www.mql5.com |
//+------------------------------------------------------------------+
#property copyright "Copyright 2016, MetaQuotes Software Corp."
#property link      "https://www.mql5.com"
#property version   "1.00"
#property strict

// тестовая фитнес функция чемпионата, не известна участникам
#import "FFtext.ex5"
int    GetParamCount();
void   GetParamProperties(double &min,double &max,double &step);
double FF(double &array[]);
int    GetCountRunsFF();
void   PrintCodeToFile(double &param[]);
#import

const int TextLen= 49;
const double EPS = 1 e-6;
double param[];
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   int Nparam=GetParamCount();
   ArrayResize(param,Nparam);
   ArrayInitialize(param,0.0);
   double temp[];
   ArrayResize(temp,Nparam);
   for(int n=0; n<Nparam;++n)
     {
      ArrayCopy(temp,param);
      double ffParam=FF(param);
      for(int k=1; k<TextLen;++k)
        {
         temp[n]=(double)k;
         double ffTemp=FF(temp);
         if(ffTemp<ffParam-EPS)
           {
            break;
           }
         if(ffTemp>ffParam+EPS)
           {
            ArrayCopy(param,temp);
            break;
           }
        }
     }
   Print("Количество вызовов FF = "+IntegerToString(GetCountRunsFF()));
   PrintCodeToFile(param);
  }
 
Event:
Potete controllare.

Ho controllato - il tuo algoritmo è qualche chiamata avanti al mio a 49 caratteri, ma quando aumenti il numero di caratteri, il mio è chiaramente avanti al tuo di un paio di centinaia.

Prova a mettere questo: "Raramente, un documento accademico combina questi due tipi". Tu ricevi 1113 chiamate, io ne ricevo 891.

Penso che se si continua ad aumentare il numero di caratteri nella linea, la differenza non potrà che aumentare.

Lo controllerò domani.

 
Реter Konow:

Ho controllato - il tuo algoritmo è qualche chiamata avanti al mio a 49 caratteri, ma quando aumenti il numero di caratteri, il mio è chiaramente avanti al tuo di un paio di centinaia.

Prova a mettere questo: "Raramente, un documento accademico combina questi due tipi". Tu ricevi 1113 chiamate, io ne ricevo 891.

Penso che se si aumenta ulteriormente il numero di caratteri nella stringa, la differenza non potrà che aumentare.

Lo controllerò domani.

Non ho affermato che il mio fosse migliore del tuo). (Congratulazioni!
 
Реter Konow:
Evento:

Entrambi utilizzate la conoscenza dei FF del problema di ottimizzazione. Cioè, state risolvendo il problema "di petto".

Ma l'obiettivo del campionato è quello di ottimizzare una FF sconosciuta. Cosa faranno i vostri algoritmi se si scopre che il problema ha il passo 0, o l'intervallo risulta essere sulla linea dei numeri interi? O se la dipendenza del valore di FF dai parametri è non lineare?

Conoscendo il tempo medio per ogni chiamata di FF, si può calcolare con precisione quanto tempo ci vorrebbe per risolvere il problema in un caso del genere, e potrebbe richiedere più tempo del tempo di esistenza dell'universo.

I vostri algoritmi non sono universali e sintonizzati su un compito particolare; sono buoni a modo loro, ma inadatti anche per ottimizzare semplici Expert Advisors, per non parlare del TS sulle reti neurali e l'intelligenza artificiale.

Pensate all'universalità, pensate a cosa fareste se non conoscete il contenuto del compito con il testo, altrimenti il compito dell'11 luglio sarà un dado troppo duro da rompere per i vostri algoritmi.

ZZYEvent, infatti, ho controllato, se il testo consiste nelle prime lettere di un tasto come "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", il numero di chiamate FF è ridicolmente basso, ed è totalmente comprensibile il perché.

ZZZY.rettag,Event, sei bravo comunque - hai mostrato un po' d'ingegno.

 
Andrey Dik:

Entrambi state usando la conoscenza dei FF del problema di ottimizzazione. Cioè, state risolvendo il problema "di petto".

Ma l'obiettivo del problema è quello di ottimizzare un FF sconosciuto. Cosa faranno i vostri algoritmi se si scopre che il problema ha il passo 0, o l'intervallo risulta essere sulla linea dei numeri interi? O se la dipendenza del valore di FF dai parametri è non lineare?

Conoscendo il tempo medio per ogni chiamata di FF, si può calcolare con precisione quanto tempo ci vorrebbe per risolvere il problema in un caso del genere, e potrebbe richiedere più tempo del tempo di esistenza dell'universo.

I vostri algoritmi non sono universali e sintonizzati su un compito particolare; sono buoni a modo loro, ma inadatti anche per ottimizzare semplici Expert Advisors, per non parlare del TS sulle reti neurali e l'intelligenza artificiale.

Pensate all'universalità, pensate a cosa fareste se non conoscete il contenuto del compito con il testo, altrimenti il compito dell'11 luglio sarà un dado troppo duro da rompere per i vostri algoritmi.

ZSEvent, infatti, ho controllato, se il testo consiste nelle prime lettere di un tasto come "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa", il numero di chiamate FF è ridicolmente piccolo, ed è perfettamente comprensibile il perché.

Non agitarmi e non darmi per scontato. Non sono coinvolto nei vostri giochi.
Ho persino paura di chiamare la mia versione un algoritmo. Solo poche righe :)

PS E non trattarmi con condiscendenza. Ho anche versato una lacrima ;)
 
Andrey Dik:

Entrambi state usando la conoscenza dei FF del problema di ottimizzazione. Cioè, state risolvendo il problema "di petto".


Così ho fatto, ho risolto il problema di petto, ma ho lasciato del potenziale per lo sviluppo di un algoritmo. Penso di avere le basi per risolvere problemi di testo simili e di poter essere ulteriormente migliorato.

Entro l'11 luglio avrò la soluzione finale di problemi testuali simili di maggiore complessità.

 
Event:
Non cercare di agitarmi e di prendermi in giro. Non prendo parte ai vostri giochi.
Ho paura persino a chiamarlo algoritmo. Solo poche righe :)

PS E non trattarmi con condiscendenza. Ho anche versato una lacrima ;)

Dai, come posso? Nessuno dei due.

Non sono condiscendente, sono giusto (in questo caso particolare, almeno), inoltre, sono maleducato e cafone. Se non volete farlo, non partecipate, non sto trascinando nessuno per le orecchie!

;)

ZS. Posso fare il giocoliere con 3 oggetti qualsiasi entro un paio di chili, e posso stare in piedi sulla mia testa, ma se vengo a mostrare le mie abilità in un circo, gli artisti mi diranno la stessa cosa che ho detto a te.

 
Реter Konow:

È vero, ho risolto il problema di petto, ma ho lasciato del potenziale per sviluppare l'algoritmo. Penso di avere le basi per risolvere tali problemi di testo e di poterli migliorare ulteriormente.

Entro l'11 luglio, avrò pronta la versione finale della soluzione di problemi di testo simili di maggiore complessità.

Allora preparatevi per il problema del campionato, avete già fatto "riscaldamento" con "eccellente".