www.modeler-forum.com https://modeler-forum.com/ |
|
Zustandsautomat https://modeler-forum.com/viewtopic.php?f=29&t=80 |
Page 1 of 1 |
Author: | roch [ Sat 8. Jan 2011, 16:27 ] | ||
Post subject: | Zustandsautomat | ||
Guten Tag, vielleicht gibt mir jemand einen Tipp: Der Hamburger Hochbahnzug, den ich simuliere, hat 4 Zustände: 0: Stehen 1: Beschleunigen 2: Rollen 3: Bremsen. Mit gewissen Bedingungen komme ich von einem Zustand zum anderen. Den Zustand speichere ich in einer Bestandsvariable und mache geeignete Zuflüsse, so dass ich genau den gewünschten nächsten Zustand erreicht. Dies klappt gut bei einer Euler-Cauchy-Simulation mit Schrittweite 1. Habe ich aber eine kleinere Simulationsschrittweite, so erhalte ich Zahlen, die nicht genau den Zuständen entsprechen. Dies ist in sich auch logisch. Leider benötige ich kleinere Schrittweiten (sonst fährt der Zug über den Bahnhof hinaus ) Ich suche also nach einer Möglichkeit, Zustandsübergänge zu simulieren, trotz Simulationschrittweite < 1. (Im Anhang mein derartiger Simulationsstand. Der Zustand wird im Bestandsfaktor Zustand gespeichert. Der neue zu setzende Zustand des Zuges wird in NeuerZustand ermittelt. In Zustandszufluss wird der Zustandszufluss derart berechnet, dass der nächste Zustand auf genau den gewünschten Zustand kommmt. Leider geht dies nur bei Simulationsschrittweite 1) Ich hoffe, jemand ist so nett und gibt mir einen Hinweis. Danke Thomas
|
Author: | Kai [ Wed 12. Jan 2011, 13:20 ] |
Post subject: | Re: Zustandsautomat |
Reicht es nicht, einfach eine kleinere Zeiteinheit zu nehmen, also von Minuten auf Sekunden zu wechseln - oder wenn es Millisekunden sein sollen entsprechend ohne Zeiteinheit Millisekunden zu meinen? Simulationsschritte kleiner 1 berechnen die Integrale von Beständen genauer - aber eben nicht mehr so, wie wir es als quasi-diskrete Simulation erwarten (...). Daher modeln wir immer in der kleinsten, relevanten Zeiteinheit einer Fragestellung. |
Author: | roch [ Wed 12. Jan 2011, 21:37 ] |
Post subject: | Re: Zustandsautomat |
Danke für die Antwort! Zur Not geht es, aber so richtig glücklich stimmt das nicht, zumal die Vorteile von RungeKutta nicht einsetzbar sind. Und die sollen meine Schüler ja auch lernen. Gibt es denn keine Möglichkeit, einer Bestandsvariable einen konkreten Wert zuzuweisen, ohne den Umweg über das Integral dt ( die Zuflüsse) zu nehmen, und das bei Simulationsabständen <1. Oder, anders ausgedrückt: Gibt es irgendetwas, was von Simulationszeitpunkt zu Simulationszeitpunkt gespeichert wird, und dem ich einen konkreten Wert geben kann? Danke für die Hilfe, |
Author: | Kai [ Thu 13. Jan 2011, 16:34 ] |
Post subject: | Re: Zustandsautomat |
Ich bin beeindruckt, dass die Schüler Runge-Kutta erlernen sollen. Bisher habe ich erst eine Hand voll Modellierer getroffen, die damit überhaupt etwas anfangen können. Diese haben aber mit Runge-Kutta genau das erzielt, was sie erwartet hatten. Nun zum möglichen Workaround: Muss es denn ein Bestands-Faktor sein? Wenn ja - ist vielleicht ein normaler Faktor mit Verwendung von acc() eine Alternative (ich habe es jetzt nicht probiert)? |
Author: | roch [ Fri 14. Jan 2011, 23:50 ] | ||
Post subject: | Re: Zustandsautomat | ||
Danke für den Tipp! Habe nun eine Lösung mit acc() für den Automaten (siehe Anhang). Ist zwar nicht besonders schön, funktioniert aber auch bei Euler-Cauchy-Schrittweiten <1. Mit Runge-Kutta geht es nicht. Aber ich gebe an dieser Stellt nun auf. Es kann ja auch ohne sein, muss ich Runge-Kutta an anderen Projektaufgaben unterrichten. Danke für die Hilfe. (Und vielleicht hat ja jemand noch eine bessere Idee.)
|
Page 1 of 1 | All times are UTC + 1 hour [ DST ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |