示例#1
0
    def setUpClass(cls):
        with open('rddl/Reservoir.rddl', mode='r') as file:
            RESERVOIR = file.read()

        with open('rddl/Mars_Rover.rddl', mode='r') as file:
            MARS_ROVER = file.read()

        parser = RDDLParser()
        parser.build()

        cls.rddl1 = parser.parse(RESERVOIR)
        cls.rddl1.build()
        cls.rddl2 = parser.parse(MARS_ROVER)
        cls.rddl2.build()
        cls.rddls = [cls.rddl1, cls.rddl2]
示例#2
0
 def _load_rddl_model(self, filename):
     with open(filename, 'r') as input_file:
         rddl = input_file.read()
     parser = RDDLParser()
     parser.build()
     # parse RDDL
     return parser.parse(rddl)
示例#3
0
文件: utils.py 项目: afcarl/rddlgym
def parse_model(filename, verbose=False):
    rddl = read_model(filename)
    parser = RDDLParser(verbose=verbose)
    parser.build()
    model = parser.parse(rddl)
    model.build()
    return model
示例#4
0
    def setUpClass(cls):

        # initialize hyper-parameters
        cls.horizon = 40
        cls.batch_size = 64
        cls.epochs = 50
        cls.learning_rate = 0.01

        # parse RDDL file
        with open('rddl/deterministic/Navigation.rddl') as file:
            parser = RDDLParser()
            parser.build()
            rddl = parser.parse(file.read())
            rddl.build()

        # initializer RDDL2TensorFlow compiler
        cls.rddl2tf = Compiler(rddl, batch_mode=True)

        # initialize open-loop policy
        cls.policy = OpenLoopPolicy(cls.rddl2tf, cls.batch_size, cls.horizon)
        cls.policy.build('test')

        # initialize ActionOptimizer
        cls.optimizer = ActionOptimizer(cls.rddl2tf, cls.policy)
        cls.optimizer.build(cls.learning_rate, cls.batch_size, cls.horizon)
示例#5
0
    def setUpClass(cls):

        # initialize hyper-parameters
        cls.horizon = 40
        cls.batch_size = 64

        # parse RDDL file
        with open('rddl/deterministic/Navigation.rddl') as file:
            parser = RDDLParser()
            parser.build()
            rddl = parser.parse(file.read())
            rddl.build()

        # initializer RDDL2TensorFlow compiler
        cls.rddl2tf = Compiler(rddl, batch_mode=True)

        # initialize open-loop policy
        cls.policy = OpenLoopPolicy(cls.rddl2tf, cls.batch_size, cls.horizon)
        cls.policy.build('test')

        # execute policy for the given horizon and initial state
        with cls.rddl2tf.graph.as_default():
            cls.state = cls.rddl2tf.compile_initial_state(cls.batch_size)
            cls.actions = []
            for t in range(cls.horizon - 1, -1, -1):
                timestep = tf.constant(t,
                                       dtype=tf.float32,
                                       shape=(cls.batch_size, 1))
                action = cls.policy(cls.state, timestep)
                cls.actions.append(action)
示例#6
0
    def setUpClass(cls):

        # initialize hyper-parameters
        cls.horizon = 40
        cls.batch_size = 1

        # parse RDDL file
        with open('rddl/deterministic/Navigation.rddl') as file:
            parser = RDDLParser()
            parser.build()
            rddl = parser.parse(file.read())
            rddl.build()

        # initializer RDDL2TensorFlow compiler
        cls.rddl2tf = Compiler(rddl, batch_mode=True)

        # initialize open-loop policy
        cls.policy = OpenLoopPolicy(cls.rddl2tf, cls.batch_size, cls.horizon)
        cls.policy.build('test')

        # sample policy variables to initialize open-loop policy
        cls.policy_variables = []
        for shape in cls.rddl2tf.rddl.action_size:
            size = [cls.horizon] + list(shape)
            cls.policy_variables.append(
                np.random.uniform(low=-1.0, high=1.0, size=size))

        # initialize action evaluator
        cls.evaluator = ActionEvaluator(cls.rddl2tf, cls.policy)
示例#7
0
def parse_model(filename, verbose=False):
    """Returns RDDL abstract syntax tree (AST)."""
    rddl = read_model(filename)
    parser = RDDLParser(verbose=verbose)
    parser.build()
    model = parser.parse(rddl)
    model.build()
    return model
示例#8
0
def parse_rddl(rddl: str, verbose: bool) -> RDDL:
    """
    Parses an RDDL string definition into a python object.
    :param str rddl: the RDDL definition.
    :param bool verbose: whether to print parse messages to the screen.
    :rtype: RDDL
    :return: the pyrddl python object created by parsing the given RDDL definition.
    """
    # parse RDDL
    rddl_parser = RDDLParser(verbose=verbose)
    # rddl_parser.debugging = verbose
    rddl_parser.build()
    return rddl_parser.parse(rddl)