コード例 #1
0
    def forward(self, inputs):
        """ Forward propagation

        :param inputs: x_init, params
        :return:
        """
        ab_cat = F.concat((self.A, self.B), axis=1)
        large_f_learner = expand_time_batch(ab_cat, self.T - 1, self.n_batch)
        assert list(large_f_learner.shape) == [
            self.T - 1, self.n_batch, self.n_state, self.n_sc
        ], " Learner's F dimension mismatch"
        assert large_f_learner.dtype.kind == 'f', "dtype error"
        x_init, f = inputs
        C = expand_time_batch(self.C, self.T, self.n_batch)
        c = expand_time_batch(self.c, self.T, self.n_batch)
        return self.lqr_layer.apply((x_init, C, c, large_f_learner, f))
コード例 #2
0
    def forward(self, inputs):
        """ Forward propagation

        :param inputs: x_init, u_init, cost = inputs
        :return:
        """
        ab_cat = F.concat((self.A, self.B), axis=1)
        large_f_learner = expand_time_batch(ab_cat, self.T - 1, self.n_batch)
        assert list(large_f_learner.shape) == [
            self.T - 1, self.n_batch, self.n_state, self.n_sc
        ], " Learner's F dimension mismatch"
        assert large_f_learner.dtype.kind == 'f', "dtype error"
        x_init, cost = inputs
        f = chainer.Variable(
            np.zeros((self.T - 1, self.n_batch, self.n_state),
                     dtype=x_init.dtype))
        dynamics = LinDx(large_f_learner, f)
        res = self.mpc_layer((x_init, cost, dynamics))
        return res
コード例 #3
0
n_batch = 128
dtype = np.float32
expert_seed = 42
np.random.seed(expert_seed)
alpha = 0.2

exp = dict(
    Q=chainer.Variable(np.eye(n_sc)),  #Cost
    p=chainer.Variable(np.random.randn(n_sc)),  # cost (little c)
    A=chainer.Variable(
        np.eye(n_state) +
        alpha * np.random.randn(n_state, n_state)),  # F left side
    B=chainer.Variable(np.random.randn(n_state, n_ctrl)))

exp_ab_cat = F.concat((exp['A'], exp['B']), axis=1)
exp_large_f = expand_time_batch(exp_ab_cat, T - 1, n_batch)

exp['F'] = exp_large_f
exp['f'] = chainer.Variable(
    np.zeros((T - 1, n_batch, n_state), dtype=exp_large_f.dtype))
exp_C = expand_time_batch(exp['Q'], T, n_batch)
exp['C'] = exp_C
exp['c'] = expand_time_batch(exp['p'], T, n_batch)

u_lower = -10.0 * np.ones(n_ctrl)
u_upper = 10.0 * np.ones(n_ctrl)

u_lower = expand_time_batch(u_lower, T, n_batch)

u_upper = expand_time_batch(u_upper, T, n_batch)