Exemplo n.º 1
0
    def render(self, mode="readable", obs=None):
        """Render observation.

        See render module for more details on modes and symbols.

        Parameters
        ----------
        mode : str
            rendering mode
        obs : Observation or numpy.ndarray, optional
            the observation to render, if None will render last observation.
            If numpy.ndarray it must be in format that matches Observation
            (i.e. ndarray returned by step method) (default=None)
        """
        if obs is None:
            obs = self.last_obs

        if not isinstance(obs, Observation):
            obs = Observation.from_numpy(obs, self.current_state.shape())

        if self._renderer is None:
            self._renderer = Viewer(self.network)

        if mode == "readable":

            self._renderer.render_readable(obs)
        else:
            print("Please choose correct render mode from :"
                  f"{self.rendering_modes}")
Exemplo n.º 2
0
    def render_state(self, mode="readable", state=None):
        """Render state.

        See render module for more details on modes and symbols.

        If mode = ASCI:
            Machines displayed in rows, with one row for each subnet and
            hosts displayed in order of id within subnet

        Parameters
        ----------
        mode : str
            rendering mode
        state : State or numpy.ndarray, optional
            the State to render, if None will render current state
            If numpy.ndarray it must be in format that matches State
            (i.e. ndarray returned by generative_step method) (default=None)
        """
        if state is None:
            state = self.current_state

        if not isinstance(state, State):
            state = State.from_numpy(state, self.current_state.shape(),
                                     self.current_state.host_num_map)

        if self._renderer is None:
            self._renderer = Viewer(self.network)

        if mode == "readable":
            self._renderer.render_readable_state(state)
        else:
            print("Please choose correct render mode from :"
                  f"{self.rendering_modes}")
Exemplo n.º 3
0
def test_render_network_graph(env):
    init_state = env.reset()
    viewer = Viewer(env.network)
    # Render on new seperate figure
    viewer.render_graph(init_state, None, True)

    # render on passed in figure
    fig = plt.figure()
    axes = fig.add_subplot(122)
    viewer.render_graph(init_state, axes, False)
    plt.show()
    plt.close(fig)
Exemplo n.º 4
0
    def render_network_graph(self, ax=None, show=False):
        """Render a plot of network as a graph with hosts as nodes arranged into subnets and
        showing connections between subnets. Renders current state of network.

        Arguments
        ---------
        ax : Axes
            matplotlib axis to plot graph on, or None to plot on new axis
        show : bool
            whether to display plot, or simply setup plot and showing plot
            can be handled elsewhere by user
        """
        if self.renderer is None:
            self.renderer = Viewer(self.network)
        state = self.current_state
        self.renderer.render_graph(state, ax, show)
Exemplo n.º 5
0
    def render_episode(self, episode, width=7, height=7):
        """Render an episode as sequence of network graphs, where an episode is a sequence of
        (state, action, reward, done) tuples generated from interactions with environment.

        Arguments
        ---------
        episode : list
            list of (State, Action, reward, done) tuples
        width : int
            width of GUI window
        height : int
            height of GUI window
        """
        if self.renderer is None:
            self.renderer = Viewer(self.network)
        self.renderer.render_episode(episode)
Exemplo n.º 6
0
    def render(self, mode="ASCI"):
        """Render last observation.

        See render module for more details on modes and symbols.

        If mode = ASCI:
            Machines displayed in rows, with one row for each subnet and
            hosts displayed in order of id within subnet

        Arguments
        ---------
        mode : str
            rendering mode
        """
        if self.renderer is None:
            self.renderer = Viewer(self.network)
        if mode == "ASCI":
            self.renderer.render_asci(self.last_obs)
        elif mode == "readable":
            self.renderer.render_readable(self.last_obs)
        else:
            print("Please choose correct render mode: {0}".format(
                self.rendering_modes))
Exemplo n.º 7
0
def test_render_episode(env, actions):
    episode = generate_episode(env, actions)
    viewer = Viewer(env.network)
    viewer.render_episode(episode)
    # test for closing window and rendering a new episode
    viewer.render_episode(episode)