Class Tree  

Description 
A simplified version of the hydraulic system on a space shuttle consists of a directed graph, G, such that: * Nodes of this graph are labeled as tanks,jets, or junctions. * Every link between two nodes is labeled by a valve. * There are no paths in G between any two tanks. * For every jet there always is a path in G from a tank to this jet. Tanks can be full or empty. Valves can be open or closed. Some of the valves can be stuck in the close position. A state of G is specified by the set of full tanks, the set of open valves, and the set of valves stuck in the closed position. A node of G is called pressurized in state S if it is a full tank or if there exists a path from some full tank of G to this node such that all the valves on the edges of this path are open. We assume that in a state S a shuttle controller can open a valve V2 corresponding to a directed link <N1,N2> only if N1 is pressurized and not stuck. Problem: Given a graph G together with an initial state and a jet j, a shuttle controller needs to find a shortest sequential plan to pressurize j. Write a program which automates this process. We assume that your program will contain the following input and output atoms: Input atoms The graph should be described by the collection of ground atoms: * tank(t): t is a tank * jet(j): j is a jet * junction(p): p is a junction * valve(v): v is a valve * link(n1,n2,v): v is the valve on the pipe connecting node n1 and n2. * numValves(n): n is the total number of valves in the graph The state description uses atoms: * full(t) iff tank t is full. A tank is empty if it is not mentioned to be full in the input. * stuck(v): valve v is stuck The goal to achieve: * goal(j): jet j needs to be pressurized Output atoms A sequence of atoms of the form switchon(v,t). which means an action to open valve v at time step t where t is a number. All the actions should be consecutive and start from time step 0. E.g., a sequence * switchon(v1,1). switchon(v2,0). is fine. * switchon(v1,2). switchon(v2,1). is not allowed. * switchon(v1,0). switchon(v2,3). is not allowed too. Authors: Michael Gelfond, Ricardo Morales and Yuanlin Zhang. 
Encodings 1  2 of 2 
