mit Hilfe der Halle) - Seite 3

 

Das Problem ist lösbar. Alle notwendigen Werkzeuge befinden sich in CodeBase.

Sie müssen lediglich einen Interpreter schreiben, der die Werte der Gene (kontinuierlicher Raum) in einen für das Problem erforderlichen diskreten Raum umwandelt.

Das Problem reduziert sich auf die Minimierung von ff=MathAbs(f-H)

wobei f=a+b+c+....

 
vitali_yv:

Die Berechnung auf mql5 kann ein ganzes Leben des TC dauern)


Eigentlich sage ich nur, dass man auf if verzichten kann und sollte, und ein wenig über die Tatsache, dass mql4 immer noch schneller ist als vb6 und viel schneller.

Länge des Ausdrucks 6, Anzahl der Varianten einer Variablen - 30, der mql4-Ausdruck wird in 493 Sekunden (8 min) gelöst. Dementsprechend wird die Lösung des Ausdrucks der Länge 7 4 Stunden in Anspruch nehmen. 8 ist 120 Stunden)).

Wenn die Bedingungen konstant sind (dieselben Zahlen) und die Länge des Ausdrucks begrenzt ist, kann man sich die Mühe machen, ein Array mit fertigen Lösungen zu erstellen und den Wert dann über Indizes abzurufen.

 
Integer:



Die Länge des Ausdrucks ist 6, die Anzahl der Varianten einer Variablen ist 30, in mql4 wird er in 493 Sekunden (8 min) gelöst. Dementsprechend wird die Ausdruckslänge 7 in 4 Stunden gelöst. 8 beträgt 120 Stunden).


Und die Summen sind 17 )
 
vitali_yv:
Und die Summanden sind 17 )


Dann ist auch der tspp keine Hilfe.

In mt5 6 Variablen, 30 Zahlen in 90 Sekunden gelöst (allerdings auf einem anderen Computer).

 
Integer:


Dann ist auch der tspp keine Hilfe.

In mt5 gibt es 6 Variablen, 30 Zahlen in 90 Sekunden gelöst (aber auf einem anderen Computer).

Was macht ihr denn da? Woher haben Sie diese erschreckenden Zahlen? Ich habe Netze mit Tausenden von Schuppen in ein paar Minuten trainiert, und hier....
 
joo:
Was macht ihr denn da? Woher kommen diese erschreckenden Zahlen? Ich habe Netze mit Tausenden von Schuppen in ein paar Minuten trainiert, und hier....


Versuchen Sie es:

int start()
  {
//----
   int c[]={10, 12, 14, 17, 21, 25, 30, 36, 43, 52, 62, 74, 89, 107, 128, 154, 185, 222, 266, 319, 383, 460, 552, 662, 795, 954, 1145, 1374, 1648, 1978};
   int Find=-1;
   

         int start=TimeLocal();
            for(int i1=0;i1<ArraySize(c);i1++){
            for(int i2=0;i2<ArraySize(c);i2++){
            for(int i3=0;i3<ArraySize(c);i3++){
               Comment(i1," ",i2," ",i3);
            for(int i4=0;i4<ArraySize(c);i4++){
            for(int i5=0;i5<ArraySize(c);i5++){
            for(int i6=0;i6<ArraySize(c);i6++){
               int s=c[i1]+c[i2]+c[i3]+c[i3]+c[i4]+c[i5]+c[i6];   
            } 
            }
            }
            }
            }
            }
      

   
   Alert("! "+(TimeLocal()-start));
//----
   return(0);
  }
 
Integer:


Versuchen Sie es:

Nein, so spiele ich nicht. :(

Ich werde es nicht einmal versuchen. Warum sollte ich? Wenn es zivilisiertere Methoden gibt, um eine Lösung zu finden, statt dummer roher Gewalt.

 
joo:

Nein, so spiele ich nicht. :(

Ich werde sie nicht einmal ausprobieren. Und wozu? Wenn es zivilisiertere Methoden gibt, um eine Lösung zu finden, statt dummer roher Gewalt.

Leider gibt es für viele Aufgaben noch immer keine zivilisierten Methoden, um sie zu lösen.

 
Integer:

Leider gibt es immer noch viele Probleme, für die es keine zivilisierten Methoden zur Lösung gibt.

Sie existieren. Nur wissen wir oft nichts von ihnen.

GUT. Prüfen Sie, ob ich die Bedingungen des Problems richtig verstanden habe:

Lösen Sie finden x, wenn a*x+b*x+c*x.....=H, a, b, c können Werte annehmen (10, 12, 14, 17, 21, 25, 30, 36, 43, 52, 62, 74, 89, 107, 128, 154, 185, 222, 266, 319, 383, 460, 552, 662, 795, 954, 1145, 1374, 1648, 1978).


Die Frage bleibt unklar - wie viele a, b, c.... gibt es in dem Problem?


Ich bin wie ein Kind, ich falle auf "Schwach?" herein. :)

Mir scheint, dass das Problem keine praktische Bedeutung hat, aber vielleicht irre ich mich. Wenn ich vollständige Bedingungen für das Problem erhalte, werde ich eine "zivilisierte" Lösung anbieten. Und ich werde das Instrumentarium nutzen, von dem ich gesprochen habe.

 

Das ist nicht die Aufgabe, um die es geht.

Ein genetischer Algorithmus wird nicht helfen. Sich einer Funktion zu nähern (sie zu minimieren) bedeutet nicht, sich in die richtige Richtung zu bewegen, man kann daneben stehen, aber der Eingang ist auf der anderen Seite. Hier kann es nicht "nur ein bisschen richtig" sein.