cvanaret / Uno

A next-gen solver for nonconvex optimization. Uno is a Lagrange-Newton solver that unifies barrier and SQP methods in a modern and generic way, and implements different globalization flavors (line search/trust region and merit function/filter method/funnel method). Competitive against filterSQP, IPOPT, SNOPT, MINOS and CONOPT.
MIT License
245 stars 18 forks source link

Building without BQPD #9

Closed mapgccv closed 1 month ago

mapgccv commented 7 months ago

Hello, I'm trying to build the AMPL driver for this interesting solver, but there is probably something I am missing; i'm trying to build without bqpd - as per instructions the library seems to be optional - but I get:

Preprocessing.cpp:(.text+0x1245): undefined reference to `BQPDSolver::BQPDSolver(unsigned long, unsigned long, unsigned long, BQPDProblemType, Options const&)'
/usr/bin/ld: Preprocessing.cpp:(.text+0x132e): undefined reference to `BQPDSolver::solve_QP(unsigned long, unsigned long, std::vector<Interval, std::allocator<Interval> > const&, std::vector<Interval, std::allocator<Interval> > const&, SparseVector<double> const&, std::vector<SparseVector<double>, std::allocator<SparseVector<double> > > const&, SymmetricMatrix<double> const&, std::vector<double, std::allocator<double> > const&, WarmstartInformation const&)'

Cleary if I then add BQPDSolver.cpp to the sources, I get:

/usr/bin/ld: BQPDSolver.cpp:(.text+0x1871): undefined reference to `bqpd_'

which is to be expected, as I don't link with bqpd.

Is there any way to use Uno without it? Thank you!

cvanaret commented 7 months ago

Hi Christian, Thanks for trying out Uno and for spotting the bug! It should be fixed with commit cdec312e978450f0c73edcf32361f57f46e8af57. Can you give it a try? Best,

Charlie