  /**  * @brief Particle Swarm Optimization (PSO) with Differentially-Perturbed Velocity (DV)  *  * @param init_out_vals a column vector of initial values, which will be replaced by the solution upon successful completion of the optimization algorithm.  * @param opt_objfn the function to be minimized, taking three arguments:  *   - \c vals_inp a vector of inputs;  *   - \c grad_out a vector to store the gradient; and  *   - \c opt_data additional data passed to the user-provided function.  * @param opt_data additional data passed to the user-provided function.  *  * @return a boolean value indicating successful completion of the optimization algorithm.  */  bool  pso_dv(Vec_t& init_out_vals,         std::function<double (const Vec_t& vals_inp, Vec_t* grad_out, void* opt_data)> opt_objfn,         void* opt_data