"New Neural" ist ein Open-Source-Projekt für neuronale Netzwerke für die MetaTrader 5-Plattform. - Seite 49

 
TheXpert:

Wer hat Erfahrung mit der Arbeit in einem Team an einem großen Projekt?

Ich meine auch Erfahrungen mit VCS.

Im Allgemeinen, soweit ich es verstehe, gibt es eine Art von Sackgasse - hier, in der Hauptsache, alle unabhängigen Vögel, in der Lage, jedes Problem auf eigene Faust zu lösen (von Selbst-Studium der Sprache zu beschreiben, die komplexe Logik des Handels). Und ein Schwan, ein Flusskrebs und ein Hecht mit all ihren starken Eigenschaften in einem Karren können natürlich auch genutzt werden, aber sie reichen nur für 50 Seiten aktive Diskussionen in diesem Zweig des Forums...

Nun geht es darum, dass das Projekt einen Leiter haben muss, der:

  • wird sich erstens für das Endziel des Projekts interessieren,
  • Zweitens kann das Projekt in Phasen, Aufgaben und Unteraufgaben unterteilt werden, die jeder Programmierer in diesem Thread aufschreiben und in einer angemessenen Zeit erledigen könnte. Aufgaben und Teilaufgaben sollten vorzugsweise kontextunabhängig sein, d.h. so weit wie möglich von anderem Code abstrahiert werden.
  • Drittens muss man über das Projekt auf dem Laufenden bleiben und wissen, welche Teile in welchem Umfang fertig sind und ob es möglich ist, die Lösung der Teilaufgaben in die Gesamtaufgabe zu integrieren.
Die ideale Lösung wäre wahrscheinlich jemand von MetaQuotes, der ähnliche Erfahrungen hat, + es wäre eine Gelegenheit, TeamWox in Bezug auf die MQL-Community auszuprobieren, zumal Renat es schon einmal erwähnt hat.

 

Wenn die MCs in den nächsten Wochen nicht aktiv sind, kann das Projekt abgebrochen oder an einen anderen kommerziellen Standort verlegt werden.

Ohne die Kontrolle durch die MCs ist das Projekt als Opsource bedeutungslos.

 
Vladix:

Im Allgemeinen, soweit ich es verstehe, gibt es eine Art von Sackgasse - hier, in der Hauptsache, alle unabhängigen Vögel, in der Lage, jedes Problem auf eigene Faust zu lösen (von Selbst-Studium der Sprache zu beschreiben, die komplexe Logik des Handels). Und ein Schwan, ein Flusskrebs und ein Hecht mit all ihren starken Eigenschaften in einem Karren können natürlich auch genutzt werden, aber sie reichen nur für 50 Seiten aktive Diskussionen in diesem Zweig des Forums...

Nun geht es darum, dass das Projekt einen Leiter haben muss, der:

  • wird sich erstens für das Endziel des Projekts interessieren,
  • Zweitens kann das Projekt in Phasen, Aufgaben und Unteraufgaben unterteilt werden, die jeder Programmierer in diesem Thread aufschreiben und in einer angemessenen Zeit erledigen könnte. Aufgaben und Teilaufgaben sollten vorzugsweise kontextunabhängig sein, d.h. so weit wie möglich von anderem Code abstrahiert werden.
  • Drittens muss man sich über das Projekt auf dem Laufenden halten und wissen, welche Teile in welchem Umfang fertig sind und ob es möglich ist, die gelösten Teilaufgaben in die Gesamtlösung der Aufgabe zu integrieren.
Die ideale Lösung wäre wahrscheinlich jemand von MetaQuotes, der ähnliche Erfahrungen hat, + es wäre eine Gelegenheit, TeamWox in Bezug auf die MQL-Community auszuprobieren, zumal Renat es schon einmal erwähnt hat.

Alles in allem ist das, was er sagte, wahr. Jeder von uns ist in der Lage, dieses Projekt allein durchzuführen.

Aber wie immer steckt der Teufel im Detail.

Auf Materialien von 50 Seiten Angriff können wir zusammenfassen, dass es Ideen und von ihnen können Sie ganz vernünftigen Plan des Angriffs zu machen.

Die meisten sind zwar Einzelkämpfer, aber niemand sträubt sich gegen Teamarbeit. Schließlich ermöglicht die Teamarbeit die Parallelisierung von Aufgaben, wodurch das gesamte Projekt beschleunigt wird.

Und hier kommen wir zu den Details: Teamarbeit im klassischen Sinne setzt voraus, dass der Ausführende die Aufgabe erhält und sie in der vorgegebenen Zeit erledigen wird. Dann wird es möglich sein, den Projektfortschritt von einer einzigen Stelle aus zu planen und die Aufgaben an die Ausführenden zu verteilen. Die Ausführenden sind nämlich mit ihren eigenen Aufgaben beschäftigt und können sich nicht die ganze Zeit auf das ausgelagerte Projekt konzentrieren. Daher wird es bei der Entwicklung des Projekts unweigerlich zu einem Ungleichgewicht kommen.

Ich denke, die Lösung könnte in einer Ankündigungstafel bestehen, an der der Manager Aufgaben stellt, und die Künstler nehmen, was sie können, und berichten über Fortschritte und Fristen. Wenn die Aufgabenstellung klar formuliert ist, wird das Projekt abgeschlossen sein, bevor es beginnt :)

Und noch ein Detail, es wäre schön, eine Liste der häufig verwendeten Namen von Variablen und Methoden zu haben, nicht dass es grundlegend wäre, aber es wird einfacher sein, wenn es standardisiert ist. Natürlich ist es schwierig, eine solche Liste zu erstellen, aber einige allgemeine Grundsätze für die Namensgebung lassen sich ausarbeiten (oder ausleihen).

 
TheXpert:

Wenn die MCs in den nächsten Wochen nicht aktiv sind, kann das Projekt abgebrochen oder kommerziell und anderswohin verlagert werden.

Denn ohne MK-Kontrolle verliert das Projekt als Opsource seinen Sinn.

Das ist es, was Sie sagen.

Wenigstens zwei von uns, Sie und ich, können alles selbst machen.

ZZY und wie Sie richtig sagten, ist die kundenspezifische Entwicklung bereits eine kommerzielle Entwicklung.

Da die Zeit vergeht und nur einer den Quellcode hat, ist die Schlussfolgerung einfach.

 

Okay, wenn wir schon nach dem Weihnachtsmann suchen,

Ich werde den ganzen Müll, den ich in meinem Hirn ausgrabe, hier posten, vielleicht lässt sich daraus wenigstens etwas TOR zusammenstellen.


Grid-Engine
1. Grid-Initialisierung
2. Grid-Workflow
3. Grid-Training

1) Grid-Topologie kann über binäre Felder eingestellt werden
mehr dazu hier http://cgm.computergraphics.ru/content/view/25 section 7.Direct coding

Die Aufteilung in Grammatiken oder die direkte Kodierung ist bereits ein Überbau über die Initialisierungsmethode, ohnehin läuft am Ende alles auf die direkte Kodierung hinaus.
Die Topologien selbst (die den Löwenanteil der Schwierigkeiten bei der Spezifizierung eines Netzes ausmachen) beschränken sich also auf das Schreiben von Methoden zur Erstellung einer direkten Codierungstabelle.
In dem Artikel heißt es, dass es unmöglich ist, inverse Verknüpfungen anzugeben, aber wenn für jeden Rang des Verzögerungsoperators eine eigene Matrix von Verknüpfungen erstellt wird, verschwindet das Problem (obwohl die Matrix voll und nicht dreieckig wie bei der Nullverzögerung sein wird).
Es stellt sich heraus, dass die Überbauung über die direkte Kodierungsmethode wissen sollte, welchen Verzögerungsrang das Netz verwendet.
Neurontypen müssen auch im Überbau angegeben werden (diesen Punkt habe ich noch nicht ausgearbeitet, ich bin mir nicht sicher, ob ich Neurontypen schreiben und überladen muss oder ob ich sie durch einige liberalere Methoden festlegen muss) ?
Wir können vorerst beim Überladen von harten Typen stehen bleiben und wenn es eine Methode zur weichen Kodierung geben wird, fügen wir sie als eine der überladenen hinzu.

2) Der Arbeitshub wird durch vorgegebene Verknüpfungen (mittels Datenaggregation) und Neuronentypen bedingt, ich habe es auf Seite 5 dargelegt. Es sollten 4 Datenfelder draußen sein: Raster-Eingaben, Neuronen-Ausgaben, Gewichte, Raster-Ausgaben. Der externe Zugang zu den Netzeingängen und Netzausgängen wird beispielsweise für die Einspeisung und die betriebliche Nutzung des Netzes benötigt. Der externe Zugang zu Gewichten
ist für das Lernen erforderlich. Externer Zugriff auf dieNeuron-Outputs ist erforderlich, um sie zur Berechnung an die GPU zu senden. Grundsätzlich denke ich, dass die Datenfelder zunächst extern sein sollten, und schon diese externen Daten sollten im Netz aggregiert werden.

3) Ausbildung. Ich tendiere zum Training mit GA als einer Methode, die nicht von der Netzwerktopologie abhängt. Ich schlage vor, sie als Grundlage zu nehmen und sie, wenn möglich/erforderlich, mit der richtigen zu überladen.

Auf der Tagesordnung stehen drei Aufgaben.

Eine Schicht ist eine Vereinigung von Neuronen, die nicht von der gleichen Iteration abhängig sind und den gleichen Typ haben.


 

Eine Trennung ist eigentlich sehr realistisch.

Zum Beispiel gibt es die Schnittstelle IEvolvable. Eine Schnittstelle für die Genetikseite des Gitters. So können Sie und Andrei zum Beispiel in aller Stille Genetik sägen, indem Sie nur diese Schnittstelle benutzen.

 

Hier würde sich übrigens die Mehrfachvererbung als sehr nützlich erweisen.

________________

Einverstanden, ich werde versuchen, die Schnittstellen heute zu schreiben.

Im Übrigen. Der Projektleiter kann gpwr sein. Ich werde teilweise dafür verantwortlich sein.

Im Prinzip können wir das Projekt starten.

 
Igitt. Es geht bergab.
 

Dies ist eine solche Erinnerung an sich selbst und andere an die Arten der Datenbindung.

//+------------------------------------------------------------------+
//| Пример Ассоциации, Агрегации, Композиции                         |
//+------------------------------------------------------------------+
/*///
   * Ассоциация обозначает связь между объектами. Агрегация и композиция это частные случаи ассоциации.
   * Агрегация предполагает, что объекты связаны взаимоотношением "part-of" (часть-целое). 
     Агрегация может быть множественной, 
     то есть один и тот же объект одновременно может быть агрегирован в несколько классов, либо объектов.
   * Композиция более строгий вариант агрегации. Дополнительно к требованию part-of накладывается условие, 
     что "часть" не может одновременно принадлежать разным "хозяевам", и заканчивает свое существование вместе с владельцем.
/*///
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class Base
  {
public:
                     Base(void){};
                    ~Base(void){};
   int               a;
  };
//+------------------------------------------------------------------+

class A_Association
  {
public:
                     A_Association(void){};
                    ~A_Association(void){};
   void              Association(Base *a_){};
   // При ассоциации данные связываемого объекта 
   // будут доступны через указатель объекта только в методе, 
   // в который передан указатель.
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class A_Aggregation
  {
   Base             *a;
public:
                     A_Aggregation(void){};
                    ~A_Aggregation(void){};
   void              Aggregation(Base *a_){a=a_;};
   // При агрегации данные связываемого объекта 
   // будут доступны через указатель объекта в любом методе класса.
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
class A_Composition
  {
   Base             *a;
public:
                     A_Composition(void){ a=new Base();};
                    ~A_Composition(void){delete a;};
   // При композиции объект становится частью класса.
  };
//+------------------------------------------------------------------+
//|                                                                  |
//+------------------------------------------------------------------+
void OnStart()
  {
   Base a; 
   A_Association b;
   b.Association(GetPointer(a));
  }
 

Es gibt eine Nuance im Workflow-Problem: Da die Datenverarbeitungsmethoden vom Neurontyp abhängen, müssen sie Teil eines Objekts des Neurontyps sein.

Die Nuance liegt darin, was als Schicht zu betrachten ist. Wenn eine solche Formulierung, die ich gegeben habe, wäre es schwierig, die Berechnung in der GPU zu organisieren.

Wenn wir uns an die Formulierung von TheXpert halten, gäbe es Probleme mit der Belastung der GPU.

Im Großen und Ganzen neige ich zur Kompromissformulierung (Kombination), die weniger Probleme mit sich bringt, obwohl sie das Problem der GPU-Belastung mit sich bringt.

Die Schicht ist eine Vereinigung von Neuronen, die nicht von der gleichen Iteration abhängen und den gleichen Typ haben.

Haben Sie eine Idee?

PS: Irgendwelche Einwände?