Idee für ein Schulprojekt

Hallo,

Ich muss für die Klasse 13/2 nun ein Projekt machen. Nun weiss ich aber einfach net was ich machen soll. Brauche dringend nen Vorschlag.
Zuerstmal was wir schon alles gemacht habn:
c/c++; windowprogramierun mit visual 6.0 (mit mfc), MySQL-DB

Wir hatten schon in der 12/2 ein Projekt gemacht da habe ich das Spiel „Sokoban“ programiert. siehe ganz unten auf unserer Projektseite:
http://mes-skripte.de/john/projekte-dvt/projekte.htm
da gabs auch volle pkt-zahl

So nun aber fällt mir absolut nix ein was ich diesmal machen sol. Es muss komplexer als das letzte Projekt sein (man muss sich ja steigern) aber möchte ich ent unbedingt wieder ein Spiel machen sondern mal was sinnvolles : )

Vieleicht etwas mit DB oder eine Simulation, ich weiss einfach net was. Tjo nun Bitte ich euch mal um Rat ^^

Ich muss für die Klasse 13/2 nun ein Projekt machen. Nun weiss
ich aber einfach net was ich machen soll. Brauche dringend nen
Vorschlag.

Hi Eduard,
wie wärs mit nem Programm was Sudokus löst oder einem was selbst Sudoku-Aufgaben bastelt.
Gruß
Reinhard

Auch hallo.

Hallo,

Ich muss für die Klasse 13/2 nun ein Projekt machen. Nun weiss
ich aber einfach net was ich machen soll. Brauche dringend nen
Vorschlag.
Zuerstmal was wir schon alles gemacht habn:
c/c++; windowprogramierun mit visual 6.0 (mit mfc), MySQL-DB

Aha…

Vieleicht etwas mit DB oder eine Simulation, ich weiss einfach
net was. Tjo nun Bitte ich euch mal um Rat ^^

Wie wär’s mit einer freien Geo-Datenbank, die man in eine andere (passende) DB ‚reinbekommen‘ muss und deren Inhalte mit einer 3D-Schnittstelle (OpenGL, DirectX, Java3D,…) visualisiert werden ?
Was Client-Server-Seitiges wie SAP WAS + SAP GUI muss ja nicht gleich sein :wink:

HTH
mfg M.L.

Mach doch ein Projekt zur Erzeugung von Lernkarten. Die Daten sollten über einen WYSIWYG-Editor eigegeben werden und in eine DB gehen. Dies sollte XML sein. Dann kannst Du über XSL und XSL-FO wunderbare layoutete Dokumente (oder Karteikarten) erzeugen.

Dabei würde ich java, jdom, saxon, xml, xsl und xsd nutzen. Für den WYSIWYG-Part kannst Du StyledDoxument von Java nutzen.

Gruss,
M.

Hallo,

Zur Simulation, in der schwierigkeit beliebig ausbaubar:

Ampelschaltung

  • vernetzt
  • frei ladbare Algorithmen zu den Schaltphasen
  • Simulation mit Verkehrsfluß
  • Bestimmung der mittleren Geschwindigkeiten/Standzeiten
  • evolutives Modell zur Optimierung der Ampelphasen
  • Verwaltung versch. Szenarien in Datenbanken

Grüße,
Jochen

Also, die Verkehrssimulation find ich wirklich interessant, und auch realisierbar mit meinen Fähigkeiten. Hab jedoch ne Frage:
Was meinst du mit evolutives Modell? Meinst du damit dass das Programm den Verkehrsfluss von sich heraus optimiert?
und dann zum letzten Pkt. , wie meinst du das genau?
Die Idee interessiert mich, weil so eine Simulation würd ja alles abdecken was wir bisher gemacht haben auf einmal bis auf die Interface-Technik. Aber die könnte ich ja dann auch noch irgendwie unterbringen…

Jo ich weiss, ich sollt lieber selber nachdenken, tu ich auch, aber ich will wieder 15 Punkte haben, is mir wichtig, deshalb hol ich mir lieber Tipps von Profis : )

Danke schon mal :smile:
Gruss, Eduard

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Simulationsframework
Hallo,

wie viel Aufwand darfs denn sein?

meine Idee: schreib ein Programm, mit dem man einfache Simulationen eingeben und durchführen kann. In so einem Programm kann man dann verschiedene Größen zueinander in Beziehung setzen, und damit recht leichte komplexe Vorgänge simulieren. Schau dir mal http://www.powersim.com/products/studio.asp an, an sowas habe ich gedacht. Als kleine Warnung: sowas ist mehr Arbeit, als es aussieht :wink:

Grüße,
Moritz

Hallo,

freut mich, dass Du Interesse hast.

Zum evolutiven Modell der Optimierung:

Optimiert werden sollen die Schaltphasen der Ampeln, um einen möglichst guten Verkehrsfluß zu erreichen (also wenig Standzeiten, wenig stop-and-go, hohe mittlere Geschwindigkeit).

Zunächst mußt du die Zielgröße vernünftig festlegen. Die drei o.g. Kriterien spielen wohl sicher eine Rolle, wobei sich das letztgenannte eigentlich aus den beiden anderen ergibt. Diese Zielgröße soll dann minimiert (bzw. maximiert - je nach Definition) werden.

Dann musst du die Schaltphasen der Ampeln, ihre Reaktionszeiten auf herannahende bzw. wartende Fahrzeuge („Kontaktschwellen“) und - was nicht ganz einfach ist - ihre Interaktionen („Grüne Welle“) so programmieren, dass das Verhalten parametrisiert ist (also wählbare Parameter für alle wichtigen Eigenschaften der Ampelschaltung). Ich will als weiterführenden Tipp noch die Messung der Verkehrsdichte geben: In der rush hour könnte für die Ampel der Hauptstraße zB. eine längere Grünphase auch dann insgesamt den Verkehrsfluß verbessern, wenn gerade mal kein Auto kommt.

Diese Amplen stehen natürlich an Kreuzungen. Du brauchst also ein Modell von Straßen und Kreuzungen, auf denen der Verkehr fließen soll. Das geht vom einfachen Modell einer Kreuzung über eine Kreuzung mit schaltbarer Fußgängerampel bis hin zu einem System von Straßen durch eine Stadt mit Ein- und Ausfallstraßen, Wohngebiet, Industriegebiet und Einkaufszentrum.

Aus diesen Straßen fahren Fahrzeuge. In der Simulation setzt du im Rahmen der Modellvorgaben Fahrzeuge zufällig mit zufälligem Start- und Zielpunkt auf die Straße. Bei Alternativen Wegen kannst du für das Fahrzeug würfeln, welchen weg es nimmt (dabei muß es nicht eine 1:1 Chance für die Alternativen geben). Die Fahrzeuge müssen beschleunigen und verzögern, je nach Verkehrslage und eben Ampeln. Das ist nicht einfach, denn jedes Fahrzeug muss erkennen, welches Fahrzeug vor ihm fährt und in welchem Abstand. Bedenke, eine Reaktionszeit einzubauen beim Gasgeben und beim Bremsen. Tipp: Ein guter Ansatz ist schonmal, den (minimalen) Abstand zum vorausfahrenden Fahrzeug von der eigenen Geschwindigkeit abhängig zu machen. Das ergibt schon eine realistische Modellation des Verhaltens an Ampeln. Bedenke auch, dass ein abbiegendes Fahrzeug vor der Kurve verzögert, langsam abbiegt und dann wieder beschleunigt. Dieser ganze Teil mit den Autos ist programmtechnisch einer der anspruchsvollsten!

Die Gesamtheit aller Straßen, Ampeln, Fahrzeuge und Einstellungen für die Parameter zur Wahl von Start- und Zielpunkten der Autos nenne ich „Szenario“.

Jetzt erst kann man an’s Optimieren gehen.

Du nimmst dein Szenario, stellst die Parameter für alle Ampeln ein und lässt für eine bestimmte Zeit Fahrzeuge fahren, wobei du die jeweiligen Standzeiten und mittleren Geschwindigkeiten auszeichnest. Am ende der Simulation berechnest du die Zielgröße. Das machst du nicht nur einmal, sondern so oft wie möglich (sagen wir N mal; N>50 wäre gut), und zwar jedes mal mit etwas anderen Parameterwerten für die Ampeln. Wie stark die Parameter dabei variieren sollten, ist Erfahrungssache, da mußt du experimentieren. Diese N Simulationen sind jetzt praktisch N Individuen einer Population. Die Gesamtheit der Parameterwerte einer Simulation entspricht dem Genom des Individuums. Die Zielgröße ist ein Maß für die „biologische Fitnes“ des Individuums und damit für den Reproduktionserfolg. Genau das machen wir jetzt: Die fittesten n der insgesamt N Simulationen werden ausgewählt („Selektion“).

Im einfachen Fall ohne Sex werden nun ausgehend von den n Simulationen wieder N durchgeführt. Die Anzahl der neuen Simulationen mit den Parameterwerten der i. ausgewählten Simulation sollten der relativen Fitness der i. Simulation entsprechen. Als Beispiel: Es wurden n=3 aus N=50 Simulationen gewählt. f1,f2,f3 sind die Fitnesswerte, F ist die Summe f1+f2+f3, dann sind r1=f1/F, r2=f2/f und r3=f3/F die relativen Fitnesswerte. In der neuen Generation bekommen also r1*N Simulationen die Parameter der 1. ausgew. Simulation, r2*N die der 2. und r3*N die der 3. (jeweils als ganzzahlige Größen). Klar?

Bei der Zusammenstellung der neuen Generation werden nun alle Parameter ein wenig verändert („Mutation“). Die Stärke der Änderung kann eine Konstante sein, besser ist es aber, sie bei jeder Generation etwas zu verringern, damit die Optimierung konvergiert. Man könnte die Anderungsstärke auch von der Homogenität der Fitnesswerte abhängig machen…

Mit Sex wird die Sache etwas komplexer: Nach der Selektion folgt die Rekombination, also das Mischen von Teilen der Genome. Regeln dafür gibt es auch wieder beliebig viele. Ein Vorschlag: Für jedes der n ausgew. Individuen: Nimm einen zufälligen Anteil (in der Größe aber 50%) der Parameterwerte und ersetzte diese durch die entsprechenden Parameterwerte eines zufällig ausgewählten der anderen (n-1) Individuen. Wiederhole das ri*N mal für das i. Individuum. So bekommst du N neue Individuen mit gemischten Genomen, die dann auch wieder mutiert werden.

Neue Generation - neues Glück: wieder werden die Simulationen durchgeführt, die Fittness berechnet, die n besten ausgewählt usw.

Stelle dar, wie sich die Fittness von Runde zu Runde verändert. Brich ab, wenn die Änderungen vernachlässigbar werden.

Zum letzten Punkt: Was ein Szenario ist, habe ich ja erklärt. Damit sollte auch klar sein, was ich unter dem letzten Punkt verstehe.

Beste Grüße und viel Erfolg,
Jochen

1 Like