13 #define BOOST_TEST_DYN_LINK
14 #define BOOST_TEST_MAIN
15 #define BOOST_TEST_MODULE OptimiseTestSuite
16 #include <boost/test/unit_test.hpp>
18 #include <stdair/basic/BasLogParams.hpp>
19 #include <stdair/basic/BasDBParams.hpp>
20 #include <stdair/basic/BasFileMgr.hpp>
21 #include <stdair/service/Logger.hpp>
26 namespace boost_utf = boost::unit_test;
29 std::ofstream utfReportStream (
"OptimiseTestSuite_utfresults.xml");
34 struct UnitTestConfig {
37 boost_utf::unit_test_log.set_stream (utfReportStream);
38 boost_utf::unit_test_log.set_format (boost_utf::XML);
39 boost_utf::unit_test_log.set_threshold_level (boost_utf::log_test_units);
50 int testOptimiseHelper (
const unsigned short optimisationMethodFlag,
51 const bool isBuiltin) {
54 int oExpectedBookingLimit = 0;
57 std::ostringstream oStr;
58 oStr <<
"OptimiseTestSuite_" << optimisationMethodFlag <<
".log";
59 const stdair::Filename_T lLogFilename (oStr.str());
66 const unsigned short METHOD_FLAG = optimisationMethodFlag;
69 const double cabinCapacity = 100.0;
72 std::ofstream logOutputFile;
74 logOutputFile.open (lLogFilename.c_str());
75 logOutputFile.clear();
78 const stdair::BasLogParams lLogParams (stdair::LOG::DEBUG, logOutputFile);
82 if (isBuiltin ==
true) {
85 rmolService.buildSampleBom();
91 rmolService.parseAndLoad (cabinCapacity, lRMInputFileName);
94 switch (METHOD_FLAG) {
97 STDAIR_LOG_DEBUG (
"Optimisation by Monte-Carlo (MC)");
101 rmolService.optimalOptimisationByMCIntegration (K);
107 STDAIR_LOG_DEBUG (
"Optimisation by Dynamic Programming (DP)");
110 rmolService.optimalOptimisationByDP ();
116 STDAIR_LOG_DEBUG (
"Calculate the Bid-Price Vectors (BPV) by EMSR");
119 rmolService.heuristicOptimisationByEmsr ();
125 STDAIR_LOG_DEBUG (
"Calculate the Authorisation Levels (AUs) by EMSRa");
129 rmolService.heuristicOptimisationByEmsrA ();
138 STDAIR_LOG_DEBUG (
"Calculate the Authorisation Levels (AUs) by EMSRb");
141 rmolService.heuristicOptimisationByEmsrB ();
145 default: rmolService.optimalOptimisationByMCIntegration (K);
149 logOutputFile.close();
151 return oExpectedBookingLimit;
158 BOOST_GLOBAL_FIXTURE (UnitTestConfig);
173 BOOST_AUTO_TEST_SUITE (master_test_suite)
178 BOOST_AUTO_TEST_CASE (rmol_optimisation_monte_carlo) {
181 const bool isBuiltin =
false;
183 BOOST_CHECK_NO_THROW (testOptimiseHelper(0, isBuiltin););
189 BOOST_AUTO_TEST_CASE (rmol_optimisation_dynamic_programming) {
192 const bool isBuiltin =
false;
194 BOOST_CHECK_NO_THROW (testOptimiseHelper(1, isBuiltin););
201 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_bpv) {
204 const bool isBuiltin =
false;
206 BOOST_CHECK_NO_THROW (testOptimiseHelper(2, isBuiltin););
213 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_a) {
216 const bool isBuiltin =
false;
218 BOOST_CHECK_NO_THROW (testOptimiseHelper(3, isBuiltin););
232 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_b) {
235 const bool isBuiltin =
false;
237 BOOST_CHECK_NO_THROW (testOptimiseHelper(4, isBuiltin););
243 BOOST_AUTO_TEST_CASE (rmol_optimisation_monte_carlo_built_in) {
246 const bool isBuiltin =
true;
248 BOOST_CHECK_NO_THROW (testOptimiseHelper(5, isBuiltin););
254 BOOST_AUTO_TEST_CASE (rmol_optimisation_dynamic_programming_built_in) {
257 const bool isBuiltin =
true;
259 BOOST_CHECK_NO_THROW (testOptimiseHelper(6, isBuiltin););
266 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_bpv_built_in) {
269 const bool isBuiltin =
true;
271 BOOST_CHECK_NO_THROW (testOptimiseHelper(7, isBuiltin););
278 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_a_built_in) {
281 const bool isBuiltin =
true;
283 BOOST_CHECK_NO_THROW (testOptimiseHelper(8, isBuiltin););
290 BOOST_AUTO_TEST_CASE (rmol_optimisation_emsr_b_built_in) {
293 const bool isBuiltin =
true;
295 BOOST_CHECK_NO_THROW (testOptimiseHelper(9, isBuiltin););
299 BOOST_AUTO_TEST_SUITE_END()