Closed chemrgineer closed 1 year ago
The master, i.e., development, branch of Bonmin assumes that CoinUtils (and all of Cbc) has been build from their development branches. The version that comes with Debian is too old for that.
Maybe this helps: https://coin-or.github.io/user_introduction#linux-1
Some of my packages and versions: coinor-cbc/stable,now 2.10.5+ds1-3 amd64 [installed] coinor-clp/stable,now 1.17.5+repack1-1 amd64 [installed] coinor-libcbc-dev/stable,now 2.10.5+ds1-3 amd64 [installed] coinor-libcbc3/stable,now 2.10.5+ds1-3 amd64 [installed,automatic] coinor-libcgl-dev/stable,now 0.60.3+repack1-2 amd64 [installed] coinor-libcgl1/stable,now 0.60.3+repack1-2 amd64 [installed,automatic] coinor-libclp-dev/stable,now 1.17.5+repack1-1 amd64 [installed,automatic] coinor-libclp1/stable,now 1.17.5+repack1-1 amd64 [installed,automatic] coinor-libcoinutils-dev/stable,now 2.11.4+repack1-1 amd64 [installed,automatic] coinor-libcoinutils3v5/stable,now 2.11.4+repack1-1 amd64 [installed,automatic] coinor-libosi-dev/stable,now 0.108.6+repack1-2 amd64 [installed,automatic] coinor-libosi1v5/stable,now 0.108.6+repack1-2 amd64 [installed,automatic] coreutils/stable,now 8.32-4+b1 amd64 [installed] libClpSolver.so.1.14.5 libOsiClp.so.1.14.5 libCbcSolver.so.3.10.5 libCgl.so.1.10.3 libCoinUtils.so.3.11.4 libOsi.so.1.13.6 I tried to keep them updated. Thanks for help.
There are no releases of CoinUtils, etc, that the Bonmin development version would work with. Either build the development versions of Bonmin and its dependencies, or use the last Bonmin release.
I installed IPOPT (3.14.3) with HSL (academic license) by compiling, and Cbc and dev package installed from Debian repository. I am trying to compile Bonmin on WSL2 with Intel CPU. I get these errors:
In file included from ../../../../src/Algorithms/OaGenerators/../../Interfaces/BonOsiTMINLPInterface.hpp:22, from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.hpp:13, from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.cpp:10: /usr/local/include/coin-or/CoinWarmStartBasis.hpp:39:46: error: expected initializer before ‘:’ token 39 | class COINUTILSLIB_EXPORT CoinWarmStartBasis : public virtual CoinWarmStart { | ^ /usr/local/include/coin-or/CoinWarmStartBasis.hpp:350:8: error: ‘CoinWarmStartBasis’ does not name a type; did you mean ‘CoinWarmStartBasis_H’? 350 | inline CoinWarmStartBasis::Status getStatus(const char array, int i) | ^
~~~~~ | CoinWarmStartBasis_H /usr/local/include/coin-or/CoinWarmStartBasis.hpp:360:43: error: ‘CoinWarmStartBasis’ has not been declared 360 | inline void setStatus(char array, int i, CoinWarmStartBasis::Status st) | ^~~~~~ /usr/local/include/coin-or/CoinWarmStartBasis.hpp:360:70: error: expected ‘,’ or ‘...’ before ‘st’ 360 | inline void setStatus(char array, int i, CoinWarmStartBasis::Status st) | ^~ /usr/local/include/coin-or/CoinWarmStartBasis.hpp: In function ‘void setStatus(char, int, int)’: /usr/local/include/coin-or/CoinWarmStartBasis.hpp:364:44: error: ‘st’ was not declared in this scope; did you mean ‘std’? 364 | st_byte = static_cast< char >(st_byte | (st << ((i & 3) << 1))); | ^~ | std /usr/local/include/coin-or/CoinWarmStartBasis.hpp: At global scope: /usr/local/include/coin-or/CoinWarmStartBasis.hpp:370:24: error: ‘CoinWarmStartBasis’ has not been declared 370 | const char statusName(CoinWarmStartBasis::Status status); | ^~~~~~ /usr/local/include/coin-or/CoinWarmStartBasis.hpp:376:19: error: ‘CoinWarmStartBasis’ has not been declared 376 | char statusToChar(CoinWarmStartBasis::Status status); | ^~~~~~ /usr/local/include/coin-or/CoinWarmStartBasis.hpp:378:1: error: ‘CoinWarmStartBasis’ does not name a type; did you mean ‘CoinWarmStartBasis_H’? 378 | CoinWarmStartBasis::Status charToStatus(char status); | ^~~~~~ | CoinWarmStartBasis_H /usr/local/include/coin-or/CoinWarmStartBasis.hpp:404:24: error: expected initializer before ‘:’ token 404 | CoinWarmStartBasisDiff : public virtual CoinWarmStartDiff | ^ In file included from ../../../../src/Algorithms/OaGenerators/../../Interfaces/BonTNLPSolver.hpp:20, from ../../../../src/Algorithms/OaGenerators/../../Interfaces/BonCutStrengthener.hpp:13, from ../../../../src/Algorithms/OaGenerators/../../Interfaces/BonOsiTMINLPInterface.hpp:24, from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.hpp:13, from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.cpp:10: /usr/local/include/coin-or/CoinTime.hpp:200:27: error: variable ‘COINUTILSLIB_EXPORT CoinTimer’ has initializer but incomplete type 200 | class COINUTILSLIB_EXPORT CoinTimer | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp:202:1: error: expected primary-expression before ‘private’ 202 | private: | ^~~ /usr/local/include/coin-or/CoinTime.hpp:202:1: error: expected ‘}’ before ‘private’ /usr/local/include/coin-or/CoinTime.hpp:201:1: note: to match this ‘{’ 201 | { | ^ /usr/local/include/coin-or/CoinTime.hpp:202:1: error: expected ‘,’ or ‘;’ before ‘private’ 202 | private: | ^~~ /usr/local/include/coin-or/CoinTime.hpp:213:1: error: expected unqualified-id before ‘private’ 213 | private: | ^~~ /usr/local/include/coin-or/CoinTime.hpp:241:46: error: non-member function ‘double evaluate(double)’ cannot have cv-qualifier 241 | inline double evaluate(const double d_tmp) const | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp:247:1: error: expected unqualified-id before ‘public’ 247 | public: | ^~/usr/local/include/coin-or/CoinTime.hpp:261:3: error: ISO C++ forbids declaration of ‘CoinTimer’ with no type [-fpermissive] 261 | CoinTimer(double lim) | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp: In function ‘int CoinTimer(double)’: /usr/local/include/coin-or/CoinTime.hpp:262:7: error: only constructors take member initializers 262 | : start(CoinCpuTime()) | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp:264:11: error: ‘start’ was not declared in this scope 264 | , end(start + lim) | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp:270:3: warning: no return statement in function returning non-void [-Wreturn-type] 270 | } | ^ /usr/local/include/coin-or/CoinTime.hpp: In function ‘void restart()’: /usr/local/include/coin-or/CoinTime.hpp:299:5: error: ‘start’ was not declared in this scope; did you mean ‘restart’? 299 | start = CoinCpuTime(); | ^~~~~ | restart /usr/local/include/coin-or/CoinTime.hpp: At global scope: /usr/local/include/coin-or/CoinTime.hpp:313:41: error: non-member function ‘bool isPastPercent(double)’ cannot have cv-qualifier 313 | inline bool isPastPercent(double pct) const | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp: In function ‘bool isPastPercent(double)’: /usr/local/include/coin-or/CoinTime.hpp:315:21: error: ‘start’ was not declared in this scope; did you mean ‘restart’? 315 | return evaluate(start + limit pct < CoinCpuTime()); | ^~~~~ | restart /usr/local/include/coin-or/CoinTime.hpp: At global scope: /usr/local/include/coin-or/CoinTime.hpp:319:34: error: non-member function ‘bool isPast(double)’ cannot have cv-qualifier 319 | inline bool isPast(double lim) const | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp: In function ‘bool isPast(double)’: /usr/local/include/coin-or/CoinTime.hpp:321:21: error: ‘start’ was not declared in this scope; did you mean ‘restart’? 321 | return evaluate(start + lim < CoinCpuTime()); | ^~~~~ | restart /usr/local/include/coin-or/CoinTime.hpp: At global scope: /usr/local/include/coin-or/CoinTime.hpp:325:27: error: non-member function ‘bool isExpired()’ cannot have cv-qualifier 325 | inline bool isExpired() const | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp:331:28: error: non-member function ‘double timeLeft()’ cannot have cv-qualifier 331 | inline double timeLeft() const | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp:337:31: error: non-member function ‘double timeElapsed()’ cannot have cv-qualifier 337 | inline double timeElapsed() const | ^~~~~ /usr/local/include/coin-or/CoinTime.hpp: In function ‘double timeElapsed()’: /usr/local/include/coin-or/CoinTime.hpp:339:37: error: ‘start’ was not declared in this scope; did you mean ‘restart’? 339 | return evaluate(CoinCpuTime() - start); | ^~~~~ | restart /usr/local/include/coin-or/CoinTime.hpp: At global scope: /usr/local/include/coin-or/CoinTime.hpp:347:1: error: expected declaration before ‘}’ token 347 | }; | ^ In file included from ../../../../src/Algorithms/OaGenerators/BonOAMessages.hpp:13, from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.hpp:14, from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.cpp:10: /usr/local/include/coin-or/CoinMessage.hpp:78:39: error: expected initializer before ‘:’ token 78 | class COINUTILSLIBEXPORT CoinMessage : public CoinMessages { | ^ In file included from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.cpp:12: /usr/include/coin/CbcModel.hpp:2803:22: error: field ‘bestSolutionBasis’ has incomplete type ‘CoinWarmStartBasis’ 2803 | CoinWarmStartBasis bestSolutionBasis; | ^~~~~~ In file included from /usr/include/coin/CbcNode.hpp:15, from /usr/include/coin/CbcCompareBase.hpp:21, from /usr/include/coin/CbcModel.hpp:15, from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.cpp:12: /usr/include/coin/CbcNodeInfo.hpp:24:7: note: forward declaration of ‘class CoinWarmStartBasis’ 24 | class CoinWarmStartBasis; | ^~~~~~ In file included from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.cpp:12: /usr/include/coin/CbcModel.hpp:3147:22: error: field ‘workingBasis’ has incomplete type ‘CoinWarmStartBasis’ 3147 | CoinWarmStartBasis workingBasis_; | ^~~~~ In file included from /usr/include/coin/CbcNode.hpp:15, from /usr/include/coin/CbcCompareBase.hpp:21, from /usr/include/coin/CbcModel.hpp:15, from ../../../../src/Algorithms/OaGenerators/BonOaNlpOptim.cpp:12: /usr/include/coin/CbcNodeInfo.hpp:24:7: note: forward declaration of ‘class CoinWarmStartBasis’ 24 | class CoinWarmStartBasis; | ^~~~~~ make[2]: [Makefile:507: BonOaNlpOptim.lo] Error 1 make[2]: Leaving directory '/home/optimization/Bonmin/build/src/Algorithms/OaGenerators' make[1]: [Makefile:560: all-recursive] Error 1 make[1]: Leaving directory '/home/optimization/Bonmin/build/src/Algorithms' make: *** [Makefile:461: all-recursive] Error 1I'm sorry If done wrong error posting. Thanks.