NEUE VERSION: 'Kurs42_To_CNF'

Hier können alle Themen rund um die neuen zusätzlichen Blockungsprogramme diskutiert werden.

Moderator: wschrewe

B. Bartsch
Fachberater*in
Beiträge: 321
Registriert: Dienstag 4. Dezember 2018, 14:14
Schulform: Gymnasium

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von B. Bartsch »

bar_Kurs42_To_CNF_2020_04_10c

Bug behoben.
Zuletzt geändert von B. Bartsch am Freitag 10. April 2020, 22:40, insgesamt 1-mal geändert.
B. Bartsch
B. Bartsch
Fachberater*in
Beiträge: 321
Registriert: Dienstag 4. Dezember 2018, 14:14
Schulform: Gymnasium

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von B. Bartsch »

"alle Kurse vom Typ GK"
--> Ist nicht besser "alle vom Typ nicht LK" ?
B. Bartsch
B. Bartsch
Fachberater*in
Beiträge: 321
Registriert: Dienstag 4. Dezember 2018, 14:14
Schulform: Gymnasium

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von B. Bartsch »

bar_Kurs42_To_CNF_2020_04_10d

Niels Westphal hatte Probleme mit der vorherigen Version. Ich habe hier nun einiges geändert. Auch die Auto-Berechnungen haben nun eine Informationsanzeige (existierte vorher nicht). Aber die Auto-Berechnungen erzeugen auch Ordner und die werden nicht automatisch gelöscht. Das umzusetzen ist für mich gerade auch nicht so leicht ... :?
Zuletzt geändert von B. Bartsch am Freitag 10. April 2020, 22:40, insgesamt 2-mal geändert.
B. Bartsch
M. Plümper
Fachberater*in
Beiträge: 699
Registriert: Montag 1. Oktober 2018, 20:30
Schulform: Gymnasium
Kontaktdaten:

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von M. Plümper »

B. Bartsch hat geschrieben: Freitag 10. April 2020, 12:58 "alle Kurse vom Typ GK"
--> Ist nicht besser "alle vom Typ nicht LK" ?
Das geht auch.
Jaschke
Beiträge: 72
Registriert: Dienstag 28. Mai 2019, 11:52
Schulform: Gymnasium

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von Jaschke »

Hallo zusammen!
Geniale Umsetzung der Ideen, danke!!!

(Aber vielleicht kann mal jemand mir Laien erklären, was es mit den Threads auf sich hat? Wenn ich die hochsetze, ist meine CPU Auslastung höher, aber die Berechnungen dauern länger. Was bedeutet dann c Total time (this thread) : 25.29 | c Total time (all threads) : 26.92 Ich habe einen i7-6550U. Vielleicht auch in diesem Zusammenhang "Anzahl paralleler Berchnungen" --> was ist die beste Taktik? )

Schöne Ostertage!
Freundliche Grüße
Ansgar Jaschke
NielsWestphal
Beiträge: 565
Registriert: Sonntag 2. Dezember 2018, 18:33
Schulform: Gymnasium

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von NielsWestphal »

Meine Taktik:

LKs und GKs getrennt berechnen.

Ansonsten immer:
Threads: 1
Autooptimierung der Grundkurs-Kursdifferenz mit 6-8 parallelen Rechnungen (Schalter "K").

Dann einzelne Fächer weiteroptimieren bzgl. der Kursdifferenz.
mfg
Niels Westphal
Volker_Dirr
Beiträge: 94
Registriert: Sonntag 2. Dezember 2018, 19:55
Schulform: Realschule

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von Volker_Dirr »

Mehrere Threads belegen i.d.R. auch mehrere Rechenkerne. Sprich: die CPU Auslastung steigt.
Wenn mehrere Rechenkerne arbeiten, dann bedeutet das leider nicht, dass es auch wirklich schneller geht.
Das kommt in der Informatik, wie im echten Leben auch, auf die Aufgabe und die Aufgabenverteilung an.

Beispiele aus dem realen Leben:
Ein Mauer baut ein Haus. Ein zweiter Mauer hilft ihm => oft doppelt so schnell.

1000 Namen sollen alphabetisch sortiert werden. 2 Personen nehmen sich je 500 Namen, sortieren die, und anschließend sortiert noch eine Person diese 2 Stapel. => deutlich schneller als doppelt so schnell!

Ein Maurer und ein Maler stehen für das neue Haus bereit. Maler kann im Grunde erst arbeiten, wenn der Maurer fertig ist. => nicht doppelt so schnell.

100000 Maurer bauen ein kleines Haus. => Es ist nicht 100000 mal schneller. Die Maurer stehen sich gegenseitig auf den Fußen, es wird wesentlich langsamer.

...

So ist das in der Informatik auch. Je nachdem wie man es programmiert können mehrere Rechenkerne extrem hilfreich sein, aber auch extrem schaden. Das ist leider nicht immer so einfach zu sagen bzw. zu programmieren.

Wenn Sie z.B. mein Programm ausprobieren (siehe viewtopic.php?f=71&t=19&start=10#p7820 ), dann werden sie z.B. sehen, dass es nur einen Rechenkern nutzt. Trotzdem ist es nicht gerade langsam :-)

Langfristig werde ich aber auch versuchen Aufgaben auf mehrere Kerne zu verteilen. Leider kann ich mehrere Kerne nicht an die gleichen Aufgabe setzen, sie würden sich nur gegenseitig auf den Füßen stehen. Daher wird mein Trick darin bestehen das Programm einfach mehrfach unabhängig voneinander zu starten, da das Lösen des Problems leider unterschiedlich lange dauert.

Angenommen mit meinem Programm wollen Sie 4 mal blocken, dann kann es z.B. 1 Sekunde, 30 Sekunden, 1 Minute und 5 Minuten dauern.
Starte ich zufällig mit dem Weg, der nur 1 Sekunde dauert, dann hilft es nicht, wenn ich die anderen Wege noch ausprobiere. Mein Programm wird nicht schneller.

Starte ich aber zufällig mit dem Weg, der 5 Minuten dauert, dann hilft es, wenn ich gleichzeitig die anderen Wege ausprobiere. Dann würde ich nämlich parallel die 1 Sekunde Lösung finden und mein Programm wäre somit 600 mal schneller als vorher (obwohl es nur 4 Rechenkerne nutzt).

Bei einer CPU kommen jetzt leider zwei Besonderheiten:
Wenn nur 1 (oder wenige) Rechenkerne arbeiten, dann dürften die oft viel schneller arbeiten als wenn alle Rechenkerne gleichzeitig arbeiten. Bei ihrer CPU beträgt die "Geschwindigkeit" der CPU 2,5 GHz, wenn alle Kerne voll arbeiten. Arbeitet aber nur ein Rechenkern alleine, dann darf er 24% schneller arbeiten und auf 3,1 GHz beschleunigen.

Zweite Besonderheit: Viele Rechner haben „virtuelle“ Kernverdopplung. Es sieht so aus wie zwei Rechenkerne, sind es aber in Wirklichkeit nicht. Ob dieses sinnvoll genutzt werden kann kommt wieder auf die Aufgabe an.

Beispiel:
1 Rechenkern mit Kernverdopplung soll zwei Aufgaben gleichzeitig machen: (Reales Leben)
a) Deine Person soll 2 verschiedene Lieder singen. => geht nicht gleichzeitig. Gleichzeitig erzeugt nur Mist. Muss hintereinander gemacht werden.
b) Die Person soll 1 Lied singen und gleichzeitig Auto fahren. => geht gleichzeitig. Die Aufgaben werden also im Prinzip doppelt so schnell gemacht.

Spielen sie doch einfach mal mit den verschiedenen Parametern der verschiedenen Programme um ein Gefühl dafür zu bekommen. Ich würde mich sehr freuen, wenn Sie mal darüber berichten welche Programme (im Durchschnitt) ihren Datensatz am schnellten löst.

Schönen Gruß
B. Bartsch
Fachberater*in
Beiträge: 321
Registriert: Dienstag 4. Dezember 2018, 14:14
Schulform: Gymnasium

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von B. Bartsch »

Neue Version bar_Kurs42_To_CNF_2020_04_10r

An dem Buchstaben "r" sieht man, dass es Probleme gab. Die Möglichkeit den Tab zu schließen UND die Dateien zu löschen führten auf einigen Systemen zum Absturz. Der Fehler ist sehr komisch, aber leider kann ich das nicht drin lassen.

Im Vergleich zur Version vom Oktober 2019 ist nun folgendes neu:
- Eine Anzeige der verwendeten Einstellungen pro Tab.
- Regel: "LKs nicht von Schiene ... bis ..."
- Regel: "GKs nicht von Schiene ... bis ..." (wobei GK bei mir immer alles außer LK ist)

Zur Frage mehrerer CPUs:
- Die erste Berechnung sollte mit einem Kern, einer gewollten Umwählerzahl (z.B. 0) und einer sehr hohen erlauben Kursdifferenz (z.B. 20) sein.
- Sobald man ein Ergebnis hat, klickt man auf einen der drei Auto-Buttons (KS, K oder S) und wählt dort so viele Threads wie man dem eigenen Computer zutraut. Das Programm versucht nun die GK-Kursdifferenz um 1 zu verringern. Mehrere Kerne bei der Auto-Berechnung zu benutzen ist extrem hilfreich, da das Programm unterschiedliche Varianten durchprobiert.
- Die Strategie K fixiert ausgehend von der gefundenen Lösung die Kurse in den Schienen. Bei 4 parallel Berechnungen wird zu 100%, 66%, 33% und 0% zufällig fixiert. Das heißt nur eine Kern (0%) versucht von vorne alles zu berechnen, alle anderen Kerne orientieren sich an der bereits vorhandenen Lösung. Wird eine Lösung gefunden, brechen alle anderen Berechnungen ab und das Spiel beginnt von vorne mit einer um 1 verringerten GK-Kursdifferenz.
- Die Strategie S fixiert die Schüler in ihren Kursen und verhält sich analog.
- Die Strategie KS mischt beide Strategien.
Dateianhänge
bar_Kurs42_To_CNF_2020_04_10r.jar
(285.32 KiB) 303-mal heruntergeladen
B. Bartsch
Jaschke
Beiträge: 72
Registriert: Dienstag 28. Mai 2019, 11:52
Schulform: Gymnasium

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von Jaschke »

Danke für die Infos zu den Threads!

Eine Frage zu der Auto-Optimierung:
Ich hatte folgende Situation: Vorgabe Differenz = 20, Ergebnis = 15. Dann Auto-Optimierung: erster Versuch Vorgabe = 19, Ergebnis = 17. Wäre es nicht besser, das Programm ginge von der tatsächlichen Differenz aus?
Freundliche Grüße
Ansgar Jaschke
NielsWestphal
Beiträge: 565
Registriert: Sonntag 2. Dezember 2018, 18:33
Schulform: Gymnasium

Re: NEUE VERSION: 'Kurs42_To_CNF'

Beitrag von NielsWestphal »

Einfach die Vorgabe auf das Ergebnis (15) umstellen und dann die Autooptimierung starten.
mfg
Niels Westphal
Antworten

Zurück zu „Externe Blockungsprogramme“