= Hydraulic System Planning = <> == Problem 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 only if N1 is pressurized and not stuck. Problem: Given a graph G together with an initial state and a number of jets j1 ... jn, a shuttle controller needs to find a shortest sequential plan to pressurize j1,...jn. Write a program which automates this process. 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(s) to achieve: * {{{goal(j)}}}: jet j needs to be pressurized In output, a sequence of atoms of the form * {{{switchon(v, t)}}}. means an action to open valve v at time step t, where t is an integer. The switches should occur at consecutive time steps beginning from 0. (Note that, in contrast to the original description, the order of atoms in the output does not matter.) == Predicates == * '''Input''': {{{tank/1, jet/1, junction/1, valve/1, link/3, numValves/1, full/1, stuck/1, goal/1 }}} * '''Output''': {{{switchon/2}}} == Input format == == Output format == == Example(s) == == Note == With respect to the version of this problem as of the 2nd ASP Competition, there can be more than one goal per instance. == Author(s) == * Author: Francesco Calimeri * Affiliation: University of Calabria, Italy * Author: Maria Carmela Santoro * Affiliation: University of Calabria, Italy