diff --git a/pyrobolearn/optimizers/__init__.py b/pyrobolearn/optimizers/__init__.py index 9168742..fc92f54 100644 --- a/pyrobolearn/optimizers/__init__.py +++ b/pyrobolearn/optimizers/__init__.py @@ -1,3 +1,27 @@ -# import optimizers -from optimizer import * +# import optimizer +from optimizer import Optimizer + +# import scipy optimizer +# from scipy_optimizer import Scipy + +# import nlopt optimizer +# from nlopt_optimizer import NLopt + +# import ipopt optimizer +# from ipopt_optimizer import IPopt + +# import QP solvers +# from qpsolvers_optimizer import QP + +# import CMA-ES optimizer +# from cma_optimizer import CMAES + +# import Bayesian Optimizer +# from gpyopt_optimizer import BayesianOptimizer + +# import torch optimizers +from torch_optimizer import * + +# import Contact-Invariant Optimizer +# from cio import CIO diff --git a/pyrobolearn/optimizers/cio.py b/pyrobolearn/optimizers/cio.py index 65b78c5..ab28880 100644 --- a/pyrobolearn/optimizers/cio.py +++ b/pyrobolearn/optimizers/cio.py @@ -1,6 +1,12 @@ -# This file implements the 'Contact Invariant Optimization' framework developed by Igor Mordatch. -# Ref: "Automated Discovery and Learning of Complex Movement Behaviors" (PhD thesis), Mordatch, 2015 -# See also: presentation given CS294 +#!/usr/bin/env python +"""This file implements the 'Contact Invariant Optimization' framework developed by Igor Mordatch. + +References: + [1] "Automated Discovery and Learning of Complex Movement Behaviors" (PhD thesis), Mordatch, 2015 + [2] Mordatch's presentation given in CS294 +""" +# TODO: this is not an optimizer, but more an optimization process. It should be in another directory, maybe in +# `trajectory_optimization`?? import numpy as np from scipy.interpolate as interp1d @@ -56,8 +62,8 @@ class CIO(object): return self.phase(t) def compute_state(self): - base_pos = self.robot.getBasePosition() - base_quat = self.robot.getBaseOrientation() + base_pos = self.robot.get_base_position() + base_quat = self.robot.get_base_orientation() end_effector_pos = self.robot.getEndEffectorPositions() end_effector_quat = self.robot.getEndEffectorOrientations() diff --git a/pyrobolearn/optimizers/torch_optimizer.py b/pyrobolearn/optimizers/torch_optimizer.py index a387475..1d86582 100644 --- a/pyrobolearn/optimizers/torch_optimizer.py +++ b/pyrobolearn/optimizers/torch_optimizer.py @@ -39,7 +39,7 @@ __status__ = "Development" # pass -class Adam(object): +class Adam(Optimizer): r"""Adam Optimizer References: @@ -47,7 +47,8 @@ class Adam(object): """ def __init__(self, learning_rate=1e-3, betas=(0.9, 0.999), eps=1e-08, weight_decay=0, amsgrad=False, - max_grad_norm=None): # 0.5 + max_grad_norm=None, *args, **kwargs): # 0.5 + super(Adam, self).__init__(*args, **kwargs) self.optimizer = None self.learning_rate = learning_rate self.betas = betas @@ -73,14 +74,15 @@ class Adam(object): self.optimizer.step() -class Adadelta(object): +class Adadelta(Optimizer): r"""Adadelta Optimizer References: [1] "ADADELTA: An Adaptive Learning Rate Method", Zeiler, 2012 """ - def __init__(self, learning_rate=1., rho=0.9, eps=1e-6, weight_decay=0, max_grad_norm=None): #0.5 + def __init__(self, learning_rate=1., rho=0.9, eps=1e-6, weight_decay=0, max_grad_norm=None, *args, **kwargs): # 0.5 + super(Adadelta, self).__init__(*args, **kwargs) self.optimizer = None self.learning_rate = learning_rate self.rho = rho @@ -101,7 +103,7 @@ class Adadelta(object): self.optimizer.step() -class Adagrad(object): +class Adagrad(Optimizer): r"""Adagrad Optimizer References: @@ -109,7 +111,8 @@ class Adagrad(object): """ def __init__(self, learning_rate=0.01, learning_rate_decay=0, weight_decay=0, initial_accumumaltor_value=0, - max_grad_norm=None): # 0.5 + max_grad_norm=None, *args, **kwargs): # 0.5 + super(Adagrad, self).__init__(*args, **kwargs) self.optimizer = None self.learning_rate = learning_rate self.learning_rate_decay = learning_rate_decay @@ -131,7 +134,7 @@ class Adagrad(object): self.optimizer.step() -class RMSprop(object): +class RMSprop(Optimizer): r"""RMSprop References: @@ -141,7 +144,8 @@ class RMSprop(object): """ def __init__(self, learning_rate=1e-2, alpha=0.99, eps=1e-8, weight_decay=0, momentum=0, centered=False, - max_grad_norm=None): # 0.5 + max_grad_norm=None, *args, **kwargs): # 0.5 + super(RMSprop, self).__init__(*args, **kwargs) self.optimizer = None self.learning_rate = learning_rate self.alpha = alpha @@ -165,7 +169,7 @@ class RMSprop(object): self.optimizer.step() -class SGD(object): +class SGD(Optimizer): r"""Stochastic Gradient Descent References: @@ -173,8 +177,9 @@ class SGD(object): [2] "On the importance of initialization and momentum in deep learning", Sutskever et al., 2013 """ - def __init__(self, learning_rate=1e-3, momentum=0, dampening=0, weight_decay=0, nesterov=False, - max_grad_norm=None): #0.5 + def __init__(self, learning_rate=1e-3, momentum=0, dampening=0, weight_decay=0, nesterov=False, max_grad_norm=None, + *args, **kwargs): # 0.5 + super(SGD, self).__init__(*args, **kwargs) self.optimizer = None self.learning_rate = learning_rate self.momentum = momentum