battery algorithms