def __init__(self, representation, filename=default_location, epsilon=0.1, seed=1): super(SwimmerPolicy, self).__init__(representation, seed) E = loadmat(filename)["E"] self.locs = E["Locs"][0][0] self.nlocs = E["Nlocs"][0][0] self.scale = E["scale"][0][0] self.gains = E["Gains"][0][0] self.d = 3 self.eGreedy = False self.epsilon = epsilon d = self.d # incidator variables for angles in a state representation self.angles = np.zeros(2 + self.d * 2 + 1, dtype=np.bool) self.angles[2:2 + self.d - 1] = True self.actions = cartesian((d - 1) * [[-2., 0., 2]]) self.actions_num = len(self.actions)
def __init__(self, d=3, k1=7.5, k2=0.3): """ d: number of joints """ self.d = d self.k1 = k1 self.k2 = k2 self.nose = 0 self.masses = np.ones(d) self.lengths = np.ones(d) self.inertia = self.masses * self.lengths * self.lengths / 12. self.goal = np.zeros(2) # reward function parameters self.cu = 0.04 self.cx = 2. Q = np.eye(self.d, k=1) - np.eye(self.d) Q[-1, :] = self.masses A = np.eye(self.d, k=1) + np.eye(self.d) A[-1, -1] = 0. self.P = old_div(np.dot(np.linalg.inv(Q), A * self.lengths[None, :]), 2.) self.U = np.eye(self.d) - np.eye(self.d, k=-1) self.U = self.U[:, :-1] self.G = np.dot(self.P.T * self.masses[None, :], self.P) # incidator variables for angles in a state representation self.angles = np.zeros(2 + self.d * 2 + 1, dtype=np.bool) self.angles[2:2 + self.d - 1] = True self.angles[-self.d - 2:] = True self.actions = cartesian((d - 1) * [[-2., 0., 2]]) self.actions_num = len(self.actions) self.statespace_limits = [[-15, 15]] * 2 + [[-np.pi, np.pi]] * (d - 1) \ + [[-2, 2]] * 2 + [[-np.pi * 2, np.pi * 2]] * d self.statespace_limits = np.array(self.statespace_limits) self.continuous_dims = list(range(self.statespace_limits.shape[0])) super(Swimmer, self).__init__()
def __init__(self, d=3, k1=7.5, k2=0.3): """ d: number of joints """ self.d = d self.k1 = k1 self.k2 = k2 self.nose = 0 self.masses = np.ones(d) self.lengths = np.ones(d) self.inertia = self.masses * self.lengths * self.lengths / 12. self.goal = np.zeros(2) # reward function parameters self.cu = 0.04 self.cx = 2. Q = np.eye(self.d, k=1) - np.eye(self.d) Q[-1, :] = self.masses A = np.eye(self.d, k=1) + np.eye(self.d) A[-1, -1] = 0. self.P = np.dot(np.linalg.inv(Q), A * self.lengths[None, :]) / 2. self.U = np.eye(self.d) - np.eye(self.d, k=-1) self.U = self.U[:, :-1] self.G = np.dot(self.P.T * self.masses[None, :], self.P) # incidator variables for angles in a state representation self.angles = np.zeros(2 + self.d * 2 + 1, dtype=np.bool) self.angles[2:2 + self.d - 1] = True self.angles[-self.d - 2:] = True self.actions = cartesian((d - 1) * [[-2., 0., 2]]) self.actions_num = len(self.actions) self.statespace_limits = [[-15, 15]] * 2 + [[-np.pi, np.pi]] * (d - 1) \ + [[-2, 2]] * 2 + [[-np.pi * 2, np.pi * 2]] * d self.statespace_limits = np.array(self.statespace_limits) self.continuous_dims = range(self.statespace_limits.shape[0]) super(Swimmer, self).__init__()