Exemplo n.º 1
0
    def map(self, sol: Solution, lam=empty_array, nu=empty_array) -> Solution:

        # sol.lam = lam
        if len(sol.nu) == 0:
            sol.nu = np.ones(self.nu_len)

        return sol
Exemplo n.º 2
0
    def inv_map(self, sol: Solution, retain_dual=True) -> Solution:

        if not retain_dual:
            sol.lam = empty_array

        sol.nu = empty_array

        sol.cost = self.compute_cost(sol.t, sol.y, sol.q, sol.u, sol.p, sol.k)

        return sol
Exemplo n.º 3
0
        def scale_sol(sol: Trajectory, scale_factors, inv=False):

            sol = copy.deepcopy(sol)

            if inv:
                op = np.multiply
            else:
                op = np.divide

            sol.t = op(sol.t, scale_factors[0])
            sol.y = op(sol.y, scale_factors[1])
            sol.q = op(sol.q, scale_factors[2])
            if sol.u.size > 0:
                sol.u = op(sol.u, scale_factors[3])
            sol.p = op(sol.p, scale_factors[4])
            sol.nu = op(sol.nu, scale_factors[5])
            sol.k = op(sol.k, scale_factors[6])

            return sol
Exemplo n.º 4
0
    def inv_map(self, sol: Solution) -> Solution:
        sol.lam = sol.y[:, self.costate_idxs]
        sol.y = np.delete(sol.y, self.costate_idxs, axis=1)
        sol.nu = np.delete(sol.nu, self.constraint_adjoints_idxs)

        return sol