Page 1 of 2

Anfängerfragen

Posted: Tue 29. Dec 2009, 14:14
by schnurpel
hallo!

nach folgender skriptzeile:

if (1/v < x)
{
}

bekomme ich die fehlermeldung
Exception occurred during script execution!

liegts am dividierzeichen?
wenn ja, welches ist zu verwenden?

danke für die hilfe!

Re: Anfängerfragen

Posted: Tue 29. Dec 2009, 14:30
by schnurpel
hmmm, also das problem ist folgendes:

maximum=ergebnis/2;

funktioniert, aber bei

maximum=1/ergebnis;

kommt immer obige fehlermeldung.

maximum ist aber als double deklariert.

da bin ich leider ratlos :-(

zur erläuterung: "ergebnis" ist der wert aus einer datenzelle, den ich übernehme. liegt da vielleicht ein formatproblem vor?

Re: Anfängerfragen

Posted: Tue 29. Dec 2009, 15:39
by Admin
Kann es vielleicht sein, dass 'ergebnis' machmal '0' wird und so eine 'Division by Zero' exception auftritt?

Viele Grüße

Re: Anfängerfragen

Posted: Tue 29. Dec 2009, 16:02
by schnurpel
Admin wrote:Kann es vielleicht sein, dass 'ergebnis' machmal '0' wird und so eine 'Division by Zero' exception auftritt?

Viele Grüße
das muß irgendein anderes problem sein. ich hab jetzt folgendes rausgefunden:

maximum=1/2; ergibt 0

aber maximum=1/2.0;
oder maximum=1.0/2;

ergibt jeweils richtig 0.5

das heißt, ist eine ganze zahl im spiel, kommt der fehler

gruß

Re: Anfängerfragen

Posted: Tue 29. Dec 2009, 16:08
by Admin
das liegt daran, dass eine Division von Integerzahlen immer ein ganzzahliges Ergebnis hat, d.h., Nachkommastellen werden abgeschnitten.

Abhilfe schafft da entweder das Hinschreiben als Gleitkommazahl (also '1.0' anstatt '1') oder das explizite Casten ( = Umwandeln) in eine Gleitkommazahl vor der Division. In Angelscript geht das so:

Code: Select all

uint zahl = 5;  // Ganzzahlvariable

double ergebnis1 = zahl / 4;  // Diese Division ergibt als Ergebnis 0, da eine Ganzzahl dividiert wird
double ergebnis2 = double(zahl) / 4;  // Diese Division ergibt den Gleitkommawert der Division, da 'zahl' vor der Division auf 'double' gecastet wird.

Viele Grüße

Re: Anfängerfragen

Posted: Tue 29. Dec 2009, 17:16
by schnurpel
so etwas in der art hatte ich mir gedacht und es über einen umweg gelöst.
aber vielen dank für die information, sie wird zukünftig sehr hilfreich sein.

vg

Re: Anfängerfragen

Posted: Tue 29. Dec 2009, 20:46
by schnurpel
ich komm mir langsam schon blöd vor mit meinen vielen fragen, aber ich benutze das programm derzeit 20 stunden am tag und die ergebnisse sprechen für sich!

jetzt ist ein neuerliches problem aufgetaucht:

bei einem teil meiner validationsdaten bricht das skript mit folgender meldung ab:

Exception occurred during script execution!

komischerweise wird das netz aber mit den gleichen daten einwandfrei trainiert.
und das skript funktioniert bei anders gesplitteten daten auch.

was könnte das sein?

Re: Anfängerfragen

Posted: Tue 29. Dec 2009, 23:04
by Admin
Da kann ich leider nicht weiterhelfen, ohne alle zum Debuggen nötigen Informationen zu haben.

Ich bräuchte also ein Komplettpaket aus Skript, Netz, Daten usw. mit dem sich der Skriptabsturz reproduzieren lässt, dann versuche ich gerne zu helfen.

Viele Grüße

Re: Anfängerfragen

Posted: Wed 30. Dec 2009, 20:30
by schnurpel
danke, habs jetzt nach ner "nachtschicht" fieselkram selbst rausgefunden.

in einigen wenigen datensätzen hat sich ein "nicht"tzeichen (in vb "") eingeschlichen.
beim training werden die ignoriert, aber beim validieren per skript bricht das skript ab.

immer wieder gerne angemerkt: ganz tolles programm!

Re: Anfängerfragen

Posted: Thu 31. Dec 2009, 22:04
by schnurpel
mir fällt auf, daß sich netze oft recht gut trainieren, dann schlechter werden und dummerweise nicht mehr auf den guten zwischenwert zurückkehren.

gibt es eine funktion, die immer das netz zwischenspeichert, wenn ein neuer bestwert erreicht ist?
ich empfinde das als höchst sinnvoll und hilfreich, auch wenn das auf kosten der performance geht.

vg