Exercise Sheet 3 - 4

  • Folgenden Ansatz hätte ich zu bieten:


    Action(Traveling(x,y,z))[INDENT]Precond: connected(x,y) u. planet(x) u. planet(y) u. nShutdown(y) u. nShutdown(x) u. travel_to(x,y) u. arrived(x) u. planet(z)
    Effekt: travel_to(y,z) u. arrived(y) u. nArrived(x) u. nTravel_to(x,y) u. is_safety(y)[/INDENT]


    Action(Reinstall(x,y))[INDENT]Precond: connected(x,y) u. shutdown(y) u. arrived(x) u. planet(x) u. planet(y)
    Effekt: uShutdown(y)
    [/INDENT]


    Bedeutung der Aktionen:[INDENT]Traveling: Mit dieser Aktion kann man zwischen den Planeten in der Raumfähre reisen. Nach der Reise kann man eine Aussage treffen, ob der Planet das gewünschte Ziel hat.
    Reinstall: Mit dieser AKtion kann man eine beschädigte Raumfähre wieder in Betrieb nehmen zum Reisen.


    [/INDENT]
    Bedeutung der Funktionen:


    • planet(x) -> Die Variable x ist ein Planet.
    • shutdown(x) -> Der Planet x ist zwar verbunden durch eine intergalaktische Raumfähre aber diese ist deffekt!
    • travel_to(x,y) -> Der Routenplaner der Raumfähre zeigt an, dass die nächste fahrt vom Planeten x zum Planeten y geht.
    • arrived(x) -> der Raumfahrer befindet sich am Planeten x.
    • is_safety(x) -> Es kann eine Aussage über den Planet getroffen werden, ob dieser nun das gewünschte Ziel "safety and peaceful" hat.


    Die Galaxy, also den Spielraum für die Aktionen kann man sich nun nach belieben selbt definieren.

    One Thanks can change the world! ------- Never forget to belief in Dreams!

  • Sieht gut aus, ich wäre aber so vorgegangen, dass ich für Action(Travelling(...)) nur x und y verwende, also nur 2 Planeten. Dadurch wird es dann ja viel einfacher oder?

    "In der Informatik geht es genauso wenig um Computer, wie in der Astronomie um Teleskope."
    Edsger W. Dijkstra

  • naja ich habe mich ein wenig an dem Beispiel von den Folien gehalten :) außerdem kann ich, wenn ich schon einen anderen Planeten (z) hinzufüge gleich weitermachen :) also eine Queue bilden :)


    aber man kann es natürlich auch weglassen :)

    One Thanks can change the world! ------- Never forget to belief in Dreams!

  • Ich habs folgendermaßen gelöst:


    Action(Travel(x,y,z),
    [INDENT]Precond: Planet(x), Planet(y), Ferry(z), In(x), Connected(x,y,z), Operating(z)
    Effect: In(y), -In(x)[/INDENT]


    Action(Reinstall(x,y,z),
    [INDENT]Precond: Planet(x), Planet(y), Ferry(z), In(x), Connected(x,y,z), NotOperating(z), NotDestroyed(x)
    Effect: Operating(z), -NotOperating(z))[/INDENT]



    Bedeutung der Prädikate(!):
    In(x): Der Raumfahrer ist in x.
    Planet(x): x ist ein Planet.
    Ferry(x): x ist eine Raumfähre.
    Connected(x,y,z): Planet x und Planet y sind durch Fähre z miteinander verbunden.
    Operating(x): Fähre x ist in Betrieb.
    NotOperating(x): Fähre x außer in Betrieb.
    NotDestroyed(x): Fähre x ist nicht beschädigt.



    Man kanns sich sicher sparen, ein eigenes Prädikat für die Fähre zu definieren und den Aktionen die Fähre explizit mitzugeben, aber ich finds so schöner :)

  • warum habt ihr alle die ferry(x) und planet(x) prädikate?
    beim 3. beispiel bei grasp(x,y,z) ist ja bei den preconditions auch nicht paket(x) und container(y) dabei...
    ich glaub solche prädikate sind nur in TIL notwendig, wo alles ganz genau definiert sein muss ;)

  • warum habt ihr alle die ferry(x) und planet(x) prädikate?
    beim 3. beispiel bei grasp(x,y,z) ist ja bei den preconditions auch nicht paket(x) und container(y) dabei...
    ich glaub solche prädikate sind nur in TIL notwendig, wo alles ganz genau definiert sein muss ;)


    Lustig - genau das wollte ich auch gerade fragen... Im Beispiel in den Folien gibt's zwar auch Cargo(c), Plane(p) und Airport(a), aber im Beispiel 3 auf dem Übungsblatt nicht...

  • woher weisst du denn sonst, dass x eine fähre ist? damit lässt du ja auch zu dass du mit einem planeten z von planeten x nach planet y reist.. :)
    macht also schon sinn das zu machen finde ich.
    was ich nicht ganz verstehe, ist sowas wie connected(x,y,z) einzubauen. laut folien müssen die literale ja funktionsfrei und variablenfrei (ausser der geprüften) sein.
    ansonsten bricht man das ja nicht wirklich weiter runter, sondern ersetzt nur eine aktion durch eine andere anstatt da states zu beschreiben oder?
    sowas wie location(p1) AND connected(p2) würde ich sinnvoller finden

  • Wo ist denn das Problem an connected(x,y,z)? Wenn x und y durch z miteinander verbunden sind, gibt connected wahr zurück. Es handelt aich hier also nicht um eine Funktion, sondern es ist ein Prädikat, wie die anderen auch.

  • Täusch ich mich, oder müsste ich hier beim Initialzustand alle Verbindungen aus dem Graphen, sowie alle kaputten/nicht kaputten Ferries explizit angeben?


    Ja so habe ich das auch gemacht. Theoretisch müsste man dann auch für alle Zustände nach Aktionen all diese Prädikate angeben, aber habe das dann bei der Zeichnung weggelassen, da eigentlich aufgrund der des Initialzustandes und der Aktionen die Zustände teilweise "eh klar" sind und das viel zu viel Schreibaufwand wäre. Ich kann man nur vorstellen, dass bei der Prüfung ein kleineres Beispiel kommt, oder wir eben nicht für jeden Zustand alle Konjunkte angeben müssen.