Algorithmus-Optimierung Meisterschaft. - Seite 60

 
Yuri Evseenkov:
D.h. es ist möglich, ein Null-Array zu übergeben und den Wert von FF herauszufinden, wenn alle Parameter gleich Null sind.

Liegt 0,0 innerhalb des Bereichs[-10,0;10,0]? - Ja, das tut sie. Sie können also den FF-Wert mit Parametern aus einem Array ermitteln, das mit den Werten 0,0 gefüllt ist.

Im Allgemeinen verbietet Ihnen niemand, absolut beliebige Zahlen in FF einzugeben, aber Sie werden nur im Bereich[-10.0;10.0] eine adäquate Antwort erhalten, während außerhalb des Bereichs die Zahlen auf diese Grenzen abgeschnitten werden. Wenn Sie dies nicht berücksichtigen, dann kann Ihr Algorithmus denken, dass er auf eine glatte grüne Fläche gekommen ist, weil der Wert von FF immer das Minimum (irgendeine, aber sich nicht ändernde) für FF gegeben sein wird, und unendlich in einer riesigen Weite von reellen Zahlen wandern (bis sein Prozess den Checker nicht stoppen wird).

 
Andrey Dik:

Liegt 0,0 innerhalb des Bereichs[-10,0;10,0]? - Ja, das tut sie. Sie können also den FF-Wert mit Parametern aus einem Array ermitteln, das mit den Werten 0,0 gefüllt ist.

Eigentlich verbietet Ihnen niemand, absolut beliebige Zahlen in FF einzugeben, aber Sie werden nur im Bereich[-10.0;10.0] eine angemessene Antwort erhalten, während außerhalb dieses Bereichs die Zahlen auf diese Grenzen abgeschnitten werden. Wenn Sie dies nicht berücksichtigen, dann ist Ihr Algorithmus kann denken, dass er auf einer glatten grizontalnuyu Oberfläche bekam, weil der Wert von FF wird immer das Minimum (jede, aber nicht ändern) für FF gegeben werden, und endlos wandern in immensen Dimensionen der reellen Zahlen (bis sein Prozess wird nicht aufhören, den Prüfer).

Ich hab's. Danke. Ich plane, die ersten 4 Aufrufe mit Arrays durchzuführen, die jeweils mit -10,0, 0,0, 10,0 und 2,7 gefüllt sind. Ich möchte 2,718 für meine Schaben aber Schritt 0,1. Das können Sie nicht tun.
 
Dmitry Fedoseev:

OK, ich bin weg, bleib do-mi, in deiner ruhigen do-mi Welt. Streichen Sie mich aus dem Gremium.

Ich erkläre es natürlich allen, die hier Panzerkugeln haben. In der zweiten Version des Skripts brauchen Sie FF() nicht zu importieren, da dieTeilnehmerfunktion dort ebenfallsimportiert wird, so dass FF() in der Teilnehmerfunktion nicht sichtbar ist. Die Funktion FF() muss in die Mitgliederbibliothek importiert werden. Selbst ein Beispiel für solch trivialen Blödsinn wird falsch dargestellt. Ich weiß, ich weiß, Sie werden sagen, das ist klar. Aber wenn es so klar ist, warum wird dann nicht das richtige Beispiel genannt? Mit einem Blick, als ob ich ein Idiot wäre.

Auf Wiedersehen.

Dim, Sie sollten zumindest die Funktionsweise der Exportfunktionen überprüft haben, bevor Sie auf dem Podium antreten. Ich zum Beispiel habe vor der Veröffentlichung meines Prototyps natürlich geprüft, ob er funktioniert. Und natürlich funktioniert es, d.h. keine benutzerdefinierte Bibliothek lädt ihre eigene Instanz einer Funktion.

Die MT-Laufzeitumgebung funktioniert im Allgemeinen anders, als Sie denken. Es wird nur eine Bibliotheksinstanz mit nur einer Instanz von Variablen in den Adressraum des Prüfskripts geladen, d.h. jeder wird nur eine bestimmte ff mit ihren spezifischen Parametern verwenden. Wenn Sie mir nicht glauben, laden Sie mein Beispiel herunter und sehen Sie es sich an.

 
Vasiliy Sokolov:

Dimitri hat nur nicht gesehen, dass es auch für das Mitglied zwei Optionen für die Algorithmusbibliothek gibt. Und der zweite hat die FF-Funktion Import (wie er sagt). Und die erste ist es nicht.

 
Vasiliy Sokolov:

Dim, Sie sollten zumindest die Arbeit der Exportfunktionen überprüft haben, bevor Sie eine große Ankündigung vom Podium aus machen. Andernfalls stellt sich heraus, aus einer Reihe von "Ich habe nicht beobachtet, aber ich beurteilen" Ich, zum Beispiel, vor der Veröffentlichung des Prototyps, natürlich, überprüft seine Leistung. Und natürlich funktioniert es, d.h. keine benutzerdefinierte Bibliothek lädt ihre eigene Instanz einer Funktion.

Die MT-Laufzeitumgebung funktioniert im Allgemeinen anders, als Sie denken. Es wird nur eine Bibliotheksinstanz mit nur einer Instanz von Variablen in den Adressraum des Prüfskripts geladen, d.h. jeder wird nur eine bestimmte ff mit ihren spezifischen Parametern verwenden. Wenn Sie mir nicht glauben, laden Sie mein Beispiel herunter und sehen Sie es sich an.

Ich habe bereits über einen Fall von Doppelimport gesprochen (ich konnte meinen Beitrag nicht finden, es gibt hier viele davon). Ja, deshalb ist es möglich, FF-Aufrufe durch einen Mitgliedsalgorithmus zu kontrollieren. Wenn das Skript und der Algorithmus jede einzelne Instanz der FF aufrufen würden, dann würde die Meisterschaft nicht stattfinden, weil es unmöglich wäre zu überprüfen, ob der Algorithmus die FF tatsächlich so oft aufruft, wie er es angibt.

...

Obwohl man wahrscheinlich mit einem einzigen Import im Algorithmus auskommen könnte, glaube ich nicht, dass es möglich ist, *.ex5 auszuführen, zu entladen und erneut auszuführen, um den Zähler zurückzusetzen (cleverer Plan des Teilnehmers), aber dann müsste der Teilnehmer die gesamte Statistik selbst aufrufen und andere Funktionen müssten von den Teilnehmern berücksichtigt werden, um Ergebnisse auszugeben, und das ist eine zusätzliche Komplexität für die Teilnehmer. Für das Skript ist es einfacher, alle notwendigen Informationen darüber anzufordern, ob sie die FF verwenden oder nicht.

Dennoch kann die doppelte Einfuhr in unserem Fall nicht als Fehler angesehen werden.

 

Andrey Dik:

Das brauchen Sie nicht zu wissen. Bleiben Sie innerhalb des Bereichs [-10,0;10,0] und Sie werden keine Probleme haben.


Liegt 0,0 innerhalb des Bereichs[-10,0;10,0]? - Ja, das tut sie. Sie können also den Wert von FF mit Parametern aus dem mit 0,0-Werten gefüllten Array erhalten.

Eigentlich verbietet Ihnen niemand, absolut beliebige Zahlen in FF einzugeben, aber Sie werden nur im Bereich[-10.0;10.0] eine angemessene Antwort erhalten, während die Zahlen außerhalb dieses Bereichs auf diese Grenzen abgeschnitten werden. Wenn Sie dies nicht berücksichtigen, dann kann Ihr Algorithmus denken, dass er auf einer glatten grünen Fläche gelandet ist, weil der Wert von FF immer das Minimum (irgendeine, aber nicht wechselnde) für FF sein wird, und endlos in einem weiten Feld von reellen Zahlen wandern (bis sein Prozess den Checker nicht stoppen wird).

Um den Algorithmus nicht einzuschränken, können wir eine Zeile in den FF einfügen, ohne uns um die Begrenzungen zu kümmern:

if(array[ArrayMaximum(array)]>10.0 || array[ArrayMinimum(array)]<-10.0) return(0.0);
 
Sergey Chalyshev:

Um den Algorithmus nicht einzuschränken, können Sie eine einzelne Zeile in den FF einfügen, ohne sich um die Begrenzungen zu kümmern:

warumreturn(0.0);?

oder genauer gesagt, warum 0,0?

 
Andrey Dik:

warumreturn(0.0);?

oder genauer gesagt, warum 0,0?

Wenn wir nur nach dem Maximum suchen, dann lautet die richtige Antwort

return(-DBL_MAX);
 
Sergey Chalyshev:

Wenn wir nur nach dem Maximum suchen, dann ist die richtige

Der Punkt ist, dass es in der Entwurfsphase möglich ist, "Oberflächen" mit Unstetigkeiten zu erhalten, mit Spitzen bis ins Unendliche (nach unten oder oben), aber FF sollte den korrekten Wert am Ausgang zurückgeben, so dass alle Randbedingungen bereits in FF berücksichtigt werden, was nicht zu einem Absturz durch FFs Fehler führen würde.

Deshalb denke ich, dass es besser ist, die Parameter auf akzeptable Grenzen zu reduzieren und FF mit diesen Parametern zu berechnen und das Ergebnis auszugeben, als wissentlich -DBL_MAX bei einem falschen Parameter auszugeben.

Die Teilnehmer kennen die Grenzen der Parameter und müssen diese einhalten, da es sonst viele Fragen gibt, die in jedem einzelnen Fall von Algorithmen schwer zu beantworten sind. So wie es ist, stellen wir alle Algorithmen auf die gleiche Stufe.

ss. .... wird mit Fragen überschwemmt werden: "Wie kann das in der Entwurfsphase sein?! Sie sagten, niemand wird von FF wissen!!!".... für diejenigen, die eine solche Frage stellen werden - lesen Sie zuerst den Thread.

 
Warum sind die Bereichszahlen gebrochen? Statt von -10,0 bis 10 in Schritten von 0,1 können Sie von -100 bis 100 in Schritten von 1 gehen.
Grund der Beschwerde: