On linux here with conda install. If I change in algo = algo_factory("snopt7") snopt7 by either slsqp (from NLOPT) or IPOPT and change in the call to add_gradient below with_grad=False by with_grad=True, it runs but most of the time it returns infeasible solutions. However in the comment about using slsqp instead of nlopt, it says that it may require multiple starts. Indeed running it many time (either slsqp or nlopt), I finally get a feasible solution. Instead of running it many time, you can probably also use a larger population (it is set to 1 in pop = pg.population(prob, 10)).