13 #define BOOST_TEST_DYN_LINK 14 #define BOOST_TEST_MAIN 15 #define BOOST_TEST_MODULE OptimiseTestSuite 16 #include <boost/test/unit_test.hpp> 17 #include <boost/version.hpp> 19 #include <stdair/basic/BasLogParams.hpp> 20 #include <stdair/basic/BasDBParams.hpp> 21 #include <stdair/basic/BasFileMgr.hpp> 22 #include <stdair/service/Logger.hpp> 28 namespace boost_utf = boost::unit_test;
31 std::ofstream utfReportStream (
"OptimiseTestSuite_utfresults.xml");
36 struct UnitTestConfig {
39 boost_utf::unit_test_log.set_stream (utfReportStream);
40 #if BOOST_VERSION >= 105900 41 boost_utf::unit_test_log.set_format (boost_utf::OF_XML);
43 boost_utf::unit_test_log.set_format (boost_utf::XML);
45 boost_utf::unit_test_log.set_threshold_level (boost_utf::log_test_units);
56 int testOptimiseHelper (
const unsigned short optimisationMethodFlag,
57 const bool isBuiltin) {
60 int oExpectedBookingLimit = 0;
63 std::ostringstream oStr;
64 oStr <<
"OptimiseTestSuite_" << optimisationMethodFlag <<
"_" << isBuiltin <<
".log";
65 const stdair::Filename_T lLogFilename (oStr.str());
72 const unsigned short METHOD_FLAG = optimisationMethodFlag;
75 const double cabinCapacity = 100.0;
78 std::ofstream logOutputFile;
80 logOutputFile.open (lLogFilename.c_str());
81 logOutputFile.clear();
84 const stdair::BasLogParams lLogParams (stdair::LOG::DEBUG, logOutputFile);
88 if (isBuiltin ==
true) {
91 rmolService.buildSampleBom();
97 rmolService.parseAndLoad (cabinCapacity, lRMInputFileName);
100 switch (METHOD_FLAG) {
103 STDAIR_LOG_DEBUG (
"Optimisation by Monte-Carlo (MC)");
107 rmolService.optimalOptimisationByMCIntegration (K);
113 STDAIR_LOG_DEBUG (
"Optimisation by Dynamic Programming (DP)");
116 rmolService.optimalOptimisationByDP ();
122 STDAIR_LOG_DEBUG (
"Calculate the Bid-Price Vectors (BPV) by EMSR");
125 rmolService.heuristicOptimisationByEmsr ();
131 STDAIR_LOG_DEBUG (
"Calculate the Authorisation Levels (AUs) by EMSRa");
135 rmolService.heuristicOptimisationByEmsrA ();
144 STDAIR_LOG_DEBUG (
"Calculate the Authorisation Levels (AUs) by EMSRb");
147 rmolService.heuristicOptimisationByEmsrB ();
151 default: rmolService.optimalOptimisationByMCIntegration (K);
155 logOutputFile.close();
157 return oExpectedBookingLimit;
164 BOOST_GLOBAL_FIXTURE (UnitTestConfig);
179 BOOST_AUTO_TEST_SUITE (master_test_suite)
184 BOOST_AUTO_TEST_CASE (rmol_optimisation_monte_carlo) {
187 const bool isBuiltin =
false;
189 BOOST_CHECK_NO_THROW (testOptimiseHelper(0, isBuiltin););
195 BOOST_AUTO_TEST_CASE (rmol_optimisation_dynamic_programming) {
198 const bool isBuiltin =
false;
200 BOOST_CHECK_NO_THROW (testOptimiseHelper(1, isBuiltin););
207 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_bpv) {
210 const bool isBuiltin =
false;
212 BOOST_CHECK_NO_THROW (testOptimiseHelper(2, isBuiltin););
219 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_a) {
222 const bool isBuiltin =
false;
224 BOOST_CHECK_NO_THROW (testOptimiseHelper(3, isBuiltin););
238 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_b) {
241 const bool isBuiltin =
false;
243 BOOST_CHECK_NO_THROW (testOptimiseHelper(4, isBuiltin););
249 BOOST_AUTO_TEST_CASE (rmol_optimisation_monte_carlo_built_in) {
252 const bool isBuiltin =
true;
254 BOOST_CHECK_NO_THROW (testOptimiseHelper(0, isBuiltin););
260 BOOST_AUTO_TEST_CASE (rmol_optimisation_dynamic_programming_built_in) {
263 const bool isBuiltin =
true;
265 BOOST_CHECK_NO_THROW (testOptimiseHelper(1, isBuiltin););
272 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_bpv_built_in) {
275 const bool isBuiltin =
true;
277 BOOST_CHECK_NO_THROW (testOptimiseHelper(2, isBuiltin););
284 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_a_built_in) {
287 const bool isBuiltin =
true;
289 BOOST_CHECK_NO_THROW (testOptimiseHelper(3, isBuiltin););
296 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_b_built_in) {
299 const bool isBuiltin =
true;
301 BOOST_CHECK_NO_THROW (testOptimiseHelper(4, isBuiltin););
305 BOOST_AUTO_TEST_SUITE_END()
#define STDAIR_SAMPLE_DIR
const int DEFAULT_NUMBER_OF_DRAWS_FOR_MC_SIMULATION
Interface for the RMOL Services.