projected gradient descent github