diff --git a/archive_current.sh b/archive_current.sh index c1bfe3778..ff710c59e 100755 --- a/archive_current.sh +++ b/archive_current.sh @@ -1,3 +1,3 @@ today=`date --iso-8601` -git archive --format zip master > eo_${today}.zip +git archive --format zip master > EO-${today}.zip diff --git a/eo/CMakeLists.txt b/eo/CMakeLists.txt index 52840cf64..5b8840017 100644 --- a/eo/CMakeLists.txt +++ b/eo/CMakeLists.txt @@ -43,7 +43,7 @@ ENABLE_LANGUAGE(C) ### 2) Include required modules / configuration files ##################################################################################### -FIND_PACKAGE(OpenMP REQUIRED) +FIND_PACKAGE(OpenMP) IF(OPENMP_FOUND) SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") diff --git a/eo/ForRelease b/eo/ForRelease index 621ee19cc..290cfcb29 100644 --- a/eo/ForRelease +++ b/eo/ForRelease @@ -1,7 +1,7 @@ In order to create a new release from the current repository, perform the following steps: -- Create a branch named "eo_x.y.z" +- If necessary, create a branch named "eo_x.y.z" - Set version number in eo-conf.cmake - Check/update NEWS file, set release date and version in NEWS. - use the "archive_current.sh" script to create the source archive @@ -11,3 +11,35 @@ following steps: - Send announcement to mailing lists - Bump version number to next "x.y.z-edge" in eo-conf.cmake + +When reaching stable versions: +- prepare a message with the following template: + -----8<----- + A new version of the "Evolving Objects" framework is available. + + EO is a template-based, C++ evolutionary computation library which + helps you to write your own stochastic optimization algorithms + insanely fast. + + Learn more about EO on the official website: + http://eodev.sourceforge.net/ + + You will find the release x.y.z at the following address: + https://sourceforge.net/projects/eodev/files/eo/ + + Here is a summary of the change log: + - XXXXX + - and more… + + Do not hesitate to submit the bugs you will face: + https://sourceforge.net/apps/trac/eodev/wiki/WikiStart + + Happy evolutionary hacking. + -----8<----- +- Post the message to: + - EO news https://sourceforge.net/news/?group_id=9775 + - EO mailing list: eodev-main@lists.sourceforge.net + - ParadisEO mailing list: paradiseo-users@lists.gforge.inria.fr + - EC-digest maling list: ec-digest-l@listserv.gmu.edu + - JET mailing list: jet@inria.fr + diff --git a/eo/INSTALL b/eo/INSTALL index 25f56d4a3..6264e4cea 100644 --- a/eo/INSTALL +++ b/eo/INSTALL @@ -74,7 +74,7 @@ Or go through the following steps: 2. call CPack specifying the desired package system: cpack -G DEB 3. install the package: - sudo apt-get install EO-1.1.1-Linux.deb + sudo dpkg -i EO-1.1.1-Linux.deb Basic installation diff --git a/eo/NEWS b/eo/NEWS index f07f9975d..f4625d6c3 100644 --- a/eo/NEWS +++ b/eo/NEWS @@ -1,5 +1,7 @@ -* release 1.2 (10. May. 2011) - - fixed the incremental allocation issue in the variation operator which were +* current version + +* release 1.2 (16. May. 2011) + - fixed the incremental allocation issue in variation operators which were taking too much time for big population sizes - new class eoParallel enabling parallelization in EO using OpenMP. At this time, it only concerns the evaluation operator, for advanced details go to @@ -9,6 +11,8 @@ - script installing EO manually in using symbolic links - evaluators that throw an exception if a maximum time has been reached (wallclock and CPU user time for POSIX systems), independently of the number of generations + - merged parser and parser-logger + - some bugfixes for windows systems * release 1.1 (8. Nov. 2010) - provide cmake build system, remove the old autotools one diff --git a/eo/package_nsis.bat b/eo/package_nsis.bat new file mode 100644 index 000000000..d372c4340 --- /dev/null +++ b/eo/package_nsis.bat @@ -0,0 +1,4 @@ +cd release +cpack -G NSIS +cd .. +pause diff --git a/eo/src/apply.h b/eo/src/apply.h index 23a52245b..f685f8d3b 100644 --- a/eo/src/apply.h +++ b/eo/src/apply.h @@ -85,35 +85,35 @@ void apply(eoUF& _proc, std::vector& _pop) @ingroup Utilities */ -template -void omp_apply(eoUF& _proc, std::vector& _pop) -{ - size_t size = _pop.size(); -#pragma omp parallel for if(eo::parallel.isEnabled()) - //doesnot work with gcc 4.1.2 - //default(none) shared(_proc, _pop, size) - for (size_t i = 0; i < size; ++i) - { - _proc(_pop[i]); - } -} +// template +// void omp_apply(eoUF& _proc, std::vector& _pop) +// { +// size_t size = _pop.size(); +// #pragma omp parallel for if(eo::parallel.isEnabled()) +// //doesnot work with gcc 4.1.2 +// //default(none) shared(_proc, _pop, size) +// for (size_t i = 0; i < size; ++i) +// { +// _proc(_pop[i]); +// } +// } /** And now we are using the dynamic scheduling. @ingroup Utilities */ -template -void omp_dynamic_apply(eoUF& _proc, std::vector& _pop) -{ - size_t size = _pop.size(); -#pragma omp parallel for if(eo::parallel.isEnabled()) schedule(dynamic) - //doesnot work with gcc 4.1.2 - //default(none) shared(_proc, _pop, size) - for (size_t i = 0; i < size; ++i) - { - _proc(_pop[i]); - } -} +// template +// void omp_dynamic_apply(eoUF& _proc, std::vector& _pop) +// { +// size_t size = _pop.size(); +// #pragma omp parallel for if(eo::parallel.isEnabled()) schedule(dynamic) +// //doesnot work with gcc 4.1.2 +// //default(none) shared(_proc, _pop, size) +// for (size_t i = 0; i < size; ++i) +// { +// _proc(_pop[i]); +// } +// } #endif diff --git a/eo/src/pyeo/CMakeLists.txt b/eo/src/pyeo/CMakeLists.txt index ab0e0c1e6..760283a85 100644 --- a/eo/src/pyeo/CMakeLists.txt +++ b/eo/src/pyeo/CMakeLists.txt @@ -48,6 +48,7 @@ SET(EO_SOURCES # shared library ADD_LIBRARY(PyEO MODULE ${SOURCES} ${EO_SOURCES}) +INSTALL(TARGETS PyEO LIBRARY DESTINATION lib COMPONENT libraries) # python 2.5 must have pyd IF(WIN32 AND NOT CYGWIN) diff --git a/eo/src/utils/eoParser.cpp b/eo/src/utils/eoParser.cpp index 7150882a1..97c4b3d5a 100644 --- a/eo/src/utils/eoParser.cpp +++ b/eo/src/utils/eoParser.cpp @@ -32,6 +32,7 @@ #include #include #include +#include #include @@ -49,7 +50,22 @@ std::ostream& printSectionHeader(std::ostream& os, std::string section) if (section == "") section = "General"; - os << '\n' << setw(10) << "###### " << setw(20) << section << setw(10) << " ######\n"; + // convert each character to upper case + std::transform( section.begin(), section.end(), section.begin(), ::toupper); + + // the formating with setfill would not permits to add this extra space as + // one more call to stream operator, thus it is inserted here + section += ' '; + + // pretty print so as to print the section, followed by as many # as + // necessary to fill the line until 80 characters + os << std::endl + << "### " + << std::left + << std::setfill('#') + << std::setw(80) // TODO do not hard code the width of the line + << section + << std::endl; return os; } @@ -331,11 +347,11 @@ void eoParser::printHelp(ostream& os) if (p->second->shortName()) os << "-" << p->second->shortName() << ", "; - os << "--" <second->longName() <<":\t" + os << "--" <second->longName() <<" :\t" << p->second->description() ; - os << "\n" << setw(20) << ( (p->second->required())?"Required":"Optional" ); - os <<". By default: "<second->defValue() << '\n'; + os << " (" << ( (p->second->required())?"required":"optional" ); + os <<", default: "<< p->second->defValue() << ')' << std::endl; } // for p os << "\n@param_file \t defines a file where the parameters are stored\n"; diff --git a/website/index.html b/website/index.html index 14417b32d..3aed1543e 100644 --- a/website/index.html +++ b/website/index.html @@ -30,6 +30,7 @@