A C++ framework for MDPs and POMDPs with Python bindings

Overview

AI-Toolbox

AI-Toolbox

Library overview video

This C++ toolbox is aimed at representing and solving common AI problems, implementing an easy-to-use interface which should be hopefully extensible to many problems, while keeping code readable.

Current development includes MDPs, POMDPs and related algorithms. This toolbox was originally developed taking inspiration from the Matlab MDPToolbox, which you can find here, and from the pomdp-solve software written by A. R. Cassandra, which you can find here.

If you are new to the field of reinforcement learning, we have a few simple tutorials that can help you get started. An excellent, more in depth introduction to the basics of reinforcement learning can be found freely online in this book.

If you use this toolbox for research, please consider citing our JMLR article:

@article{JMLR:v21:18-402,
  author  = {Eugenio Bargiacchi and Diederik M. Roijers and Ann Now\'{e}},
  title   = {AI-Toolbox: A C++ library for Reinforcement Learning and Planning (with Python Bindings)},
  journal = {Journal of Machine Learning Research},
  year    = {2020},
  volume  = {21},
  number  = {102},
  pages   = {1-12},
  url     = {http://jmlr.org/papers/v21/18-402.html}
}

Example

// The model can be any custom class that respects a 10-method interface.
auto model = makeTigerProblem();
unsigned horizon = 10; // The horizon of the solution.

// The 0.0 is the convergence parameter. It gives a way to stop the
// computation if the policy has converged before the horizon.
AIToolbox::POMDP::IncrementalPruning solver(horizon, 0.0);

// Solve the model and obtain the optimal value function.
auto [bound, valueFunction] = solver(model);

// We create a policy from the solution to compute the agent's actions.
// The parameters are the size of the model (SxAxO), and the value function.
AIToolbox::POMDP::Policy policy(2, 3, 2, valueFunction);

// We begin a simulation with a uniform belief. We sample from the belief
// in order to get a "real" state for the world, since this code has to
// both emulate the environment and control the agent.
AIToolbox::POMDP::Belief b(2); b << 0.5, 0.5;
auto s = AIToolbox::sampleProbability(b.size(), b, rand);

// We sample the first action. The id is to follow the policy tree later.
auto [a, id] = policy.sampleAction(b, horizon);

double totalReward = 0.0;// As an example, we store the overall reward.
for (int t = horizon - 1; t >= 0; --t) {
    // We advance the world one step.
    auto [s1, o, r] = model.sampleSOR(s, a);
    totalReward += r;

    // We select our next action from the observation we got.
    std::tie(a, id) = policy.sampleAction(id, o, t);

    s = s1; // Finally we update the world for the next timestep.
}

Documentation

The latest documentation is available here. We have a few tutorials that can help you get started with the toolbox. The tutorials are in C++, but the examples folder contains equivalent Python code which you can follow along just as well.

For Python docs you can find them by typing help(AIToolbox) from the interpreter. It should show the exported API for each class, along with any differences in input/output.

Features

Cassandra POMDP Format Parsing

Cassandra's POMDP format is a type of text file that contains a definition of an MDP or POMDP model. You can find some examples here. While it is absolutely not necessary to use this format, and you can define models via code, we do parse a reasonable subset of Cassandra's POMDP format, which allows to reuse already defined problems with this library. Here's the docs on that.

Python 2 and 3 Bindings!

The user interface of the library is pretty much the same with Python than what you would get by using simply C++. See the examples folder to see just how much Python and C++ code resemble each other. Since Python does not allow templates, the classes are binded with as many instantiations as possible.

Additionally, the library allows the usage of native Python generative models (where you don't need to specify the transition and reward functions, you only sample next state and reward). This allows for example to directly use OpenAI gym environments with minimal code writing.

That said, if you need to customize a specific implementation to make it perform better on your specific use-cases, or if you want to try something completely new, you will have to use C++.

Utilities

The library has an extensive set of utilities which would be too long to enumerate here. In particular, we have utilities for combinatorics, polytopes, linear programming, sampling and distributions, automated statistics, belief updating, many data structures, logging, seeding and much more.

Bandit/Normal Games:

Models
Basic Model
Policies
Exploring Selfish Reinforcement Learning (ESRL) Q-Greedy Policy Softmax Policy
Linear Reward Penalty Thompson Sampling (Student-t distribution) Random Policy
Top-Two Thompson Sampling (Student-t distribution)

Single Agent MDP/Stochastic Games:

Models
Basic Model Sparse Model Maximum Likelihood Model
Sparse Maximum Likelihood Model Thompson Model (Dirichlet + Student-t distributions)
Algorithms
Dyna-Q Dyna2 Expected SARSA
Hysteretic Q-Learning Importance Sampling Linear Programming
Monte Carlo Tree Search (MCTS) Policy Evaluation Policy Iteration
Prioritized Sweeping Q-Learning Double Q-Learning
Q(λ) R-Learning SARSA(λ)
SARSA Retrace(λ) Tree Backup(λ)
Value Iteration
Policies
Basic Policy Epsilon-Greedy Policy Softmax Policy
Q-Greedy Policy PGA-APP Win or Learn Fast Policy Iteration (WoLF)

Single Agent POMDP:

Models
Basic Model Sparse Model
Algorithms
Augmented MDP (AMDP) Blind Strategies Fast Informed Bound
GapMin Incremental Pruning Linear Support
PERSEUS POMCP with UCB1 Point Based Value Iteration (PBVI)
QMDP Real-Time Belief State Search (RTBSS) SARSOP
Witness rPOMCP
Policies
Basic Policy

Factored/Joint Multi-Agent:

Bandits:

Not in Python yet.

Models
Basic Model Flattened Model
Algorithms
Max-Plus Multi-Objective Variable Elimination (MOVE) Upper Confidence Variable Elimination (UCVE)
Variable Elimination Local Search Reusing Iterative Local Search
Policies
Q-Greedy Policy Random Policy Learning with Linear Rewards (LLR)
Multi-Agent Upper Confidence Exploration (MAUCE) Multi-Agent Thompson-Sampling (Student-t distribution) Single-Action Policy

MDP:

Not in Python yet.

Models
Cooperative Basic Model Cooperative Maximum Likelihood Model Cooperative Thompson Model (Dirichlet + Student-t distributions)
Algorithms
FactoredLP Multi Agent Linear Programming Joint Action Learners
Sparse Cooperative Q-Learning Cooperative Prioritized Sweeping
Policies
All Bandit Policies Epsilon-Greedy Policy Q-Greedy Policy

Build Instructions

Dependencies

To build the library you need:

In addition, C++20 support is now required (this means at least g++-10)

Building

Once you have all required dependencies, you can simply execute the following commands from the project's main folder:

mkdir build
cd build/
cmake ..
make

cmake can be called with a series of flags in order to customize the output, if building everything is not desirable. The following flags are available:

CMAKE_BUILD_TYPE # Defines the build type
MAKE_ALL         # Builds all there is to build in the project, but Python.
MAKE_LIB         # Builds the whole core C++ libraries (MDP, POMDP, etc..)
MAKE_MDP         # Builds only the core C++ MDP library
MAKE_FMDP        # Builds only the core C++ Factored/Multi-Agent and MDP libraries
MAKE_POMDP       # Builds only the core C++ POMDP and MDP libraries
MAKE_TESTS       # Builds the library's tests for the compiled core libraries
MAKE_EXAMPLES    # Builds the library's examples using the compiled core libraries
MAKE_PYTHON      # Builds Python bindings for the compiled core libraries
PYTHON_VERSION   # Selects the Python version you want (2 or 3). If not
                 # specified, we try to guess based on your default interpreter.

These flags can be combined as needed. For example:

# Will build MDP and MDP Python 3 bindings
cmake -DCMAKE_BUILD_TYPE=Debug -DMAKE_MDP=1 -DMAKE_PYTHON=1 -DPYTHON_VERSION=3 ..

The default flags when nothing is specified are MAKE_ALL and CMAKE_BUILD_TYPE=Release.

Note that by default MAKE_ALL does not build the Python bindings, as they have a minor performance hit on the C++ static libraries. You can easily enable them by using the flag MAKE_PYTHON.

The static library files will be available directly in the build directory. Three separate libraries are built: AIToolboxMDP, AIToolboxPOMDP and AIToolboxFMDP. In case you want to link against either the POMDP library or the Factored MDP library, you will also need to link against the MDP one, since both of them use MDP functionality.

A number of small tests are included which you can find in the test/ folder. You can execute them after building the project using the following command directly from the build directory, just after you finish make:

ctest

The tests also offer a brief introduction for the framework, waiting for a more complete descriptive write-up. Only the tests for the parts of the library that you compiled are going to be built.

To compile the library's documentation you need Doxygen. To use it it is sufficient to execute the following command from the project's root folder:

doxygen

After that the documentation will be generated into an html folder in the main directory.

Compiling a Program

To compile a program that uses this library, simply link it against the compiled libraries you need, and possibly to the lp_solve libraries (if using POMDP or FMDP).

Please note that since both POMDP and FMDP libraries rely on the MDP code, you MUST specify those libraries before the MDP library when linking, otherwise it may result in undefined reference errors. The POMDP and Factored MDP libraries are not currently dependent on each other so their order does not matter.

For Python, you just need to import the AIToolbox.so module, and you'll be able to use the classes as exported to Python. All classes are documented, and you can run in the Python CLI

help(AIToolbox.MDP)
help(AIToolbox.POMDP)

to see the documentation for each specific class.

Comments
  • Problem building Lpsolve

    Problem building Lpsolve

    Hello, I recently downloaded this library to use on Windows 10. I have run into trouble building the library though. Firstly, the lpsolve link takes to you to the main website, but doesn't clarify which version of lpsolve to download (https://sourceforge.net/projects/lpsolve/files/lpsolve/5.5.2.5/). I also think this instruction could be made clearer:

    (a shared library must be available to compile the Python wrapper)."

    Which shared library must I download for this? Are there additional instructions to execute this step?

    I am currently getting this error when attempting to build the toolbox: -- Could not link against lpsolve55! CMake Error at C:/Program Files/CMake/share/cmake-3.11/Modules/FindPackageHandleStandardArgs.cmake:137 (message): Could NOT find LpSolve (missing: LPSOLVE_LIBRARIES LPSOLVE_LINKS) Call Stack (most recent call first): C:/Program Files/CMake/share/cmake-3.11/Modules/FindPackageHandleStandardArgs.cmake:378 (_FPHSA_FAILURE_MESSAGE) cmake/Modules/FindLpSolve.cmake:88 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) CMakeLists.txt:149 (find_package)

    Can you tell me which directories LPSOLVE_LIBRARIES and LPSOLVE_LINKS should be pointing to?

    Thank you.

    opened by hifzajaved 32
  • Python module problem

    Python module problem

    I have finished building the library, and got the AIToolbox.dylib file generated. Now what should I do to import the module to python scripts? I set -DMAKE_PYTHON=1 in the cmake step, and now when i open python CLI, it still says "NameError: name 'AIToolbox' is not defined"

    opened by TurquoiseKitty 26
  • Sparse Matrix's on POMDP model

    Sparse Matrix's on POMDP model

    I'm not sure if it is a issue or if it is even supposed to be a feature but I haven't been able to create a POMDP model with sparse transitions, rewards or observations. I'm working on a pursuit domain environment and since the states scale so much with the size of the problem I wanted to try and use some sparse matrix's since most of the entries are empty anyway but I haven't been able to do so.

    Would appreciate any kind help on the problem, thank you for your time

    PS: I'm using the Python version

    Edit : I realize now that POMDP.SparseModel exists but still don't understand why only the observation matrix is sparse in this model since in MDP.SparseModel the transitions and reward matrix seems to be sparse as well

    opened by CassandroMartinho 22
  • Delegating ActionNode construction in MCTS/POMCP

    Delegating ActionNode construction in MCTS/POMCP

    Hello, I have a use case that might be of interest to you.

    My set of allowed actions is not stable, meaning that for each state, the set of actions that can be performed changes. In addition, the total number of actions can't be represented with an unsigned int, or at least not easily (it's a combinatorial problem). So what I've done is to take the code in MCTS.hpp/cpp and change the std::vector<ActionNode> into a map. I also had to change some places like the _graph->children.resize(A).

    That being said, what do you think about delegating the creation of the ActionNodes (and potentially the StateNodes as well) to a function, so just extending the MCTS and overriding this function would allow for a different ActionNode. On top of that, a bit on templating on the class for the container ActionNodes would work as well, by default it would be <std::vector<ActionNode>, unsigned int> where the second item is the type of the index when calling children.at(). In my case it would be <std::map<boost::dynamic_bitset, ActionNode>, boost::dynamic_bitset>.

    This + a bit more of inheritance would allow for removing a lot of duplication between MCTS and POMCP.

    I can't have a go before March but if you fancy starting earlier, I can work on MCTS, model and POMCP because that's the classes I know best but I won't be able to test the whole lot or dig elsewhere for side effects.

    Cheers,

    Emmanuel

    opened by EHadoux 16
  • about LP_Solve

    about LP_Solve

    Hi , I am using VSCode in windows , after cmake configure, it shows :

    [main] Configuring folder: AITools-RL [proc] Executing command: "C:\Program Files\CMake\bin\cmake.EXE" --no-warn-unused-cli -DCMAKE_EXPORT_COMPILE_COMMANDS:BOOL=TRUE -DCMAKE_BUILD_TYPE:STRING=Debug -DCMAKE_C_COMPILER:FILEPATH=C:\msys64\mingw64\bin\gcc.exe -DCMAKE_CXX_COMPILER:FILEPATH=C:\msys64\mingw64\bin\g++.exe -Sc:/cppVSCode/AITools-RL -Bc:/cppVSCode/AITools-RL/build -G Ninja [cmake] Not searching for unused variables given on the command line. [cmake] -- The CXX compiler identification is GNU 12.1.0 [cmake] -- Detecting CXX compiler ABI info [cmake] -- Detecting CXX compiler ABI info - done [cmake] -- Check for working CXX compiler: C:/msys64/mingw64/bin/g++.exe - skipped [cmake] -- Detecting CXX compile features [cmake] -- Detecting CXX compile features - done [cmake] -- Found Boost: C:/msys64/mingw64/include (found suitable version "1.79.0", minimum required is "1.67") [cmake] -- Found Eigen3: C:/msys64/mingw64/include/eigen3 (Required is at least version "3.2.92") [cmake] CMake Error at C:/Program Files/CMake/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:230 (message): [cmake] Could NOT find LpSolve (missing: LPSOLVE_INCLUDE_PATH LPSOLVE_LINKS) [cmake] Call Stack (most recent call first): [cmake] C:/Program Files/CMake/share/cmake-3.23/Modules/FindPackageHandleStandardArgs.cmake:594 (_FPHSA_FAILURE_MESSAGE) [cmake] cmake/Modules/FindLpSolve.cmake:91 (FIND_PACKAGE_HANDLE_STANDARD_ARGS) [cmake] CMakeLists.txt:139 (find_package) [cmake] [cmake] [cmake] -- Configuring incomplete, errors occurred! [cmake] See also "C:/cppVSCode/AITools-RL/build/CMakeFiles/CMakeOutput.log".

    Can you help me with that ? Thanks

    opened by StHamish 13
  • More examples?

    More examples?

    Hey @Svalorzen ,

    what's your take regarding the addition of more examples in the examples folder? Right now there in only an MDP code, but also a POMDP example would have been nice.

    opened by alecive 11
  • Trouble installing and running AIToolbox

    Trouble installing and running AIToolbox

    Hello, sorry for what might be a dumb problem.

    I'm trying to run a project that uses AIToolbox, I used the command given in the README to install the libraries needed:

    sudo apt install g++-10 cmake libboost1.71-all-dev liblpsolve55-dev lp-solve libeigen3-dev
    

    The project also came with this script to install AIToolbox:

    #!/bin/bash
    
    #yay -S cmake boost eigen lpsolve --noconfirm
    git clone https://github.com/Svalorzen/AI-Toolbox
    cd AI-Toolbox
    mkdir build
    cd build
    CXX=g++-10 cmake -DMAKE_POMDP=1 -DMAKE_PYTHON=1 -DPYTHON_VERSION=3 ..
    make
    cp AI-Toolbox/build/AIToolbox.so .
    

    Which ran without problems, besides this error which I believe is not serious:

    cp: cannot stat 'AI-Toolbox/build/AIToolbox.so': No such file or directory
    
    

    But when I try to run the project, I get this error:

    from AIToolbox import POMDP
    ImportError: libboost_python39.so.1.75.0: cannot open shared object file: No such file or directory
    
    

    The import also doesn't recognize AIToolbox, as you can see from the photo, which also shows the error: Screenshot from 2022-05-31 15-19-01

    What seems to be the problem? The error talks about libboost1.75 and Python 3.9, are those the versions I need to have to use AItoolbox? Currently I have 3.8.10 and libboost1.71 just like the command given in the README specifies.

    Again sorry for the dumb problem and wasting your time. Thanks in advance.

    opened by Guerra1997 9
  • Make issue

    Make issue

    Hello after running make I get the following error:

    In file included from /home/jpk/Desktop/AI-Toolbox-master/src/Factored/MDP/Algorithms/Utils/FactoredLP.cpp:1:
    /home/jpk/Desktop/AI-Toolbox-master/include/AIToolbox/Factored/MDP/Algorithms/Utils/FactoredLP.hpp:76:18: error: ‘optional’ in namespace ‘std’ does not name a template type
       76 |             std::optional<Vector> operator()(const FactoredVector & C, const FactoredVector & b, bool addConstantBasis = false);
          |                  ^~~~~~~~
    /home/jpk/Desktop/AI-Toolbox-master/include/AIToolbox/Factored/MDP/Algorithms/Utils/FactoredLP.hpp:7:1: note: ‘std::optional’ is defined in header ‘<optional>’; did you forget to ‘#include <optional>’?
        6 | #include <AIToolbox/Factored/MDP/Types.hpp>
      +++ |+#include <optional>
        7 | 
    /home/jpk/Desktop/AI-Toolbox-master/src/Factored/MDP/Algorithms/Utils/FactoredLP.cpp:32:27: error: no declaration matches ‘std::optional<Eigen::Matrix<double, -1, 1> > AIToolbox::Factored::MDP::FactoredLP::operator()(const AIToolbox::Factored::FactoredVector&, const AIToolbox::Factored::FactoredVector&, bool)’
       32 |     std::optional<Vector> FactoredLP::operator()(const FactoredVector & C, const FactoredVector & b, bool addConstantBasis) {
          |                           ^~~~~~~~~~
    /home/jpk/Desktop/AI-Toolbox-master/src/Factored/MDP/Algorithms/Utils/FactoredLP.cpp:32:27: note: no functions named ‘std::optional<Eigen::Matrix<double, -1, 1> > AIToolbox::Factored::MDP::FactoredLP::operator()(const AIToolbox::Factored::FactoredVector&, const AIToolbox::Factored::FactoredVector&, bool)’
    In file included from /home/jpk/Desktop/AI-Toolbox-master/src/Factored/MDP/Algorithms/Utils/FactoredLP.cpp:1:
    /home/jpk/Desktop/AI-Toolbox-master/include/AIToolbox/Factored/MDP/Algorithms/Utils/FactoredLP.hpp:35:11: note: ‘class AIToolbox::Factored::MDP::FactoredLP’ defined here
       35 |     class FactoredLP {
          |           ^~~~~~~~~~
    /home/jpk/Desktop/AI-Toolbox-master/src/Factored/MDP/Algorithms/Utils/FactoredLP.cpp:198:10: warning: ‘void AIToolbox::Factored::MDP::{anonymous}::Global::makeResult(AIToolbox::Factored::GenericVariableElimination<long unsigned int>::FinalFactors&&)’ defined but not used [-Wunused-function]
      198 |     void Global::makeResult(VE::FinalFactors && finalFactors) {
          |          ^~~~~~
    /home/jpk/Desktop/AI-Toolbox-master/src/Factored/MDP/Algorithms/Utils/FactoredLP.cpp:183:10: warning: ‘void AIToolbox::Factored::MDP::{anonymous}::Global::endCrossSum()’ defined but not used [-Wunused-function]
      183 |     void Global::endCrossSum() {
          |          ^~~~~~
    /home/jpk/Desktop/AI-Toolbox-master/src/Factored/MDP/Algorithms/Utils/FactoredLP.cpp:178:10: warning: ‘void AIToolbox::Factored::MDP::{anonymous}::Global::crossSum(const Factor&)’ defined but not used [-Wunused-function]
      178 |     void Global::crossSum(const Factor & f) {
          |          ^~~~~~
    /home/jpk/Desktop/AI-Toolbox-master/src/Factored/MDP/Algorithms/Utils/FactoredLP.cpp:168:10: warning: ‘void AIToolbox::Factored::MDP::{anonymous}::Global::beginCrossSum()’ defined but not used [-Wunused-function]
      168 |     void Global::beginCrossSum() {
          |          ^~~~~~
    /home/jpk/Desktop/AI-Toolbox-master/src/Factored/MDP/Algorithms/Utils/FactoredLP.cpp:159:10: warning: ‘void AIToolbox::Factored::MDP::{anonymous}::Global::initNewFactor()’ defined but not used [-Wunused-function]
      159 |     void Global::initNewFactor() {
          |          ^~~~~~
    make[2]: *** [src/CMakeFiles/AIToolboxFMDP.dir/build.make:459: src/CMakeFiles/AIToolboxFMDP.dir/Factored/MDP/Algorithms/Utils/FactoredLP.cpp.o] Error 1
    make[1]: *** [CMakeFiles/Makefile2:1109: src/CMakeFiles/AIToolboxFMDP.dir/all] Error 2
    make: *** [Makefile:114: all] Error 2
                ^~~~~~~~
    

    How can I overcome this?

    I'm running Ubuntu 21.10 and I appear to have the required g++-10(g++ (Ubuntu 11.2.0-7ubuntu2) 11.2.0 ), eigen, boost and lpsolve (installed as lpsolve dev)

    opened by Princeofthebow 9
  • Can't find Lpsolve when run cmake

    Can't find Lpsolve when run cmake

    Hello, I created the folder "build" and have installed Lp-solve by "sudo apt install lp-solve", but when I tried to run cmake .., I was told "could not find LpSolve", would you please tell me how to fix this error? Thank you very much! My system is Ubuntu 20.04. By the way, boost and eigent3 can be found.

    opened by Michaelxiaofeng 9
  • Segfaults in tiger_antelope example

    Segfaults in tiger_antelope example

    Hi,

    I've been trying to run the Tiger Antelope code in the example folder, but after countless time (I'd say that is runs for something like 20mins), the code segfaults. This is the terminal output:

    (~/code/AI-Toolbox/examples) (master) 
    [alecive@malakim]$ make
    g++ -O3 -std=c++11 ./tutorialcode.cpp -o tiger_antelope -I../include -I/usr/include/eigen3 -L../build -lAIToolboxMDP
    
    (~/code/AI-Toolbox/examples) (master) 
    [alecive@malakim]$ ./tiger_antelope 
    Mon Nov 14 10:57:09 2016
    - Copying model...!
    Mon Nov 14 11:14:25 2016
    - Init solver...!
    Mon Nov 14 11:14:25 2016
    - Starting solver!
    tiger_antelope: /usr/include/eigen3/Eigen/src/Core/CwiseBinaryOp.h:131: Eigen::CwiseBinaryOp<BinaryOp, Lhs, Rhs>::CwiseBinaryOp(const Lhs&, const Rhs&, const BinaryOp&) [with BinaryOp = Eigen::internal::scalar_product_op<double, double>; Lhs = const Eigen::SparseMatrix<double, 1>; Rhs = const Eigen::SparseMatrix<double, 1>]: Assertion `aLhs.rows() == aRhs.rows() && aLhs.cols() == aRhs.cols()' failed.
    Aborted (core dumped)
    
    opened by alecive 9
  • Make Errors

    Make Errors

    Hello @Svalorzen, I've got the following issues while compiling your software:

    [ 40%] Built target AIToolboxMDP
    Scanning dependencies of target MDP_RLModelTests
    Scanning dependencies of target MDP_MCTSTests
    Scanning dependencies of target MDP_WoLFPolicyTests
    Scanning dependencies of target AIToolboxPOMDP
    Scanning dependencies of target MDP_PrioritizedSweepingTests
    Scanning dependencies of target MDP_ModelTests
    Scanning dependencies of target FactoredMDP_SparseCooperativeQLearningTests
    Scanning dependencies of target FactoredMDP_VariableEliminationTests
    Scanning dependencies of target FactoredMDP_FactoredContainerTests
    Scanning dependencies of target MDP_ExperienceTests
    Scanning dependencies of target MDP_SARSATests
    Scanning dependencies of target MDP_TypesTests
    Scanning dependencies of target MDP_QLearningTests
    Scanning dependencies of target MDP_SparseExperienceTests
    Scanning dependencies of target FactoredMDP_UtilsTests
    Scanning dependencies of target FactoredMDP_MultiObjectiveVariableEliminationTests
    Scanning dependencies of target MDP_SparseModelTests
    Scanning dependencies of target MDP_ValueIterationTests
    Scanning dependencies of target MDP_SparseRLModelTests
    Scanning dependencies of target FactoredMDP_FactorGraphTests
    CMakeFiles/Global_UtilsTests.dir/UtilsTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    UtilsTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    collect2: error: ld returned 1 exit status
    test/CMakeFiles/Global_UtilsTests.dir/build.make:95: recipe for target '../test/bin/Global_UtilsTests' failed
    make[2]: *** [../test/bin/Global_UtilsTests] Error 1
    CMakeFiles/Makefile2:1134: recipe for target 'test/CMakeFiles/Global_UtilsTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/Global_UtilsTests.dir/all] Error 2
    make[1]: *** Waiting for unfinished jobs....
    
    [ 71%] Built target AIToolboxPOMDP
    CMakeFilesCMakeFiles/MDP_MCTSTests.dir/MDP/MCTSTests.cpp.o: In function `boost::CMakeFilesunit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::CMakeFilesunit_test:/:basic_cstringMDP_RLModelTests.dir</charMDP /const>RLModelTests.cpp.o):' :In
     MCTSTests.cppfunction: (`.boosttext._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE:[:unit_test_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE:]:+make_test_case0x23()boost:: :undefinedunit_test :reference: callback0to< boost`:boost::unit_test::unit_test::ut_detail::ut_detail::unused:>normalize_test_case_name (constboost&:,: unit_testboost::::basic_cstringunit_test<:char: basic_cstringconst<>char) 'const
    >)':
    RLModelTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::collect2: error: ld returned 1 exit status
    basic_cstring<char const>)'
    /FactoredMDP_FactorGraphTests.dircollect2: error: ld returned 1 exit status
    /FactoredMDP/FactorGraphTests.cpp.o: In/MDP_QLearningTests.dir/MDP/QLearningTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    QLearningTests.cpp:(CMakeFiles.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE/[MDP_SparseRLModelTests.dir/_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEEMDP]/+SparseRLModelTests.cpp.o0x23:) :In  undefined functionreference  `toboost :`:boostunit_test::::unit_test:make_test_case:(ut_detailboost::::normalize_test_case_nameunit_test(:boost::callback0:<unit_testboost::::basic_cstringunit_test<:char: ut_detailconst:>:)unused'>
     const&, boost::unit_test::basic_cstring<char const>)':
    SparseRLModelTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEEcollect2: error: ld returned 1 exit status
    [_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
     functioncollect2: error: ld returned 1 exit status
     `boost::unit_test::make_test_case(boost::unit_test::CMakeFiles/MDP_WoLFPolicyTests.dir/MDP/WoLFPolicyTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::test/CMakeFiles/MDP_MCTSTests.dir/build.make:96: recipe for target '../test/bin/MDP_MCTSTests' failed
    basic_cstring<charmake[2]: *** [../test/bin/MDP_MCTSTests] Error 1
     const>)':
    WoLFPolicyTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    callback0<CMakeFiles/Makefile2:726: recipe for target 'test/CMakeFiles/MDP_MCTSTests.dir/all' failed
    collect2: error: ld returned 1 exit status
    make[1]: *** [test/CMakeFiles/MDP_MCTSTests.dir/all] Error 2
    boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    test/CMakeFiles/MDP_QLearningTests.dir/build.make:96: recipe for target '../test/bin/MDP_QLearningTests' failed
    make[2]: *** [../test/bin/MDP_QLearningTests] Error 1
    FactorGraphTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_nameCMakeFilesCMakeFiles/Makefile2:985: recipe for target 'test/CMakeFiles/MDP_QLearningTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_QLearningTests.dir/all] Error 2
    /MDP_TypesTests.dir/(boost::unit_test::basic_cstring<char const>)'
    CMakeFiles/MDP_ValueIterationTests.dirCMakeFiles/MDP_PrioritizedSweepingTests.dir/MDP/PrioritizedSweepingTests.cpp.o: In function collect2: error: ld returned 1 exit status
    `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    PrioritizedSweepingTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    MDP/MDP//ValueIterationTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_testcollect2: error: ld returned 1 exit status
    ::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    TypesTests.cpp.oValueIterationTests.cpp:(:.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[ _ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::Inut_detail::normalize_test_case_name(boost::unit_test::basic_cstringtest/CMakeFiles/MDP_RLModelTests.dir/build.make:96: recipe for target '../test/bin/MDP_RLModelTests' failed
    <charmake[2]: *** [../test/bin/MDP_RLModelTests] Error 1
     const>)'
     function `boost::unit_test::make_test_case(boost:collect2: error: ld returned 1 exit status
    :unit_test::callback0<boost::unit_test::ut_detail::unusedtest/CMakeFiles/MDP_SparseRLModelTests.dir/build.make:96: recipe for target '../test/bin/MDP_SparseRLModelTests' failed
    > make[2]: *** [../test/bin/MDP_SparseRLModelTests] Error 1
    const&, boost:CMakeFiles/Makefile2:800: recipe for target 'test/CMakeFiles/MDP_RLModelTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_RLModelTests.dir/all] Error 2
    :unit_test::basic_cstring<char const>)':
    TypesTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    collect2: error: ld returned 1 exit status
    test/CMakeFiles/MDP_WoLFPolicyTests.dir/build.make:96: recipe for target '../test/bin/MDP_WoLFPolicyTests' failed
    make[2]: *** [../test/bin/MDP_WoLFPolicyTests] Error 1
    test/CMakeFiles/FactoredMDP_FactorGraphTests.dir/build.make:96: recipe for target '../test/bin/FactoredMDP_FactorGraphTests' failed
    CMakeFilesmake[2]: *** [../test/bin/FactoredMDP_FactorGraphTests] Error 1
    /MDP_SARSATests.dir/MDP/SARSATests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    SARSATests.cpp:test/CMakeFiles/MDP_PrioritizedSweepingTests.dir/build.make:96: recipe for target '../test/bin/MDP_PrioritizedSweepingTests' failed
    (.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEEmake[2]: *** [../test/bin/MDP_PrioritizedSweepingTests] Error 1
    [_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::CMakeFiles/Makefile2:948: recipe for target 'test/CMakeFiles/MDP_SparseRLModelTests.dir/all' failed
    normalize_test_case_name(make[1]: *** [test/CMakeFiles/MDP_SparseRLModelTests.dir/all] Error 2
    boost::unit_test::basic_cstring<charCMakeFiles/Makefile2:615: recipe for target 'test/CMakeFiles/MDP_WoLFPolicyTests.dir/all' failed
     constmake[1]: *** [test/CMakeFiles/MDP_WoLFPolicyTests.dir/all] Error 2
    >)'
    CMakeFiles/Makefile2:1060: recipe for target 'test/CMakeFiles/FactoredMDP_FactorGraphTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/FactoredMDP_FactorGraphTests.dir/all] Error 2
    test/CMakeFiles/MDP_ValueIterationTests.dir/build.make:96: recipe for target '../test/bin/MDP_ValueIterationTests' failed
    make[2]: *** [../test/bin/MDP_ValueIterationTests] Error 1
    collect2: error: ld returned 1 exit status
    CMakeFiles/Makefile2:541: recipe for target 'test/CMakeFiles/MDP_PrioritizedSweepingTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_PrioritizedSweepingTests.dir/all] Error 2
    test/CMakeFiles/MDP_TypesTests.dir/build.make:96: recipe for target '../test/bin/MDP_TypesTests' failed
    make[2]: *** [../test/bin/MDP_TypesTests] Error 1
    CMakeFiles/Makefile2:1097: recipe for target 'test/CMakeFiles/MDP_ValueIterationTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_ValueIterationTests.dir/all] Error 2
    CMakeFiles/FactoredMDP_FactoredContainerTests.dir/FactoredMDP/FactoredContainerTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    FactoredContainerTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    collect2: error: ld returned 1 exit status
    CMakeFiles/Makefile2:652: recipe for target 'test/CMakeFiles/MDP_TypesTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_TypesTests.dir/all] Error 2
    test/CMakeFiles/MDP_SARSATests.dir/build.make:96: recipe for target '../test/bin/MDP_SARSATests' failed
    make[2]: *** [../test/bin/MDP_SARSATests] Error 1
    CMakeFiles/Makefile2:689: recipe for target 'test/CMakeFiles/MDP_SARSATests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_SARSATests.dir/all] Error 2
    test/CMakeFiles/FactoredMDP_FactoredContainerTests.dir/build.make:96: recipe for target '../test/bin/FactoredMDP_FactoredContainerTests' failed
    make[2]: *** [../test/bin/FactoredMDP_FactoredContainerTests] Error 1
    CMakeFiles/Makefile2:1171: recipe for target 'test/CMakeFiles/FactoredMDP_FactoredContainerTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/FactoredMDP_FactoredContainerTests.dir/all] Error 2
    CMakeFiles/FactoredMDP_SparseCooperativeQLearningTests.dir/FactoredMDP/SparseCooperativeQLearningTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    SparseCooperativeQLearningTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    collect2: error: ld returned 1 exit status
    test/CMakeFiles/FactoredMDP_SparseCooperativeQLearningTests.dir/build.make:96: recipe for target '../test/bin/FactoredMDP_SparseCooperativeQLearningTests' failed
    make[2]: *** [../test/bin/FactoredMDP_SparseCooperativeQLearningTests] Error 1
    CMakeFiles/Makefile2:1320: recipe for target 'test/CMakeFiles/FactoredMDP_SparseCooperativeQLearningTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/FactoredMDP_SparseCooperativeQLearningTests.dir/all] Error 2
    CMakeFiles/FactoredMDP_VariableEliminationTests.dir/FactoredMDP/VariableEliminationTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    VariableEliminationTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    collect2: error: ld returned 1 exit status
    test/CMakeFiles/FactoredMDP_VariableEliminationTests.dir/build.make:96: recipe for target '../test/bin/FactoredMDP_VariableEliminationTests' failed
    make[2]: *** [../test/bin/FactoredMDP_VariableEliminationTests] Error 1
    CMakeFiles/Makefile2:1208: recipe for target 'test/CMakeFiles/FactoredMDP_VariableEliminationTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/FactoredMDP_VariableEliminationTests.dir/all] Error 2
    CMakeFiles/FactoredMDP_UtilsTests.dir/FactoredMDP/UtilsTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    UtilsTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    collect2: error: ld returned 1 exit status
    test/CMakeFiles/FactoredMDP_UtilsTests.dir/build.make:96: recipe for target '../test/bin/FactoredMDP_UtilsTests' failed
    make[2]: *** [../test/bin/FactoredMDP_UtilsTests] Error 1
    CMakeFiles/Makefile2:837: recipe for target 'test/CMakeFiles/FactoredMDP_UtilsTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/FactoredMDP_UtilsTests.dir/all] Error 2
    CMakeFiles/FactoredMDP_MultiObjectiveVariableEliminationTests.dir/FactoredMDP/MultiObjectiveVariableEliminationTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    MultiObjectiveVariableEliminationTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    collect2: error: ld returned 1 exit status
    test/CMakeFiles/FactoredMDP_MultiObjectiveVariableEliminationTests.dir/build.make:96: recipe for target '../test/bin/FactoredMDP_MultiObjectiveVariableEliminationTests' failed
    make[2]: *** [../test/bin/FactoredMDP_MultiObjectiveVariableEliminationTests] Error 1
    CMakeFiles/Makefile2:1245: recipe for target 'test/CMakeFiles/FactoredMDP_MultiObjectiveVariableEliminationTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/FactoredMDP_MultiObjectiveVariableEliminationTests.dir/all] Error 2
    CMakeFiles/MDP_SparseExperienceTests.dir/MDP/SparseExperienceTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstringCMakeFiles</charMDP_ModelTests.dir /constMDP>/)ModelTests.cpp.o':: 
    InSparseExperienceTests.cpp :function( `boost.:text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE:[unit_test:_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE:]make_test_case+(0x23boost)::: unit_testundefined: :referencecallback0 <toboost :`:boostunit_test::::unit_testut_detail::::ut_detailunused:>: normalize_test_case_nameconst(&boost,: :boostunit_test::::unit_testbasic_cstring:<:charbasic_cstring <constchar> )const'>
    )':
    ModelTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    collect2: error: ld returned 1 exit status
    collect2: error: ld returned 1 exit status
    test/CMakeFiles/MDP_SparseExperienceTests.dir/build.make:96: recipe for target '../test/bin/MDP_SparseExperienceTests' failed
    test/CMakeFiles/MDP_ModelTests.dir/build.make:96: recipe for target '../test/bin/MDP_ModelTests' failed
    make[2]: *** [../test/bin/MDP_SparseExperienceTests] Error 1
    make[2]: *** [../test/bin/MDP_ModelTests] Error 1
    CMakeFiles/Makefile2:874: recipe for target 'test/CMakeFiles/MDP_SparseExperienceTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_SparseExperienceTests.dir/all] Error 2
    CMakeFiles/Makefile2:578: recipe for target 'test/CMakeFiles/MDP_ModelTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_ModelTests.dir/all] Error 2
    CMakeFiles/MDP_SparseModelTests.dir/MDP/SparseModelTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused> const&, boost::unit_test::basic_cstring<char const>)':
    SparseModelTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<CMakeFileschar/ constMDP_ExperienceTests.dir>/)MDP'/
    ExperienceTests.cpp.o: In function `boost::unit_test::make_test_case(boost::unit_test::callback0<boost::unit_test::ut_detail::unused>collect2: error: ld returned 1 exit status
     const&, boost::unit_test::basic_cstring<char const>)':
    ExperienceTests.cpp:(.text._ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE[_ZN5boost9unit_test14make_test_caseERKNS0_9callback0INS0_9ut_detail6unusedEEENS0_13basic_cstringIKcEE]+0x23): undefined reference to `boost::unit_test::ut_detail::normalize_test_case_name(boost::unit_test::basic_cstring<char const>)'
    collect2: error: ld returned 1 exit status
    test/CMakeFiles/MDP_SparseModelTests.dir/build.make:96: recipe for target '../test/bin/MDP_SparseModelTests' failed
    make[2]: *** [../test/bin/MDP_SparseModelTests] Error 1
    CMakeFiles/Makefile2:911: recipe for target 'test/CMakeFiles/MDP_SparseModelTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_SparseModelTests.dir/all] Error 2
    test/CMakeFiles/MDP_ExperienceTests.dir/build.make:96: recipe for target '../test/bin/MDP_ExperienceTests' failed
    make[2]: *** [../test/bin/MDP_ExperienceTests] Error 1
    CMakeFiles/Makefile2:763: recipe for target 'test/CMakeFiles/MDP_ExperienceTests.dir/all' failed
    make[1]: *** [test/CMakeFiles/MDP_ExperienceTests.dir/all] Error 2
    [ 72%] Linking CXX shared library ../MDP.so
    [ 72%] Built target MDP
    Makefile:94: recipe for target 'all' failed
    make: *** [all] Error 2
    
    

    -- The C compiler identification is GNU 4.9.3 -- The CXX compiler identification is GNU 4.9.3 -- Check for working C compiler: /usr/bin/cc -- Check for working C compiler: /usr/bin/cc -- works -- Detecting C compiler ABI info -- Detecting C compiler ABI info - done -- Detecting C compile features -- Detecting C compile features - done -- Check for working CXX compiler: /usr/bin/c++ -- Check for working CXX compiler: /usr/bin/c++ -- works -- Detecting CXX compiler ABI info -- Detecting CXX compiler ABI info - done -- Detecting CXX compile features -- Detecting CXX compile features - done -- Boost version: 1.58.0 -- Found Eigen3: /usr/local/include/eigen3 (Required is at least version "3.2") -- Found PythonLibs: /home/jing/anaconda2/lib/libpython2.7.so (found suitable version "2.7.12", minimum required is "2.7") -- Boost version: 1.58.0 -- Found the following Boost libraries: -- python -- Performing Test LPSOLVE_LINKS_ALONE -- Performing Test LPSOLVE_LINKS_ALONE - Success -- Found LpSolve: /usr/local/lib/liblpsolve55.so
    -- Boost version: 1.58.0 -- Found the following Boost libraries: -- unit_test_framework -- Found PythonInterp: /home/jing/anaconda2/bin/python2.7 (found suitable exact version "2.7.12") -- Configuring done -- Generating done

    opened by JFan2016 8
  • error C3779: 'AIToolbox::IndexMapIterator<IdsIterator,Container>::operator *': a function that returns 'auto' cannot be used before it is defined

    error C3779: 'AIToolbox::IndexMapIterator::operator *': a function that returns 'auto' cannot be used before it is defined

    When the .sln is built, there would be error C3779, e.g., 'AIToolbox::IndexMapIterator<IdsIterator,Container>::operator *': a function that returns 'auto' cannot be used before it is defined. Is there any method to solve it?

    opened by jianchenghao 11
  • RDDL and/or PPDDL parser

    RDDL and/or PPDDL parser

    Would it be technically possible to have a module in AI-Toolbox capable of loading MDP/POMDP models in RDDL and/or PPDDL format (which seems to be the "official" formats for the international planning competitions IPC) ?

    There is a lot of planning domains / models in these formats and it would be cool to be able to easily test the AI-Toolbox algorithms on them.

    opened by jaja360 1
  • Improve documentation, add examples

    Improve documentation, add examples

    While each method & related code is well commented, I'd like more examples on how to use the library, and possibly explanations of the underlying algorithms.

    I'm very open to contributions for this. I think that if somebody else can write the documentation it will be much more helpful than if I write it myself, given that already know how the code works and is thus much harder for me to guess what are the pain points for new users.

    If you feel like helping out, I'd be very glad to help you along.

    ready help wanted 
    opened by Svalorzen 0
  • Increase logging statements

    Increase logging statements

    As the new logging system seems to be working, there's probably a need to "backport" it to all methods, so that if needed an user can print how an algorithm is doing. I'm not exactly sure what would be best to print, so if anyone has a good idea let me know.

    ready help wanted 
    opened by Svalorzen 0
  • Implement Multithreading

    Implement Multithreading

    This is more for the future since it may require lots of tweaking to get right, and to check which data structures that the code currently uses are thread-safe or not, but many algorithms could definitely use multi-threading to speed up performance. OpenMP would be my favorite choice here.

    ready 
    opened by Svalorzen 0
  • Write more/better tests

    Write more/better tests

    There is a high need of writing better tests for existing functionality, possibly using problems and solutions available from the literature. Currently tests mostly verify basic functionality and are probably not very indicative of the library correctness.

    ready help wanted 
    opened by Svalorzen 0
Owner
Eugenio Bargiacchi
PhD student on multi-agent reinforcement learning.
Eugenio Bargiacchi
Source code for the TKET quantum compiler, Python bindings and utilities

tket Introduction This repository contains the full source code for tket, a quantum SDK. If you just want to use tket via Python, the easiest way is t

Cambridge Quantum 162 Dec 21, 2022
PyCppAD — Python bindings for CppAD Automatic Differentiation library

PyCppAD is an open source framework which provides bindings for the CppAD Automatic Differentiation(CppAD) C++ library in Python. PyCppAD also includes support for the CppADCodeGen (CppADCodeGen), C++ library, which exploits CppAD functionality to perform code generation.

SimpleRobotics 14 Nov 14, 2022
Inference framework for MoE layers based on TensorRT with Python binding

InfMoE Inference framework for MoE-based models, based on a TensorRT custom plugin named MoELayerPlugin (including Python binding) that can run infere

Shengqi Chen 34 Nov 25, 2022
An Out-of-the-Box TensorRT-based Framework for High Performance Inference with C++/Python Support

An Out-of-the-Box TensorRT-based Framework for High Performance Inference with C++/Python Support

手写AI 1.5k Jan 5, 2023
Golang bindings for Nvidia Datacenter GPU Manager (DCGM)

Bindings Golang bindings are provided for NVIDIA Data Center GPU Manager (DCGM). DCGM is a set of tools for managing and monitoring NVIDIA GPUs in clu

NVIDIA Corporation 40 Dec 27, 2022
TengineGst is a streaming media analytics framework, based on GStreamer multimedia framework, for creating varied complex media analytics pipelines.

TengineGst is a streaming media analytics framework, based on GStreamer multimedia framework, for creating varied complex media analytics pipelines. It ensures pipeline interoperability and provides optimized media, and inference operations using Tengine Toolkit Inference Engine backend, across varied architecture - CPU, iGPU and VPU.

OAID 69 Dec 17, 2022
Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

eXtreme Gradient Boosting Community | Documentation | Resources | Contributors | Release Notes XGBoost is an optimized distributed gradient boosting l

Distributed (Deep) Machine Learning Community 23.6k Jan 3, 2023
High performance, easy-to-use, and scalable machine learning (ML) package, including linear model (LR), factorization machines (FM), and field-aware factorization machines (FFM) for Python and CLI interface.

What is xLearn? xLearn is a high performance, easy-to-use, and scalable machine learning package that contains linear model (LR), factorization machin

Chao Ma 3k Dec 23, 2022
A fast, scalable, high performance Gradient Boosting on Decision Trees library, used for ranking, classification, regression and other machine learning tasks for Python, R, Java, C++. Supports computation on CPU and GPU.

Website | Documentation | Tutorials | Installation | Release Notes CatBoost is a machine learning method based on gradient boosting over decision tree

CatBoost 6.9k Dec 31, 2022
In-situ data analyses and machine learning with OpenFOAM and Python

PythonFOAM: In-situ data analyses with OpenFOAM and Python Using Python modules for in-situ data analytics with OpenFOAM 8. NOTE that this is NOT PyFO

Argonne Leadership Computing Facility - ALCF 129 Dec 29, 2022
Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more

Apache MXNet (incubating) for Deep Learning Apache MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to m

The Apache Software Foundation 20.2k Dec 31, 2022
Tensors and Dynamic neural networks in Python with strong GPU acceleration

PyTorch is a Python package that provides two high-level features: Tensor computation (like NumPy) with strong GPU acceleration Deep neural networks b

null 61.4k Jan 4, 2023
Implement yolov5 with Tensorrt C++ api, and integrate batchedNMSPlugin. A Python wrapper is also provided.

yolov5 Original codes from tensorrtx. I modified the yololayer and integrated batchedNMSPlugin. A yolov5s.wts is provided for fast demo. How to genera

weiwei zhou 46 Dec 6, 2022
Upload and changes to Python 0.9.1 release (from 1991!) so that it would compile

This is Python, an extensible interpreted programming language that combines remarkable power with very clear syntax. This is version 0.9 (the first

Skip Montanaro 139 Dec 25, 2022
ParaMonte: Plain Powerful Parallel Monte Carlo and MCMC Library for Python, MATLAB, Fortran, C++, C.

Overview | Installation | Dependencies | Parallelism | Examples | Acknowledgments | License | Authors ParaMonte: Plain Powerful Parallel Monte Carlo L

Computational Data Science Lab 182 Dec 31, 2022
Python and C++ implementation of "MarkerPose: Robust real-time planar target tracking for accurate stereo pose estimation". Accepted at LXCV Workshop @ CVPR 2021.

MarkerPose: Robust Real-time Planar Target Tracking for Accurate Stereo Pose Estimation This is a PyTorch and LibTorch implementation of MarkerPose: a

Jhacson Meza 47 Nov 18, 2022
Example of using ultralytics YOLO V5 with OpenCV 4.5.4, C++ and Python

yolov5-opencv-cpp-python Example of performing inference with ultralytics YOLO V5, OpenCV 4.5.4 DNN, C++ and Python Looking for YOLO V4 OpenCV C++/Pyt

null 183 Jan 9, 2023