import tensorflow as tf

    def _build_net(self):  # we use parameter sharing among agents
        with tf.variable_scope(self.name):
            # ------------------ all inputs ------------------------
            self.S = tf.placeholder(tf.float32, [None, self.num_global_s], name='S')  # input Global State
            self.s = tf.placeholder(tf.float32, [None, self.num_s], name='s1')  # input state for agent1
            self.S_ = tf.placeholder(tf.float32, [None, self.num_global_s], name='S_')  # input Next Global State
            self.s_ = tf.placeholder(tf.float32, [None, self.num_s], name='s1_')  # input next state for agent1
            self.R = tf.placeholder(tf.float32, [None, ], name='R')  # input Reward
            self.a = tf.placeholder(tf.float32, [None, self.num_a], name='a')  # input Action onehot for agent1
            self.done = tf.placeholder(tf.float32, [None, ], name='done')  # input Done info ???

            self.q_m_ = tf.placeholder(tf.float32, [None, ], name='q_value_next_max')
            self.q_target = tf.placeholder(tf.float32, [None,], name='q_tot_target')

            w_initializer, b_initializer = tf.random_normal_initializer(0., 0.1), tf.constant_initializer(0.0)

            # ------------------ build evaluate_net ------------------
            with tf.variable_scope('eval_net'):
