From 949b5818a25c4f1a1ce16372b781cc6f44c7b2a5 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Thu, 8 Jul 2021 12:19:10 +0200
Subject: [PATCH 001/113] adds a definition file for building fastga as a
Singularity container
---
eo/contrib/irace/fastga.sindef | 63 ++++++++++++++++++++++++++++++++++
1 file changed, 63 insertions(+)
create mode 100644 eo/contrib/irace/fastga.sindef
diff --git a/eo/contrib/irace/fastga.sindef b/eo/contrib/irace/fastga.sindef
new file mode 100644
index 000000000..86fa3e7cd
--- /dev/null
+++ b/eo/contrib/irace/fastga.sindef
@@ -0,0 +1,63 @@
+Bootstrap: library
+From: ubuntu:20.04
+
+%post
+
+ # Dependencies
+ apt -y install software-properties-common
+ add-apt-repository universe
+ apt -y update
+ apt -y dist-upgrade
+ apt -y install git clang-9 cmake make libeigen3-dev
+ apt clean
+ update-alternatives --install /usr/bin/c++ c++ /usr/bin/clang++-9 90
+ update-alternatives --set c++ /usr/bin/clang++-9
+
+ # Temporary directory where we are going to build everything.
+ tmpdir=$(mktemp -d)
+ mkdir -p ${tmpdir}/fastga/
+
+ # Build IOH
+ cd ${tmpdir}/fastga/
+ git clone --branch feat+EAF --single-branch --recurse-submodules https://github.com/jdreo/IOHexperimenter.git
+ cd IOHexperimenter
+ mkdir -p release
+ cd release
+ cmake -D CMAKE_BUILD_TYPE=Release -D BUILD_TESTS=OFF -D BUILD_EXAMPLE=OFF -D BUILD_GMOCK=OFF ..
+ make
+
+ # Build Paradiseo
+ cd ${tmpdir}/fastga/
+ git clone --branch feat+num_foundry --single-branch https://github.com/jdreo/paradiseo.git
+ cd paradiseo
+ touch LICENSE
+ mkdir -p release
+ cd release
+ cmake -D CMAKE_BUILD_TYPE=Release -EDO=ON -EDO_USE_LIB=Eigen3 ..
+ make
+
+ # Build FastGA
+ cd ${tmpdir}/fastga/paradiseo/eo/contrib/irace/
+ mkdir -p release
+ cd release
+ cmake -D CMAKE_BUILD_TYPE=Release -D IOH_ROOT=${tmpdir}/fastga/IOHexperimenter/ -D PARADISEO_ROOT=${tmpdir}/fastga/paradiseo/ -D PARADISEO_BUILD=${tmpdir}/fastga/paradiseo/release/ ..
+ make
+
+ # Install FastGA
+ cp fastga /usr/local/bin/
+
+ # Clean-up
+ rm -rf ${tmpdir}
+ apt -y purge software-properties-common git clang-9 cmake make libeigen3-dev
+ apt -y --purge autoremove
+ apt -y autoclean
+ apt clean
+
+%environment
+
+%runscript
+ /usr/local/bin/fastga $*
+
+%labels
+ Author Quentin Renau
+ Author Johann Dreo
From 18fec047ad179bce0756400619cfb6ad84510ba4 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Thu, 15 Jul 2021 18:52:21 +0200
Subject: [PATCH 002/113] fix clang 10 compatibility
- random_shuffle is replaced by shuffle
- get rid of EO stuff in eoPop, superseeded by stdlib random
- get rid of bind2nd and use lambdas
---
eo/contrib/irace/CMakeLists.txt | 2 +-
eo/contrib/irace/fastga.cpp | 4 ++--
eo/src/eoInit.h | 2 +-
eo/src/eoPop.h | 13 +++++++++----
eo/src/ga/eoBit.h | 3 ++-
5 files changed, 15 insertions(+), 9 deletions(-)
diff --git a/eo/contrib/irace/CMakeLists.txt b/eo/contrib/irace/CMakeLists.txt
index a77849b15..1e968d817 100644
--- a/eo/contrib/irace/CMakeLists.txt
+++ b/eo/contrib/irace/CMakeLists.txt
@@ -71,5 +71,5 @@ endif()
add_executable(fastga fastga.cpp)
# target_link_libraries(fastga ${PARADISEO_LIBRARIES} ${IOH_LIBRARY} stdc++fs)
-target_link_libraries(fastga ${PARADISEO_LIBRARIES} stdc++fs fmt)
+target_link_libraries(fastga ${PARADISEO_LIBRARIES} fmt)
diff --git a/eo/contrib/irace/fastga.cpp b/eo/contrib/irace/fastga.cpp
index 9c8c94088..ba55a22f8 100644
--- a/eo/contrib/irace/fastga.cpp
+++ b/eo/contrib/irace/fastga.cpp
@@ -519,8 +519,8 @@ int main(int argc, char* argv[])
ioh::trigger::OnImprovement on_improvement;
ioh::watch::Evaluations evaluations;
ioh::watch::TransformedYBest transformed_y_best;
- std::vector> t = {std::ref(on_improvement)};
- std::vector> w = {std::ref(evaluations),std::ref(transformed_y_best)};
+ std::vector> t = {on_improvement};
+ std::vector> w = {evaluations,transformed_y_best};
csv_logger = std::make_shared(
// {std::ref(on_improvement)},
// {std::ref(evaluations),std::ref(transformed_y_best)},
diff --git a/eo/src/eoInit.h b/eo/src/eoInit.h
index 9146311fa..a73310778 100644
--- a/eo/src/eoInit.h
+++ b/eo/src/eoInit.h
@@ -196,7 +196,7 @@ class eoInitPermutation: public eoInit // FIXME inherit from eoInitWithDim
for(unsigned idx=0;idx
#include
#include
#include // needed for GCC 3.2
@@ -182,8 +183,10 @@ class eoPop: public std::vector, public eoObject, public eoPersistent
*/
void shuffle(void)
{
- UF_random_generator gen;
- std::random_shuffle(begin(), end(), gen);
+ std::random_device rd;
+ std::mt19937 gen(rd());
+ //UF_random_generator gen; // FIXME refactor
+ std::shuffle(begin(), end(), gen);
}
@@ -194,8 +197,10 @@ class eoPop: public std::vector, public eoObject, public eoPersistent
std::transform(begin(), end(), result.begin(), Ref());
- UF_random_generator gen;
- std::random_shuffle(result.begin(), result.end(), gen);
+ std::random_device rd;
+ std::mt19937 gen(rd());
+ //UF_random_generator gen; // FIXME refactor
+ std::shuffle(result.begin(), result.end(), gen);
}
diff --git a/eo/src/ga/eoBit.h b/eo/src/ga/eoBit.h
index 71c6aa62b..320a5b7d1 100644
--- a/eo/src/ga/eoBit.h
+++ b/eo/src/ga/eoBit.h
@@ -114,7 +114,8 @@ public:
{
resize(bits.size());
std::transform(bits.begin(), bits.end(), begin(),
- std::bind2nd(std::equal_to(), '1'));
+ //std::bind2nd(std::equal_to(), '1'));
+ [](char bit){return bit == '1';} );
}
}
};
From f4a8f97f70ea339f7c7e40391099eb6387ee4bd5 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Thu, 15 Jul 2021 19:20:04 +0200
Subject: [PATCH 003/113] add an example of complex build script for fastga
---
eo/contrib/irace/build_fastga.sh | 80 ++++++++++++++++++++++++++++++++
1 file changed, 80 insertions(+)
create mode 100755 eo/contrib/irace/build_fastga.sh
diff --git a/eo/contrib/irace/build_fastga.sh b/eo/contrib/irace/build_fastga.sh
new file mode 100755
index 000000000..abaac4a20
--- /dev/null
+++ b/eo/contrib/irace/build_fastga.sh
@@ -0,0 +1,80 @@
+#!/bin/sh
+
+########################################################################
+# This is an example of how to deal with complex builds,
+# for instance on clusters with compilers provided as side modules.
+########################################################################
+
+# Run this script in a separate dir, e.g.
+# mkdir -p code ; cd code ; ../build_fastga.sh
+
+# exit when any command fails
+set -e
+
+# We need recent clang and cmake
+module load LLVM/clang-llvm-10.0
+module load cmake/3.18
+
+# We are going to use a specific compiler, different from the system's one.
+# Path toward the compiler:
+C="/opt/dev/Compilers/LLVM/10.0.1/bin"
+# Path toward the include for the std lib:
+I="/opt/dev/Compilers/LLVM/10.0.1/include/c++/v1/"
+# Path toward the compiled std lib:
+L="/opt/dev/Compilers/LLVM/10.0.1/lib"
+
+# As we use clang, we use its std lib (instead of gcc's "libstdc++")
+S="libc++"
+
+# Gather all those into a set of flags:
+flags="-I${I} -stdlib=${S} -L${L}"
+
+# Current dir, for further reference.
+here=$(pwd)
+
+# Compiler selection
+export CC=${C}/clang
+export CXX=${C}/clang++
+
+# If the dir already exists
+if cd IOHexperimenter ; then
+ # Just update the code
+ git pull
+else
+ # Clone the repo
+ git clone --branch feat+EAF --single-branch --recurse-submodules https://github.com/jdreo/IOHexperimenter.git
+ cd IOHexperimenter
+fi
+# Clean build from scratch
+rm -rf release
+mkdir -p release
+cd release
+cmake -DCMAKE_CXX_FLAGS="${flags}" -D CMAKE_BUILD_TYPE=Release -D BUILD_TESTS=OFF -D BUILD_EXAMPLE=OFF ..
+make -j
+# Get back to the root dir
+cd ${here}
+
+
+if cd paradiseo ; then
+ git pull
+else
+ git clone --branch feat+num_foundry --single-branch --recurse-submodules https://github.com/jdreo/paradiseo.git
+ cd paradiseo
+ touch LICENSE
+fi
+rm -rf release
+mkdir -p release
+cd release
+cmake -DCMAKE_CXX_FLAGS="${flags}" -D CMAKE_BUILD_TYPE=Release ..
+make -j
+cd ${here}
+
+
+cd paradiseo/eo/contrib/irace
+rm -rf release
+mkdir -p release
+cd release
+cmake -DCMAKE_CXX_FLAGS="${flags}" -D CMAKE_BUILD_TYPE=Release -D IOH_ROOT=${here}/IOHexperimenter/ -D PARADISEO_ROOT=${here}/paradiseo/ -D PARADISEO_BUILD=${here}/paradiseo/release/ ..
+make -j
+cd ${here}
+
From b7542ef73bb3b0adba3632eb29c2f2f5b2cebeba Mon Sep 17 00:00:00 2001
From: Ronaldd Pinho
Date: Fri, 16 Jul 2021 10:15:41 -0300
Subject: [PATCH 004/113] replace base directory references in main
CMakeLists.txt
---
CMakeLists.txt | 16 ++++++++--------
1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 835847770..750342c43 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -51,16 +51,16 @@ include(${CMAKE_CURRENT_SOURCE_DIR}/cmake/Target.cmake)
######################################################################################
## Paths to sources of modules
-set( EO_SRC_DIR "${CMAKE_SOURCE_DIR}/eo" CACHE INTERNAL "ParadisEO-EO source directory" FORCE)
-set( EDO_SRC_DIR "${CMAKE_SOURCE_DIR}/edo" CACHE INTERNAL "ParadisEO-EDO source directory" FORCE)
-set( MO_SRC_DIR "${CMAKE_SOURCE_DIR}/mo" CACHE INTERNAL "ParadisEO-MO source directory" FORCE)
-set(MOEO_SRC_DIR "${CMAKE_SOURCE_DIR}/moeo" CACHE INTERNAL "ParadisEO-MOEO source directory" FORCE)
-set( SMP_SRC_DIR "${CMAKE_SOURCE_DIR}/smp" CACHE INTERNAL "ParadisEO-SMP source directory" FORCE)
-set( MPI_SRC_DIR "${CMAKE_SOURCE_DIR}/eo/src/mpi" CACHE INTERNAL "ParadisEO-MPI source directory" FORCE)
+set( EO_SRC_DIR "${PROJECT_SOURCE_DIR}/eo" CACHE INTERNAL "ParadisEO-EO source directory" FORCE)
+set( EDO_SRC_DIR "${PROJECT_SOURCE_DIR}/edo" CACHE INTERNAL "ParadisEO-EDO source directory" FORCE)
+set( MO_SRC_DIR "${PROJECT_SOURCE_DIR}/mo" CACHE INTERNAL "ParadisEO-MO source directory" FORCE)
+set(MOEO_SRC_DIR "${PROJECT_SOURCE_DIR}/moeo" CACHE INTERNAL "ParadisEO-MOEO source directory" FORCE)
+set( SMP_SRC_DIR "${PROJECT_SOURCE_DIR}/smp" CACHE INTERNAL "ParadisEO-SMP source directory" FORCE)
+set( MPI_SRC_DIR "${PROJECT_SOURCE_DIR}/eo/src/mpi" CACHE INTERNAL "ParadisEO-MPI source directory" FORCE)
-set(PROBLEMS_SRC_DIR "${CMAKE_SOURCE_DIR}/problems" CACHE INTERNAL "Problems dependant source directory" FORCE)
+set(PROBLEMS_SRC_DIR "${PROJECT_SOURCE_DIR}/problems" CACHE INTERNAL "Problems dependant source directory" FORCE)
-set(CMAKE_BASE_SOURCE_DIR ${CMAKE_SOURCE_DIR})
+set(CMAKE_BASE_SOURCE_DIR ${PROJECT_SOURCE_DIR})
# All libraries are built in /lib/
set( EO_BIN_DIR "${CMAKE_BINARY_DIR}" CACHE INTERNAL "ParadisEO-EO binary directory" FORCE)
From 864bbf697dcf912e164396bc1b7e00d6b4aa1082 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Mon, 19 Jul 2021 12:08:04 +0200
Subject: [PATCH 005/113] adds the pop_size parameters as managed by fastga
---
eo/contrib/irace/fastga.cpp | 22 ++++++++++++++++++++--
1 file changed, 20 insertions(+), 2 deletions(-)
diff --git a/eo/contrib/irace/fastga.cpp b/eo/contrib/irace/fastga.cpp
index ba55a22f8..170f69877 100644
--- a/eo/contrib/irace/fastga.cpp
+++ b/eo/contrib/irace/fastga.cpp
@@ -199,12 +199,17 @@ void print_irace(const eoParam& param, const eoOperatorFoundry& op_foundry,
{
print_irace_oper(param, op_foundry, out);
}
+
template
void print_irace(const eoParam& param, const eoParameterFoundry& op_foundry, std::ostream& out = std::cout)
{
print_irace_param/**/(param, op_foundry, out);
}
+void print_irace(const eoParam& param, const size_t min, const size_t max, std::ostream& out = std::cout)
+{
+ print_irace_ranged(param, min, max, "i", out);
+}
void print_operator_typed(const eoFunctorBase& op, std::ostream& out)
{
@@ -228,10 +233,16 @@ void print_operators(const eoParam& param, eoOperatorFoundry& op_foundry, s
}
}
+template
+void print_operators(const eoParam& param, T min, T max, std::ostream& out = std::cout, std::string indent=" ")
+{
+ out << indent << "[" << min << "," << max << "] " << param.longName() << "." << std::endl;
+}
+
template
void print_operators(const eoParam& param, eoParameterFoundry& op_foundry, std::ostream& out = std::cout, std::string indent=" ")
{
- out << indent << "[" << op_foundry.min() << "," << op_foundry.max() << "] " << param.longName() << "." << std::endl;
+ print_operators(param, op_foundry.min(), op_foundry.max(), out, indent);
}
// Problem configuration.
@@ -350,6 +361,7 @@ int main(int argc, char* argv[])
"pop-size", "Population size",
'P', "Operator Choice", /*required=*/false);
const size_t pop_size = pop_size_p.value();
+ const size_t pop_size_max = 200;
auto offspring_size_p = parser.getORcreateParam(0,
"offspring-size", "Offsprings size (0 = same size than the parents pop, see --pop-size)",
@@ -432,8 +444,13 @@ int main(int argc, char* argv[])
print_operators( mutation_p, fake_foundry.mutations , std::clog);
print_operators( replacement_p, fake_foundry.replacements , std::clog);
print_operators( offspring_size_p, fake_foundry.offspring_sizes , std::clog);
+ print_operators( pop_size_p, (size_t)1, pop_size_max , std::clog);
+ std::clog << std::endl;
+ // If we were to make a DoE sampling numeric parameters,
+ // we would use that many samples:
size_t fake_sample_size = 10;
+ std::clog << "With " << fake_sample_size << " samples for numeric parameters..." << std::endl;
size_t n =
fake_sample_size //crossover_rates
* fake_foundry.crossover_selectors.size()
@@ -445,8 +462,8 @@ int main(int argc, char* argv[])
* fake_foundry.replacements.size()
* fake_foundry.continuators.size()
* fake_sample_size //offspring_sizes
+ * fake_sample_size //pop_size
;
- std::clog << std::endl;
std::clog << "~" << n << " possible algorithms configurations." << std::endl;
std::clog << "Ranges of configurable parameters (redirect the stdout in a file to use it with iRace): " << std::endl;
@@ -463,6 +480,7 @@ int main(int argc, char* argv[])
print_irace( mutation_p, fake_foundry.mutations , std::cout);
print_irace( replacement_p, fake_foundry.replacements , std::cout);
print_irace( offspring_size_p, fake_foundry.offspring_sizes , std::cout);
+ print_irace( pop_size_p, 1, pop_size_max , std::cout);
// std::ofstream irace_param("fastga.params");
// irace_param << "# name\tswitch\ttype\tvalues" << std::endl;
From 648357de642e62ea2a7e864bf6ae89e29f78f437 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Mon, 19 Jul 2021 16:34:25 +0200
Subject: [PATCH 006/113] disable objective transformation in W-Model of fastga
---
eo/contrib/irace/fastga.cpp | 23 ++++++++++++++++++++++-
1 file changed, 22 insertions(+), 1 deletion(-)
diff --git a/eo/contrib/irace/fastga.cpp b/eo/contrib/irace/fastga.cpp
index 170f69877..0455f07c1 100644
--- a/eo/contrib/irace/fastga.cpp
+++ b/eo/contrib/irace/fastga.cpp
@@ -267,6 +267,26 @@ std::ostream& operator<<(std::ostream& os, const Problem& pb)
return os;
}
+/*****************************************************************************
+ * IOH problem adaptation.
+ *****************************************************************************/
+
+class WModelFlat : public ioh::problem::wmodel::WModelOneMax
+{
+ public:
+ WModelFlat(const int instance, const int n_variables,
+ const double dummy_para, const int epistasis_para, const int neutrality_para,
+ const int ruggedness_para)
+ : WModelOneMax(instance, n_variables, dummy_para, epistasis_para, neutrality_para, ruggedness_para)
+ { }
+
+ protected:
+ double transform_objectives(const double y) override
+ { // Disable objective function shift & scaling.
+ return y;
+ }
+};
+
/*****************************************************************************
* Command line interface.
*****************************************************************************/
@@ -562,7 +582,8 @@ int main(int argc, char* argv[])
// + "_N" + std::to_string(w_neutrality)
// + "_R" + std::to_string(w_ruggedness);
- ioh::problem::wmodel::WModelOneMax w_model_om(
+ // ioh::problem::wmodel::WModelOneMax w_model_om(
+ WModelFlat w_model_om(
instance,
dimension,
w_dummy,
From 6c3bffd8c26a70b38171ec79faf4a1cab6d15000 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Fri, 30 Jul 2021 10:29:03 +0200
Subject: [PATCH 007/113] [fastga] fix budget-related issues
Was overridding the max-evals budget in certain cases.
---
eo/contrib/irace/fastga.cpp | 30 +++++++++++++++++++++---------
1 file changed, 21 insertions(+), 9 deletions(-)
diff --git a/eo/contrib/irace/fastga.cpp b/eo/contrib/irace/fastga.cpp
index 0455f07c1..9dd0c0d47 100644
--- a/eo/contrib/irace/fastga.cpp
+++ b/eo/contrib/irace/fastga.cpp
@@ -24,13 +24,13 @@ using Bits = eoBit, int>;
eoAlgoFoundryFastGA& make_foundry(
eoFunctorStore& store,
eoInit& init,
- eoEvalFunc& eval_onemax,
+ eoEvalFunc& eval,
const size_t max_evals,
const size_t generations
)
{
// FIXME using max_restarts>1 does not allow to honor max evals.
- auto& foundry = store.pack< eoAlgoFoundryFastGA >(init, eval_onemax, max_evals, /*max_restarts=*/1);
+ auto& foundry = store.pack< eoAlgoFoundryFastGA >(init, eval, max_evals, /*max_restarts=*/1);
/***** Continuators ****/
foundry.continuators.add< eoGenContinue >(generations);
@@ -348,7 +348,7 @@ int main(int argc, char* argv[])
const size_t instance = instance_p.value();
const size_t max_evals = parser.getORcreateParam(5 * dimension,
- "max-evals", "Maximum number of evaluations",
+ "max-evals", "Maximum number of evaluations (default: 5*dim, else the given value)",
'e', "Stopping criterion").value();
const size_t buckets = parser.getORcreateParam(100,
@@ -388,10 +388,12 @@ int main(int argc, char* argv[])
'O', "Operator Choice", /*required=*/false); // Single alternative, not required.
const size_t offspring_size = offspring_size_p.value();
- const size_t generations = static_cast(std::floor(
+ size_t generations = static_cast(std::floor(
static_cast(max_evals) / static_cast(pop_size)));
// const size_t generations = std::numeric_limits::max();
- eo::log << eo::debug << "Number of generations: " << generations << std::endl;
+ if(generations < 1) {
+ generations = 1;
+ }
/***** metric parameters *****/
auto crossover_rate_p = parser.getORcreateParam(0.5,
@@ -508,6 +510,10 @@ int main(int argc, char* argv[])
exit(NO_ERROR);
}
+ eo::log << eo::debug << "Maximum number of evaluations: " << max_evals << std::endl;
+ eo::log << eo::debug << "Number of generations: " << generations << std::endl;
+
+
/*****************************************************************************
* IOH stuff.
*****************************************************************************/
@@ -601,7 +607,8 @@ int main(int argc, char* argv[])
eoEvalIOHproblem onemax_pb(w_model_om, loggers);
// eoEvalPrint eval_print(onemax_pb, std::clog, "\n");
- eoEvalFuncCounter eval_count(onemax_pb);
+ // eoEvalFuncCounter eval_count(onemax_pb);
+ eoEvalCounterThrowException eval_count(onemax_pb, max_evals);
eoPopLoopEval onemax_eval(eval_count);
@@ -609,7 +616,7 @@ int main(int argc, char* argv[])
eoBooleanGenerator bgen;
eoInitFixedLength onemax_init(/*bitstring size=*/dimension, bgen);
- auto& foundry = make_foundry(store, onemax_init, eval_count, max_evals - pop_size, generations);
+ auto& foundry = make_foundry(store, onemax_init, eval_count, max_evals, generations);
Ints encoded_algo(foundry.size());
@@ -644,8 +651,13 @@ int main(int argc, char* argv[])
eoPop pop;
pop.append(pop_size, onemax_init);
- onemax_eval(pop,pop);
- foundry(pop); // Actually run the selected algorithm.
+ try {
+ onemax_eval(pop,pop);
+ foundry(pop); // Actually run the selected algorithm.
+
+ } catch(eoMaxEvalException e) {
+ eo::log << eo::debug << "Reached maximum evaluations: " << eval_count.getValue() << " / " << max_evals << std::endl;
+ }
/***** IOH perf stats *****/
double perf = ioh::logger::eah::stat::under_curve::volume(eah_logger);
From eb9bd4a4053d1443a9bdefa16054f12f453b6dea Mon Sep 17 00:00:00 2001
From: nojhan
Date: Fri, 30 Jul 2021 10:30:37 +0200
Subject: [PATCH 008/113] make some eoAlgoFoundryFastGA's parameters const
---
eo/src/eoAlgoFoundryFastGA.h | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/eo/src/eoAlgoFoundryFastGA.h b/eo/src/eoAlgoFoundryFastGA.h
index 59f7dcfb2..0417511cb 100644
--- a/eo/src/eoAlgoFoundryFastGA.h
+++ b/eo/src/eoAlgoFoundryFastGA.h
@@ -85,8 +85,8 @@ class eoAlgoFoundryFastGA : public eoAlgoFoundry
eoAlgoFoundryFastGA(
eoInit & init,
eoEvalFunc& eval,
- size_t max_evals = 10000,
- size_t max_restarts = std::numeric_limits::max()
+ const size_t max_evals = 10000,
+ const size_t max_restarts = std::numeric_limits::max()
) :
eoAlgoFoundry(10),
From 558d476ef34b0e5fc32b0f3b64f13b2bddf55b4c Mon Sep 17 00:00:00 2001
From: nojhan
Date: Fri, 30 Jul 2021 11:15:59 +0200
Subject: [PATCH 009/113] feat: adds a constructor taking a vector to
eoCombinedContinue
---
eo/src/eoCombinedContinue.h | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/eo/src/eoCombinedContinue.h b/eo/src/eoCombinedContinue.h
index 756a44a89..a3b3dcbca 100644
--- a/eo/src/eoCombinedContinue.h
+++ b/eo/src/eoCombinedContinue.h
@@ -54,8 +54,11 @@ public:
/// Ctor, make sure that at least on continuator is present
eoCombinedContinue( eoContinue& _cont)
: eoContinue(), std::vector* >(1, &_cont)
- {
- }
+ { }
+
+ eoCombinedContinue( std::vector*> _conts )
+ : eoContinue(), std::vector* >(_conts)
+ { }
/* FIXME remove in next release
/// Ctor - for historical reasons ... should disspear some day
From e2b74349e153d759c1da1aca9f4e0256ae7a9832 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Fri, 30 Jul 2021 11:16:30 +0200
Subject: [PATCH 010/113] [fastga] adds a fitness stoping criterion
---
eo/contrib/irace/fastga.cpp | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/eo/contrib/irace/fastga.cpp b/eo/contrib/irace/fastga.cpp
index 9dd0c0d47..73f0e5388 100644
--- a/eo/contrib/irace/fastga.cpp
+++ b/eo/contrib/irace/fastga.cpp
@@ -26,14 +26,20 @@ eoAlgoFoundryFastGA& make_foundry(
eoInit& init,
eoEvalFunc& eval,
const size_t max_evals,
- const size_t generations
+ const size_t generations,
+ const double optimum
)
{
// FIXME using max_restarts>1 does not allow to honor max evals.
auto& foundry = store.pack< eoAlgoFoundryFastGA >(init, eval, max_evals, /*max_restarts=*/1);
/***** Continuators ****/
- foundry.continuators.add< eoGenContinue >(generations);
+ auto& fitcont = store.pack< eoFitContinue >(optimum);
+ auto& gencont = store.pack< eoGenContinue >(generations);
+ auto combconts = std::make_shared< std::vector*> >();
+ combconts->push_back( &fitcont );
+ combconts->push_back( &gencont );
+ foundry.continuators.add< eoCombinedContinue >( *combconts );
// for(size_t i=1; i<10; i++) {
// foundry.continuators.add< eoGenContinue >(i);
// }
@@ -453,7 +459,7 @@ int main(int argc, char* argv[])
eoEvalFuncPtr fake_eval(fake_func);
eoUniformGenerator fake_gen(0, 1);
eoInitFixedLength fake_init(/*bitstring size=*/1, fake_gen);
- auto fake_foundry = make_foundry(store, fake_init, fake_eval, max_evals, /*generations=*/ 1);
+ auto fake_foundry = make_foundry(store, fake_init, fake_eval, max_evals, /*generations=*/ 1, 0);
std::clog << std::endl << "Available operators:" << std::endl;
print_operators( continuator_p, fake_foundry.continuators , std::clog);
@@ -616,7 +622,7 @@ int main(int argc, char* argv[])
eoBooleanGenerator bgen;
eoInitFixedLength onemax_init(/*bitstring size=*/dimension, bgen);
- auto& foundry = make_foundry(store, onemax_init, eval_count, max_evals, generations);
+ auto& foundry = make_foundry(store, onemax_init, eval_count, max_evals, generations, max_target);
Ints encoded_algo(foundry.size());
From c9cbd4ee146a82784e75cf76d87e84df5f82e20c Mon Sep 17 00:00:00 2001
From: nojhan
Date: Wed, 25 Aug 2021 09:18:20 +0200
Subject: [PATCH 011/113] move scripts in irace/expe/alpha/
---
eo/contrib/irace/{ => expe/alpha}/parse_baseline.py | 0
eo/contrib/irace/{ => expe/alpha}/parse_baseline_average.py | 0
eo/contrib/irace/{ => expe/alpha}/parse_elites.py | 0
eo/contrib/irace/{ => expe/alpha}/parse_irace_bests.py | 0
eo/contrib/irace/{ => expe/alpha}/plot_attain_mat.py | 0
eo/contrib/irace/{ => expe/alpha}/run_algo.sh | 0
eo/contrib/irace/{ => expe/alpha}/run_baseline.sh | 0
eo/contrib/irace/{ => expe/alpha}/run_elite.sh | 0
eo/contrib/irace/{ => expe/alpha}/run_elites_all.sh | 0
eo/contrib/irace/{ => expe/alpha}/run_irace.sh | 0
eo/contrib/irace/{ => expe/alpha}/run_irace_all.sh | 0
eo/contrib/irace/{ => expe/alpha}/run_irace_parallel-batch.sh | 0
eo/contrib/irace/{ => expe/alpha}/run_randoms.sh | 0
13 files changed, 0 insertions(+), 0 deletions(-)
rename eo/contrib/irace/{ => expe/alpha}/parse_baseline.py (100%)
rename eo/contrib/irace/{ => expe/alpha}/parse_baseline_average.py (100%)
rename eo/contrib/irace/{ => expe/alpha}/parse_elites.py (100%)
rename eo/contrib/irace/{ => expe/alpha}/parse_irace_bests.py (100%)
rename eo/contrib/irace/{ => expe/alpha}/plot_attain_mat.py (100%)
rename eo/contrib/irace/{ => expe/alpha}/run_algo.sh (100%)
rename eo/contrib/irace/{ => expe/alpha}/run_baseline.sh (100%)
rename eo/contrib/irace/{ => expe/alpha}/run_elite.sh (100%)
rename eo/contrib/irace/{ => expe/alpha}/run_elites_all.sh (100%)
rename eo/contrib/irace/{ => expe/alpha}/run_irace.sh (100%)
rename eo/contrib/irace/{ => expe/alpha}/run_irace_all.sh (100%)
rename eo/contrib/irace/{ => expe/alpha}/run_irace_parallel-batch.sh (100%)
rename eo/contrib/irace/{ => expe/alpha}/run_randoms.sh (100%)
diff --git a/eo/contrib/irace/parse_baseline.py b/eo/contrib/irace/expe/alpha/parse_baseline.py
similarity index 100%
rename from eo/contrib/irace/parse_baseline.py
rename to eo/contrib/irace/expe/alpha/parse_baseline.py
diff --git a/eo/contrib/irace/parse_baseline_average.py b/eo/contrib/irace/expe/alpha/parse_baseline_average.py
similarity index 100%
rename from eo/contrib/irace/parse_baseline_average.py
rename to eo/contrib/irace/expe/alpha/parse_baseline_average.py
diff --git a/eo/contrib/irace/parse_elites.py b/eo/contrib/irace/expe/alpha/parse_elites.py
similarity index 100%
rename from eo/contrib/irace/parse_elites.py
rename to eo/contrib/irace/expe/alpha/parse_elites.py
diff --git a/eo/contrib/irace/parse_irace_bests.py b/eo/contrib/irace/expe/alpha/parse_irace_bests.py
similarity index 100%
rename from eo/contrib/irace/parse_irace_bests.py
rename to eo/contrib/irace/expe/alpha/parse_irace_bests.py
diff --git a/eo/contrib/irace/plot_attain_mat.py b/eo/contrib/irace/expe/alpha/plot_attain_mat.py
similarity index 100%
rename from eo/contrib/irace/plot_attain_mat.py
rename to eo/contrib/irace/expe/alpha/plot_attain_mat.py
diff --git a/eo/contrib/irace/run_algo.sh b/eo/contrib/irace/expe/alpha/run_algo.sh
similarity index 100%
rename from eo/contrib/irace/run_algo.sh
rename to eo/contrib/irace/expe/alpha/run_algo.sh
diff --git a/eo/contrib/irace/run_baseline.sh b/eo/contrib/irace/expe/alpha/run_baseline.sh
similarity index 100%
rename from eo/contrib/irace/run_baseline.sh
rename to eo/contrib/irace/expe/alpha/run_baseline.sh
diff --git a/eo/contrib/irace/run_elite.sh b/eo/contrib/irace/expe/alpha/run_elite.sh
similarity index 100%
rename from eo/contrib/irace/run_elite.sh
rename to eo/contrib/irace/expe/alpha/run_elite.sh
diff --git a/eo/contrib/irace/run_elites_all.sh b/eo/contrib/irace/expe/alpha/run_elites_all.sh
similarity index 100%
rename from eo/contrib/irace/run_elites_all.sh
rename to eo/contrib/irace/expe/alpha/run_elites_all.sh
diff --git a/eo/contrib/irace/run_irace.sh b/eo/contrib/irace/expe/alpha/run_irace.sh
similarity index 100%
rename from eo/contrib/irace/run_irace.sh
rename to eo/contrib/irace/expe/alpha/run_irace.sh
diff --git a/eo/contrib/irace/run_irace_all.sh b/eo/contrib/irace/expe/alpha/run_irace_all.sh
similarity index 100%
rename from eo/contrib/irace/run_irace_all.sh
rename to eo/contrib/irace/expe/alpha/run_irace_all.sh
diff --git a/eo/contrib/irace/run_irace_parallel-batch.sh b/eo/contrib/irace/expe/alpha/run_irace_parallel-batch.sh
similarity index 100%
rename from eo/contrib/irace/run_irace_parallel-batch.sh
rename to eo/contrib/irace/expe/alpha/run_irace_parallel-batch.sh
diff --git a/eo/contrib/irace/run_randoms.sh b/eo/contrib/irace/expe/alpha/run_randoms.sh
similarity index 100%
rename from eo/contrib/irace/run_randoms.sh
rename to eo/contrib/irace/expe/alpha/run_randoms.sh
From 6febf4ccebfc41a2878e88e26b74f7f525ac7a8c Mon Sep 17 00:00:00 2001
From: Alix ZHENG
Date: Mon, 30 Aug 2021 09:44:06 +0200
Subject: [PATCH 012/113] Add experimental scripts for irace/fastga
---
eo/contrib/irace/expe/beta/csv_all_bests.sh | 16 ++
.../irace/expe/beta/fastga_elites_all.sh | 22 ++
.../beta/irace_files_pA/default.instances | 27 +++
.../expe/beta/irace_files_pA/example.scen | 227 ++++++++++++++++++
.../expe/beta/irace_files_pA/fastga.param | 12 +
.../expe/beta/irace_files_pA/target-runner | 89 +++++++
.../beta/irace_files_pF/default.instances | 48 ++++
.../expe/beta/irace_files_pF/example.scen | 227 ++++++++++++++++++
.../expe/beta/irace_files_pF/fastga.param | 12 +
.../expe/beta/irace_files_pF/target-runner | 96 ++++++++
.../irace/expe/beta/parseA_irace_bests.py | 31 +++
.../irace/expe/beta/parseF_irace_bests.py | 35 +++
eo/contrib/irace/expe/beta/planA/r_iA.sh | 34 +++
eo/contrib/irace/expe/beta/planA/riaA.sh | 25 ++
eo/contrib/irace/expe/beta/planF/r_iF.sh | 37 +++
eo/contrib/irace/expe/beta/planF/riaF.sh | 28 +++
.../irace/expe/beta/run_elites_planA.sh | 61 +++++
.../irace/expe/beta/run_elites_planF.sh | 59 +++++
eo/contrib/irace/expe/beta/run_exp.sh | 12 +
eo/contrib/irace/expe/beta/run_random.sh | 67 ++++++
eo/contrib/irace/expe/beta/run_res.sh | 26 ++
eo/contrib/irace/expe/beta/testrandom.sh | 18 ++
22 files changed, 1209 insertions(+)
create mode 100755 eo/contrib/irace/expe/beta/csv_all_bests.sh
create mode 100644 eo/contrib/irace/expe/beta/fastga_elites_all.sh
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pA/default.instances
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pA/example.scen
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pA/fastga.param
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pA/target-runner
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pF/default.instances
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pF/example.scen
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pF/fastga.param
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pF/target-runner
create mode 100755 eo/contrib/irace/expe/beta/parseA_irace_bests.py
create mode 100755 eo/contrib/irace/expe/beta/parseF_irace_bests.py
create mode 100755 eo/contrib/irace/expe/beta/planA/r_iA.sh
create mode 100755 eo/contrib/irace/expe/beta/planA/riaA.sh
create mode 100755 eo/contrib/irace/expe/beta/planF/r_iF.sh
create mode 100755 eo/contrib/irace/expe/beta/planF/riaF.sh
create mode 100755 eo/contrib/irace/expe/beta/run_elites_planA.sh
create mode 100755 eo/contrib/irace/expe/beta/run_elites_planF.sh
create mode 100644 eo/contrib/irace/expe/beta/run_exp.sh
create mode 100755 eo/contrib/irace/expe/beta/run_random.sh
create mode 100644 eo/contrib/irace/expe/beta/run_res.sh
create mode 100644 eo/contrib/irace/expe/beta/testrandom.sh
diff --git a/eo/contrib/irace/expe/beta/csv_all_bests.sh b/eo/contrib/irace/expe/beta/csv_all_bests.sh
new file mode 100755
index 000000000..3f0fb3652
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/csv_all_bests.sh
@@ -0,0 +1,16 @@
+#!/bin/bash
+ldata=$1
+file_py=$2
+csvdir="csv_FA"
+ldir=$(echo $(ls ${ldata}))
+for data in ${ldir[@]} ; do
+ path="${ldata}/${data}"
+ cmd="python3 ${file_py} ${path}"
+ plan_name=$(echo ${data} | sed "s/data//")
+ mexp=$(echo ${data[@]} | cut -d _ -f2)
+ mevals=$(echo ${data[@]} | cut -d _ -f3)
+ ddate=$(echo ${data[@]} | cut -d _ -f4)
+ name="results_irace_plan${plan_name[@]:0:1}_${mexp}_${mevals}_${ddate}"
+ mkdir -p "${csvdir}/csv_plan${plan_name[@]:0:1}"
+ ${cmd} > "${csvdir}/csv_plan${plan_name[@]:0:1}/${name}.csv"
+done
diff --git a/eo/contrib/irace/expe/beta/fastga_elites_all.sh b/eo/contrib/irace/expe/beta/fastga_elites_all.sh
new file mode 100644
index 000000000..998cd22ab
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/fastga_elites_all.sh
@@ -0,0 +1,22 @@
+#!/bin/bash
+ldata=$1 # eg : ./csv_plan2/ don t forget to end the path with /
+file_py=$2
+ldir=$(echo $(ls ${ldata}))
+fastga_dir="fastga_results_all"
+mkdir -p /scratchbeta/${USER}/${fatga_dir}
+#mkdir -p "/home/${USER}/${fastga_dir}/fastga_results_plan1"
+mkdir -p "/scratchbeta/${USER}/${fastga_dir}/fastga_results_planF"
+mkdir -p "/scratchbeta/${USER}/${fastga_dir}/fastga_results_planA"
+
+for data in ${ldir[@]} ; do
+ path_csv="${ldata}${data}"
+ plan_name=$(echo ${data} | sed "s/results_irace_plan//")
+ mexp=$(echo ${data[@]} | cut -d _ -f4)
+ mexp_id=$(echo ${mexp} | cut -d = -f2)
+ mevals=$(echo ${data[@]} | cut -d _ -f5)
+ mevals_id=$(echo ${mevals} | cut -d = -f2)
+ path="/scratchbeta/${USER}/${fastga_dir}/fastga_results_plan${plan_name[@]:0:1}"
+ cmd="bash ${file_py} ${path_csv} ${mexp_id} ${mevals_id} ${path}"
+ name="fastga${plan_name[@]:0:1}_${mexp}_${mevals}_$(date -Iseconds)_results_elites_all"
+ ${cmd} &> "${path}/output${plan_name[@]:0:1}_fastga_${mexp}_${mevals}_$(date -Iseconds).txt"
+done
diff --git a/eo/contrib/irace/expe/beta/irace_files_pA/default.instances b/eo/contrib/irace/expe/beta/irace_files_pA/default.instances
new file mode 100755
index 000000000..4934f7988
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pA/default.instances
@@ -0,0 +1,27 @@
+## This is an example of specifying instances with a file.
+
+# Each line is an instance relative to trainInstancesDir
+# (see scenario.txt.tmpl) and an optional sequence of instance-specific
+# parameters that will be passed to target-runnerx when invoked on that
+# instance.
+
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+
diff --git a/eo/contrib/irace/expe/beta/irace_files_pA/example.scen b/eo/contrib/irace/expe/beta/irace_files_pA/example.scen
new file mode 100755
index 000000000..abebcbb6d
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pA/example.scen
@@ -0,0 +1,227 @@
+###################################################### -*- mode: r -*- #####
+## Scenario setup for Iterated Race (irace).
+############################################################################
+
+## To use the default value of a parameter of iRace, simply do not set
+## the parameter (comment it out in this file, and do not give any
+## value on the command line).
+
+## File that contains the description of the parameters of the target
+## algorithm.
+parameterFile = "./fastga.param"
+
+## Directory where the programs will be run.
+execDir = "."
+
+## File to save tuning results as an R dataset, either absolute path or
+## relative to execDir.
+# logFile = "./irace.Rdata"
+
+## Previously saved log file to recover the execution of irace, either
+## absolute path or relative to the current directory. If empty or NULL,
+## recovery is not performed.
+# recoveryFile = ""
+
+## Directory where training instances are located; either absolute path or
+## relative to current directory. If no trainInstancesFiles is provided,
+## all the files in trainInstancesDir will be listed as instances.
+trainInstancesDir = "."
+
+## File that contains a list of training instances and optionally
+## additional parameters for them. If trainInstancesDir is provided, irace
+## will search for the files in this folder.
+trainInstancesFile = "./default.instances"
+
+## File that contains a table of initial configurations. If empty or NULL,
+## all initial configurations are randomly generated.
+# configurationsFile = ""
+
+## File that contains a list of logical expressions that cannot be TRUE
+## for any evaluated configuration. If empty or NULL, do not use forbidden
+## expressions.
+forbiddenFile = "./forbidden.txt"
+
+## Script called for each configuration that executes the target algorithm
+## to be tuned. See templates.
+targetRunner = "./target-runner"
+
+## Number of times to retry a call to targetRunner if the call failed.
+# targetRunnerRetries = 0
+
+## Optional data passed to targetRunner. This is ignored by the default
+## targetRunner function, but it may be used by custom targetRunner
+## functions to pass persistent data around.
+# targetRunnerData = ""
+
+## Optional R function to provide custom parallelization of targetRunner.
+# targetRunnerParallel = ""
+
+## Optional script or R function that provides a numeric value for each
+## configuration. See templates/target-evaluator.tmpl
+# targetEvaluator = ""
+
+## Maximum number of runs (invocations of targetRunner) that will be
+## performed. It determines the maximum budget of experiments for the
+## tuning.
+maxExperiments = 0 #100000
+
+## Maximum total execution time in seconds for the executions of
+## targetRunner. targetRunner must return two values: cost and time.
+# maxTime = 60
+
+## Fraction (smaller than 1) of the budget used to estimate the mean
+## computation time of a configuration. Only used when maxTime > 0
+# budgetEstimation = 0.02
+
+## Maximum number of decimal places that are significant for numerical
+## (real) parameters.
+digits = 2
+
+## Debug level of the output of irace. Set this to 0 to silence all debug
+## messages. Higher values provide more verbose debug messages.
+# debugLevel = 0
+
+## Number of iterations.
+# nbIterations = 0
+
+## Number of runs of the target algorithm per iteration.
+# nbExperimentsPerIteration = 0
+
+## Randomly sample the training instances or use them in the order given.
+# sampleInstances = 1
+
+## Statistical test used for elimination. Default test is always F-test
+## unless capping is enabled, in which case the default test is t-test.
+## Valid values are: F-test (Friedman test), t-test (pairwise t-tests with
+## no correction), t-test-bonferroni (t-test with Bonferroni's correction
+## for multiple comparisons), t-test-holm (t-test with Holm's correction
+## for multiple comparisons).
+# testType = "F-test"
+
+## Number of instances evaluated before the first elimination test. It
+## must be a multiple of eachTest.
+# firstTest = 5
+
+## Number of instances evaluated between elimination tests.
+# eachTest = 1
+
+## Minimum number of configurations needed to continue the execution of
+## each race (iteration).
+# minNbSurvival = 0
+
+## Number of configurations to be sampled and evaluated at each iteration.
+# nbConfigurations = 0
+
+## Parameter used to define the number of configurations sampled and
+## evaluated at each iteration.
+# mu = 5
+
+## Confidence level for the elimination test.
+# confidence = 0.95
+
+## If the target algorithm is deterministic, configurations will be
+## evaluated only once per instance.
+# deterministic = 0
+
+## Seed of the random number generator (by default, generate a random
+## seed).
+# seed = NA
+
+## Number of calls to targetRunner to execute in parallel. Values 0 or 1
+## mean no parallelization.
+# parallel = 0
+
+## Enable/disable load-balancing when executing experiments in parallel.
+## Load-balancing makes better use of computing resources, but increases
+## communication overhead. If this overhead is large, disabling
+## load-balancing may be faster.
+# loadBalancing = 1
+
+## Enable/disable MPI. Use Rmpi to execute targetRunner in parallel
+## (parameter parallel is the number of slaves).
+# mpi = 0
+
+## Specify how irace waits for jobs to finish when targetRunner submits
+## jobs to a batch cluster: sge, pbs, torque or slurm. targetRunner must
+## submit jobs to the cluster using, for example, qsub.
+# batchmode = 0
+
+## Enable/disable the soft restart strategy that avoids premature
+## convergence of the probabilistic model.
+# softRestart = 1
+
+## Soft restart threshold value for numerical parameters. If NA, NULL or
+## "", it is computed as 10^-digits.
+# softRestartThreshold = ""
+
+## Directory where testing instances are located, either absolute or
+## relative to current directory.
+# testInstancesDir = ""
+
+## File containing a list of test instances and optionally additional
+## parameters for them.
+# testInstancesFile = ""
+
+## Number of elite configurations returned by irace that will be tested if
+## test instances are provided.
+# testNbElites = 1
+
+## Enable/disable testing the elite configurations found at each
+## iteration.
+# testIterationElites = 0
+
+## Enable/disable elitist irace.
+# elitist = 1
+
+## Number of instances added to the execution list before previous
+## instances in elitist irace.
+# elitistNewInstances = 1
+
+## In elitist irace, maximum number per race of elimination tests that do
+## not eliminate a configuration. Use 0 for no limit.
+# elitistLimit = 2
+
+## User-defined R function that takes a configuration generated by irace
+## and repairs it.
+# repairConfiguration = ""
+
+## Enable the use of adaptive capping, a technique designed for minimizing
+## the computation time of configurations. This is only available when
+## elitist is active.
+# capping = 0
+
+## Measure used to obtain the execution bound from the performance of the
+## elite configurations: median, mean, worst, best.
+# cappingType = "median"
+
+## Method to calculate the mean performance of elite configurations:
+## candidate or instance.
+# boundType = "candidate"
+
+## Maximum execution bound for targetRunner. It must be specified when
+## capping is enabled.
+# boundMax = 0
+
+## Precision used for calculating the execution time. It must be specified
+## when capping is enabled.
+# boundDigits = 0
+
+## Penalization constant for timed out executions (executions that reach
+## boundMax execution time).
+# boundPar = 1
+
+## Replace the configuration cost of bounded executions with boundMax.
+# boundAsTimeout = 1
+
+## Percentage of the configuration budget used to perform a postselection
+## race of the best configurations of each iteration after the execution
+## of irace.
+# postselection = 0
+
+## Enable/disable AClib mode. This option enables compatibility with
+## GenericWrapper4AC as targetRunner script.
+# aclib = 0
+
+## END of scenario file
+############################################################################
+
diff --git a/eo/contrib/irace/expe/beta/irace_files_pA/fastga.param b/eo/contrib/irace/expe/beta/irace_files_pA/fastga.param
new file mode 100755
index 000000000..2b5779f64
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pA/fastga.param
@@ -0,0 +1,12 @@
+# name switch type range
+# continuator "--continuator=" c (0)
+crossoverrate "--crossover-rate=" r (0,1)
+crossselector "--cross-selector=" c (0,1,2,3,4,5,6)
+# aftercrossselector "--aftercross-selector=" c (0)
+crossover "--crossover=" c (0,1,2,3,4,5,6,7,8,9)
+mutationrate "--mutation-rate=" r (0,1)
+mutselector "--mut-selector=" c (0,1,2,3,4,5,6)
+mutation "--mutation=" c (0,1,2,3,4,5,6,7,8,9,10)
+replacement "--replacement=" c (0,1,2,3,4,5,6,7,8,9,10)
+popsize "--pop-size=" i (1,50)
+offspringsize "--offspring-size=" i (1,50)
diff --git a/eo/contrib/irace/expe/beta/irace_files_pA/target-runner b/eo/contrib/irace/expe/beta/irace_files_pA/target-runner
new file mode 100755
index 000000000..54c47ecd2
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pA/target-runner
@@ -0,0 +1,89 @@
+#!/bin/bash
+###############################################################################
+# This script is the command that is executed every run.
+# Check the examples in examples/
+#
+# This script is run in the execution directory (execDir, --exec-dir).
+#
+# PARAMETERS:
+# $1 is the candidate configuration number
+# $2 is the instance ID
+# $3 is the seed
+# $4 is the instance name
+# The rest ($* after `shift 4') are parameters to the run
+#
+# RETURN VALUE:
+# This script should print one numerical value: the cost that must be minimized.
+# Exit with 0 if no error, with 1 in case of error
+###############################################################################
+error() {
+ echo "`TZ=UTC date`: $0: error: $@"
+ exit 1
+}
+
+
+EXE="./fastga"
+LOG_DIR="irace_logs"
+
+#FIXED_PARAMS="--problem=0"
+#
+CONFIG_ID=$1
+INSTANCE_ID=$2
+SEED=$3
+INSTANCE=$(echo $4 | sed 's/\//\n/g'|tail -n 1)
+CROSSOVER_RATE=$5
+CROSSOVER_SELECTOR=$6
+CROSSOVER=$7
+MUTATION_RATE=$8
+MUT_SELECTOR=$9
+MUTATION=${10}
+REPLACEMENT=${11}
+POPSIZE=${12}
+OFFSPRINGSIZE=${13}
+shift 13 || error "Not enough parameters"
+
+INSTANCE_PARAMS=$*
+buckets=0
+# STDOUT=${LOG_DIR}/c${CONFIG_ID}_i${INSTANCE_ID}_s${SEED}.stdout
+# STDERR=${LOG_DIR}/c${CONFIG_ID}_i${INSTANCE_ID}_s${SEED}.stderr
+STDOUT="/dev/null"
+STDERR="/dev/null"
+
+if [ ! -x "${EXE}" ]; then
+ error "${EXE}: not found or not executable (pwd: $(pwd))"
+fi
+
+# If the program just prints a number, we can use 'exec' to avoid
+# creating another process, but there can be no other commands after exec.
+#exec $EXE ${FIXED_PARAMS} -i $INSTANCE ${INSTANCE_PARAMS}
+# exit 1
+#
+# Otherwise, save the output to a file, and parse the result from it.
+# (If you wish to ignore segmentation faults you can use '{}' around
+# the command.)
+cmd="$EXE --problem=${INSTANCE} --instance=${INSTANCE} --seed=${SEED} ${CROSSOVER_RATE} ${CROSSOVER_SELECTOR} ${CROSSOVER} ${MUTATION_RATE} ${MUT_SELECTOR} ${MUTATION} ${REPLACEMENT} ${POPSIZE} ${OFFSPRINGSIZE} --max-evals=${buckets}"
+# NOTE: irace seems to capture both stderr and stdout, so you should not output to stderr
+echo ${cmd} > ${STDERR}
+$cmd 2> ${STDERR} | tee ${STDOUT}
+
+# The following code is useless if the binary only output a single number on stdout.
+
+# This may be used to introduce a delay if there are filesystem
+# issues.
+# SLEEPTIME=1
+# while [ ! -s "${STDOUT}" ]; do
+# sleep $SLEEPTIME
+# let "SLEEPTIME += 1"
+# done
+
+# This is an example of reading a number from the output.
+# It assumes that the objective value is the first number in
+# the first column of the last line of the output.
+# if [ -s "${STDOUT}" ]; then
+# COST=$(tail -n 1 ${STDOUT} | grep -e '^[[:space:]]*[+-]\?[0-9]' | cut -f1)
+# echo "$COST"
+# rm -f "${STDOUT}" "${STDERR}"
+# exit 0
+# else
+# error "${STDOUT}: No such file or directory"
+# fi
diff --git a/eo/contrib/irace/expe/beta/irace_files_pF/default.instances b/eo/contrib/irace/expe/beta/irace_files_pF/default.instances
new file mode 100755
index 000000000..a0a1adfc3
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pF/default.instances
@@ -0,0 +1,48 @@
+## This is an example of specifying instances with a file.
+
+# Each line is an instance relative to trainInstancesDir
+# (see scenario.txt.tmpl) and an optional sequence of instance-specific
+# parameters that will be passed to target-runnerx when invoked on that
+# instance.
+
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
diff --git a/eo/contrib/irace/expe/beta/irace_files_pF/example.scen b/eo/contrib/irace/expe/beta/irace_files_pF/example.scen
new file mode 100755
index 000000000..abebcbb6d
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pF/example.scen
@@ -0,0 +1,227 @@
+###################################################### -*- mode: r -*- #####
+## Scenario setup for Iterated Race (irace).
+############################################################################
+
+## To use the default value of a parameter of iRace, simply do not set
+## the parameter (comment it out in this file, and do not give any
+## value on the command line).
+
+## File that contains the description of the parameters of the target
+## algorithm.
+parameterFile = "./fastga.param"
+
+## Directory where the programs will be run.
+execDir = "."
+
+## File to save tuning results as an R dataset, either absolute path or
+## relative to execDir.
+# logFile = "./irace.Rdata"
+
+## Previously saved log file to recover the execution of irace, either
+## absolute path or relative to the current directory. If empty or NULL,
+## recovery is not performed.
+# recoveryFile = ""
+
+## Directory where training instances are located; either absolute path or
+## relative to current directory. If no trainInstancesFiles is provided,
+## all the files in trainInstancesDir will be listed as instances.
+trainInstancesDir = "."
+
+## File that contains a list of training instances and optionally
+## additional parameters for them. If trainInstancesDir is provided, irace
+## will search for the files in this folder.
+trainInstancesFile = "./default.instances"
+
+## File that contains a table of initial configurations. If empty or NULL,
+## all initial configurations are randomly generated.
+# configurationsFile = ""
+
+## File that contains a list of logical expressions that cannot be TRUE
+## for any evaluated configuration. If empty or NULL, do not use forbidden
+## expressions.
+forbiddenFile = "./forbidden.txt"
+
+## Script called for each configuration that executes the target algorithm
+## to be tuned. See templates.
+targetRunner = "./target-runner"
+
+## Number of times to retry a call to targetRunner if the call failed.
+# targetRunnerRetries = 0
+
+## Optional data passed to targetRunner. This is ignored by the default
+## targetRunner function, but it may be used by custom targetRunner
+## functions to pass persistent data around.
+# targetRunnerData = ""
+
+## Optional R function to provide custom parallelization of targetRunner.
+# targetRunnerParallel = ""
+
+## Optional script or R function that provides a numeric value for each
+## configuration. See templates/target-evaluator.tmpl
+# targetEvaluator = ""
+
+## Maximum number of runs (invocations of targetRunner) that will be
+## performed. It determines the maximum budget of experiments for the
+## tuning.
+maxExperiments = 0 #100000
+
+## Maximum total execution time in seconds for the executions of
+## targetRunner. targetRunner must return two values: cost and time.
+# maxTime = 60
+
+## Fraction (smaller than 1) of the budget used to estimate the mean
+## computation time of a configuration. Only used when maxTime > 0
+# budgetEstimation = 0.02
+
+## Maximum number of decimal places that are significant for numerical
+## (real) parameters.
+digits = 2
+
+## Debug level of the output of irace. Set this to 0 to silence all debug
+## messages. Higher values provide more verbose debug messages.
+# debugLevel = 0
+
+## Number of iterations.
+# nbIterations = 0
+
+## Number of runs of the target algorithm per iteration.
+# nbExperimentsPerIteration = 0
+
+## Randomly sample the training instances or use them in the order given.
+# sampleInstances = 1
+
+## Statistical test used for elimination. Default test is always F-test
+## unless capping is enabled, in which case the default test is t-test.
+## Valid values are: F-test (Friedman test), t-test (pairwise t-tests with
+## no correction), t-test-bonferroni (t-test with Bonferroni's correction
+## for multiple comparisons), t-test-holm (t-test with Holm's correction
+## for multiple comparisons).
+# testType = "F-test"
+
+## Number of instances evaluated before the first elimination test. It
+## must be a multiple of eachTest.
+# firstTest = 5
+
+## Number of instances evaluated between elimination tests.
+# eachTest = 1
+
+## Minimum number of configurations needed to continue the execution of
+## each race (iteration).
+# minNbSurvival = 0
+
+## Number of configurations to be sampled and evaluated at each iteration.
+# nbConfigurations = 0
+
+## Parameter used to define the number of configurations sampled and
+## evaluated at each iteration.
+# mu = 5
+
+## Confidence level for the elimination test.
+# confidence = 0.95
+
+## If the target algorithm is deterministic, configurations will be
+## evaluated only once per instance.
+# deterministic = 0
+
+## Seed of the random number generator (by default, generate a random
+## seed).
+# seed = NA
+
+## Number of calls to targetRunner to execute in parallel. Values 0 or 1
+## mean no parallelization.
+# parallel = 0
+
+## Enable/disable load-balancing when executing experiments in parallel.
+## Load-balancing makes better use of computing resources, but increases
+## communication overhead. If this overhead is large, disabling
+## load-balancing may be faster.
+# loadBalancing = 1
+
+## Enable/disable MPI. Use Rmpi to execute targetRunner in parallel
+## (parameter parallel is the number of slaves).
+# mpi = 0
+
+## Specify how irace waits for jobs to finish when targetRunner submits
+## jobs to a batch cluster: sge, pbs, torque or slurm. targetRunner must
+## submit jobs to the cluster using, for example, qsub.
+# batchmode = 0
+
+## Enable/disable the soft restart strategy that avoids premature
+## convergence of the probabilistic model.
+# softRestart = 1
+
+## Soft restart threshold value for numerical parameters. If NA, NULL or
+## "", it is computed as 10^-digits.
+# softRestartThreshold = ""
+
+## Directory where testing instances are located, either absolute or
+## relative to current directory.
+# testInstancesDir = ""
+
+## File containing a list of test instances and optionally additional
+## parameters for them.
+# testInstancesFile = ""
+
+## Number of elite configurations returned by irace that will be tested if
+## test instances are provided.
+# testNbElites = 1
+
+## Enable/disable testing the elite configurations found at each
+## iteration.
+# testIterationElites = 0
+
+## Enable/disable elitist irace.
+# elitist = 1
+
+## Number of instances added to the execution list before previous
+## instances in elitist irace.
+# elitistNewInstances = 1
+
+## In elitist irace, maximum number per race of elimination tests that do
+## not eliminate a configuration. Use 0 for no limit.
+# elitistLimit = 2
+
+## User-defined R function that takes a configuration generated by irace
+## and repairs it.
+# repairConfiguration = ""
+
+## Enable the use of adaptive capping, a technique designed for minimizing
+## the computation time of configurations. This is only available when
+## elitist is active.
+# capping = 0
+
+## Measure used to obtain the execution bound from the performance of the
+## elite configurations: median, mean, worst, best.
+# cappingType = "median"
+
+## Method to calculate the mean performance of elite configurations:
+## candidate or instance.
+# boundType = "candidate"
+
+## Maximum execution bound for targetRunner. It must be specified when
+## capping is enabled.
+# boundMax = 0
+
+## Precision used for calculating the execution time. It must be specified
+## when capping is enabled.
+# boundDigits = 0
+
+## Penalization constant for timed out executions (executions that reach
+## boundMax execution time).
+# boundPar = 1
+
+## Replace the configuration cost of bounded executions with boundMax.
+# boundAsTimeout = 1
+
+## Percentage of the configuration budget used to perform a postselection
+## race of the best configurations of each iteration after the execution
+## of irace.
+# postselection = 0
+
+## Enable/disable AClib mode. This option enables compatibility with
+## GenericWrapper4AC as targetRunner script.
+# aclib = 0
+
+## END of scenario file
+############################################################################
+
diff --git a/eo/contrib/irace/expe/beta/irace_files_pF/fastga.param b/eo/contrib/irace/expe/beta/irace_files_pF/fastga.param
new file mode 100755
index 000000000..2e1d9fe1c
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pF/fastga.param
@@ -0,0 +1,12 @@
+# name switch type range
+# continuator "--continuator=" c (0)
+crossoverrate "--crossover-rate=" r (0,1)
+crossselector "--cross-selector=" c (0,1,2,3,4,5,6)
+# aftercrossselector "--aftercross-selector=" c (0)
+crossover "--crossover=" c (0,1,2,3,4,5,6,7,8,9)
+mutationrate "--mutation-rate=" r (0,1)
+mutselector "--mut-selector=" c (0,1,2,3,4,5,6)
+mutation "--mutation=" c (0,1,2,3,4,5,6,7,8,9,10)
+replacement "--replacement=" c (0,1,2,3,4,5,6,7,8,9,10)
+popsize "--pop-size=" i (1,50)
+offspringsize "--offspring-size=" i (1,50)
diff --git a/eo/contrib/irace/expe/beta/irace_files_pF/target-runner b/eo/contrib/irace/expe/beta/irace_files_pF/target-runner
new file mode 100755
index 000000000..7a990a8ec
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pF/target-runner
@@ -0,0 +1,96 @@
+#!/bin/bash
+###############################################################################
+# This script is the command that is executed every run.
+# Check the examples in examples/
+#
+# This script is run in the execution directory (execDir, --exec-dir).
+#
+# PARAMETERS:
+# $1 is the candidate configuration number
+# $2 is the instance ID
+# $3 is the seed
+# $4 is the instance name
+# The rest ($* after `shift 4') are parameters to the run
+#
+# RETURN VALUE:
+# This script should print one numerical value: the cost that must be minimized.
+# Exit with 0 if no error, with 1 in case of error
+###############################################################################
+error() {
+ echo "`TZ=UTC date`: $0: error: $@"
+ exit 1
+}
+
+
+EXE="./fastga"
+LOG_DIR="irace_logs"
+
+FIXED_PARAMS="--problem=0"
+#MAX_EVALS=2
+#
+CONFIG_ID=$1
+INSTANCE_ID=$2
+SEED=$3
+INSTANCE=$(echo $4 | sed 's/\//\n/g'|tail -n 1)
+CROSSOVER_RATE=$5
+CROSSOVER_SELECTOR=$6
+CROSSOVER=$7
+MUTATION_RATE=$8
+MUT_SELECTOR=$9
+MUTATION=${10}
+REPLACEMENT=${11}
+POPSIZE=${12}
+OFFSPRINGSIZE=${13}
+shift 13 || error "Not enough parameters"
+
+INSTANCE_PARAMS=$*
+
+buckets=0
+#dim=(20 20 16 48 25 32 128 128 128 50 100 150 128 192 192 192 256 75 150)
+#size= $( echo $(echo $13 | cut -d'=' -f2))
+#pb=$(echo $(echo $13 | cut -d'=' -f2))
+#maxevals=$( echo ${dim[$pb]})
+# STDOUT=${LOG_DIR}/c${CONFIG_ID}_i${INSTANCE_ID}_s${SEED}.stdout
+# STDERR=${LOG_DIR}/c${CONFIG_ID}_i${INSTANCE_ID}_s${SEED}.stderr
+STDOUT="/dev/null"
+STDERR="/dev/null"
+
+if [ ! -x "${EXE}" ]; then
+ error "${EXE}: not found or not executable (pwd: $(pwd))"
+fi
+
+# If the program just prints a number, we can use 'exec' to avoid
+# creating another process, but there can be no other commands after exec.
+#exec $EXE ${FIXED_PARAMS} -i $INSTANCE ${INSTANCE_PARAMS}
+# exit 1
+#
+# Otherwise, save the output to a file, and parse the result from it.
+# (If you wish to ignore segmentation faults you can use '{}' around
+# the command.)
+
+cmd="$EXE ${FIXED_PARAMS} --instance=${INSTANCE} --seed=${SEED} ${CROSSOVER_RATE} ${CROSSOVER_SELECTOR} ${CROSSOVER} ${MUTATION_RATE} ${MUT_SELECTOR} ${MUTATION} ${REPLACEMENT} ${POPSIZE} ${OFFSPRINGSIZE} --max-evals=${buckets}"
+# NOTE: irace seems to capture both stderr and stdout, so you should not output to stderr
+echo ${cmd} > ${STDERR}
+$cmd 2> ${STDERR} | tee ${STDOUT}
+
+# The following code is useless if the binary only output a single number on stdout.
+
+# This may be used to introduce a delay if there are filesystem
+# issues.
+# SLEEPTIME=1
+# while [ ! -s "${STDOUT}" ]; do
+# sleep $SLEEPTIME
+# let "SLEEPTIME += 1"
+# done
+
+# This is an example of reading a number from the output.
+# It assumes that the objective value is the first number in
+# the first column of the last line of the output.
+# if [ -s "${STDOUT}" ]; then
+# COST=$(tail -n 1 ${STDOUT} | grep -e '^[[:space:]]*[+-]\?[0-9]' | cut -f1)
+# echo "$COST"
+# rm -f "${STDOUT}" "${STDERR}"
+# exit 0
+# else
+# error "${STDOUT}: No such file or directory"
+# fi
diff --git a/eo/contrib/irace/expe/beta/parseA_irace_bests.py b/eo/contrib/irace/expe/beta/parseA_irace_bests.py
new file mode 100755
index 000000000..7c48f8049
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/parseA_irace_bests.py
@@ -0,0 +1,31 @@
+#!/usr/bin/env python3
+#parse data1
+import os
+import re
+import sys
+
+print("ecdf,id,crossover-rate,cross-selector,crossover,mutation-rate,mut-selector,mutation,replacement,pop-size,offspring-size")
+
+
+#give the path of one experiment
+argv=sys.argv[1]
+for datadir in os.listdir(argv):
+ #if(os.path.isdir(os.path.join(argv,datadir))): check if argv/datadir is a directory
+ if(datadir.find("results_irace")>=0): #check if the directory is one JOB
+ with open(os.path.join("./",argv,datadir,"irace.log")) as fd:
+ data = fd.readlines()
+
+ # Find the last best configuration
+ bests = [line.strip() for line in data if "Best-so-far" in line]
+ #print(datadir,bests)
+ best = bests[-1].split()
+ best_id, best_perf = best[2], best[5]
+ # print(best_id,best_perf)
+
+ # Filter the config detail
+ configs = [line.strip() for line in data if "--crossover-rate=" in line and best_id in line]
+ # print(configs)
+ # Format as CSV
+ algo = re.sub("\-\-\S*=", ",", configs[0])
+ csv_line = best_perf + "," + algo
+ print(csv_line.replace(" ",""))
\ No newline at end of file
diff --git a/eo/contrib/irace/expe/beta/parseF_irace_bests.py b/eo/contrib/irace/expe/beta/parseF_irace_bests.py
new file mode 100755
index 000000000..39c3d44cc
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/parseF_irace_bests.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python3
+#parse data1
+import os
+import re
+import sys
+#print("pb,ecdf,id,crossover-rate,cross-selector,crossover,mutation-rate,mut-selector,mutation,replacement") #plan1
+print("pb,ecdf,id,crossover-rate,cross-selector,crossover,mutation-rate,mut-selector,mutation,replacement,pop-size,offspring-size")
+
+
+#give the path of one experiment
+argv=sys.argv[1]
+for datadir in os.listdir(argv):
+ #if(os.path.isdir(os.path.join(argv,datadir))): check if argv/datadir is a directory
+ if(datadir.find("results_irace")>=0): #check if the directory is one JOB
+ for pb_dir in os.listdir(os.path.join(argv,datadir)):
+ if "results_problem" in pb_dir:
+ pb_id=pb_dir.replace("results_problem_","")
+ with open(os.path.join("./",argv,datadir,pb_dir,"irace.log")) as fd:
+ data = fd.readlines()
+
+ # Find the last best configuration
+ bests = [line.strip() for line in data if "Best-so-far" in line]
+ #print(datadir,bests)
+ best = bests[-1].split()
+ best_id, best_perf = best[2], best[5]
+ # print(best_id,best_perf)
+
+ # Filter the config detail
+ configs = [line.strip() for line in data if "--crossover-rate=" in line and best_id in line]
+ # print(configs)
+
+ # Format as CSV
+ algo = re.sub("\-\-\S*=", ",", configs[0])
+ csv_line = pb_id + "," + best_perf + "," + algo
+ print(csv_line.replace(" ",""))
diff --git a/eo/contrib/irace/expe/beta/planA/r_iA.sh b/eo/contrib/irace/expe/beta/planA/r_iA.sh
new file mode 100755
index 000000000..b9ca24be8
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/planA/r_iA.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+#run once each problem
+
+echo "-------------------------Start the JOB : $(date --iso-8601=seconds)"
+. /etc/profile.d/modules.sh
+export MODULEPATH=${MODULEPATH}${MODULEPATH:+:}/opt/dev/Modules/Anaconda:/opt/dev/Modules/Compilers:/opt/dev/Modules/Frameworks:/opt/dev/Modules/Libraries:/opt/dev/Modules/Tools:/opt/dev/Modules/IDEs:/opt/dev/Modules/MPI
+module load LLVM/clang-llvm-10.0
+module load R
+
+dir=$1
+run=$2
+budget_irace=$3
+buckets=$4
+myhome=$5
+cp -r ${myhome}/R .
+cp -r ${myhome}/irace_files_pA .
+#cp -r /scratchbeta/zhenga/irace_files .
+#chmod u+x ./fastga
+outdir="${run}_$(date --iso-8601=seconds)_results_irace"
+rundir=${dir}/${outdir}
+mkdir -p ${rundir}
+# Fore some reason, irace absolutely need those files...
+cp ${myhome}/code/paradiseo/eo/contrib/irace/release/fastga ${rundir}
+cat ./irace_files_pA/example.scen | sed "s%\".%\"${rundir}%g" | sed "s/maxExperiments = 0/maxExperiments=${budget_irace}/" > ${rundir}/example.scen
+cp ./irace_files_pA/default.instances ${rundir}
+cp ./irace_files_pA/fastga.param ${rundir}
+cp ./irace_files_pA/forbidden.txt ${rundir}
+cat ./irace_files_pA/target-runner | sed "s/buckets=0/buckets=${buckets}/" > ${rundir}/target-runner
+chmod u+x ${rundir}/target-runner
+
+echo "---start $(date)"
+time -p ./R/x86_64-pc-linux-gnu-library/3.6/irace/bin/irace --scenario ${rundir}/example.scen > ${rundir}/irace.log
+echo "---end $(date)"
+echo "End the JOB : $(date --iso-8601=seconds)------------------------------"
diff --git a/eo/contrib/irace/expe/beta/planA/riaA.sh b/eo/contrib/irace/expe/beta/planA/riaA.sh
new file mode 100755
index 000000000..c28359626
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/planA/riaA.sh
@@ -0,0 +1,25 @@
+#!/bin/bashi
+myhome=$1
+scratchpath=$2
+mexp=$3
+mevals=$4
+date -Iseconds
+echo "STARTS"
+dir=${scratchpath}/dataFAR/dataA
+#dir=${HOME}/plan4/${name}
+#cat ${HOME}/irace_files_pA/example.scen |sed "s/maxExperiments = 0/maxExperiments = ${mexp}/" > ${HOME}/irace_files_pA/example.scen
+
+mkdir -p ${dir}
+outdir="${dir}/dataA_maxExp=${mexp}_maxEv=${mevals}_$(date --iso-8601=seconds)"
+mkdir -p ${outdir}
+for r in $(seq 2); do
+ echo "Run $r/15";
+ cmd="qsub -N iraceA_maxEv_${r} -q beta -l select=1:ncpus=1 -l walltime=00:30:00 -- ${scratchpath}/planA/r_iA.sh ${outdir} ${r} ${mexp} ${mevals} ${myhome}"
+ #cmd="bash ./r_iA_buckets.sh ${outdir} ${r} ${mexp} ${mevals}"
+ echo $cmd
+ time -p $cmd
+done
+echo "DONE"
+#cat ${HOME}/irace_files_pA/example.scen |sed "s/maxExperiments = ${mexp}/maxExperiments = 0/" > ${HOME}/irace_files_pA/example.scen
+date -Iseconds
+
diff --git a/eo/contrib/irace/expe/beta/planF/r_iF.sh b/eo/contrib/irace/expe/beta/planF/r_iF.sh
new file mode 100755
index 000000000..fb9246746
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/planF/r_iF.sh
@@ -0,0 +1,37 @@
+#!/bin/bash
+#run once each problem
+dir=$1
+run=$2
+budget_irace=$3
+buckets=$4
+myhome=$5
+
+echo "---------------start JOB ${run} $(date --iso-8601=seconds)"
+. /etc/profile.d/modules.sh
+export MODULEPATH=${MODULEPATH}${MODULEPATH:+:}/opt/dev/Modules/Anaconda:/opt/dev/Modules/Compilers:/opt/dev/Modules/Frameworks:/opt/dev/Modules/Libraries:/opt/dev/Modules/Tools:/opt/dev/Modules/IDEs:/opt/dev/Modules/MPI
+module load LLVM/clang-llvm-10.0
+module load R
+
+cp -r ${myhome}/R .
+cp -r ${myhome}/irace_files_pF .
+#cp -r /scratchbeta/zhenga/irace_files .
+#chmod u+x ./fastga
+outdir="${run}_$(date --iso-8601=seconds)_results_irace"
+for pb in $(seq 0 18) ; do
+ echo "Problem ${pb}... "
+ res="results_problem_${pb}"
+ mkdir -p ${dir}/${outdir}/${res}
+ # Fore some reason, irace absolutely need those files...
+ cp ${myhome}/code/paradiseo/eo/contrib/irace/release/fastga ${dir}/${outdir}/${res}
+ cat ./irace_files_pF/example.scen | sed "s%\".%\"${dir}/${outdir}/${res}%g" | sed "s/maxExperiments = 0/maxExperiments=${budget_irace}/" > ${dir}/${outdir}/${res}/example.scen
+ cp ./irace_files_pF/default.instances ${dir}/${outdir}/${res}
+ cp ./irace_files_pF/fastga.param ${dir}/${outdir}/${res}
+ cp ./irace_files_pF/forbidden.txt ${dir}/${outdir}/${res}
+ cat ./irace_files_pF/target-runner | sed "s/--problem=0/--problem=${p}/" | sed "s/buckets=0/buckets=${buckets}/" > ${dir}/${outdir}/${res}/target-runner
+ chmod u+x ${dir}/${outdir}/${res}/target-runner
+
+ echo "---start $(date)"
+ time -p ./R/x86_64-pc-linux-gnu-library/3.6/irace/bin/irace --scenario ${dir}/${outdir}/${res}/example.scen > ${dir}/${outdir}/${res}/irace.log
+ echo "---end $(date)"
+done
+echo "end JOB ${run} $(date --iso-8601=seconds)---------------"
diff --git a/eo/contrib/irace/expe/beta/planF/riaF.sh b/eo/contrib/irace/expe/beta/planF/riaF.sh
new file mode 100755
index 000000000..5791a1a1d
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/planF/riaF.sh
@@ -0,0 +1,28 @@
+#!/bin/bash
+
+date -Iseconds
+echo "STARTS"
+myhome=$1
+scratchpath=$2
+#dir=${HOME}/plan2/${name}
+mexp=$3 #budget irace
+mevals=$4 #budget fastga
+name="dataF_maxExp=${mexp}_maxEv=${mevals}_$(date --iso-8601=seconds)"
+dir=${scratchpath}/dataFAR/dataF/${name}
+mkdir -p ${dir}
+
+for r in $(seq 2); do
+ echo "Run $r/15";
+ #date -Iseconds
+ #cmd="qsub -N irace_${runs}_${buckets}" -q beta -l select=1:ncpus=1 -l walltime=00:04:00 --${HOME}/run_irace.sh ${dir}
+ cmd="qsub -N iraceF_${mevals}_run=${r} -q beta -l select=1:ncpus=1 -l walltime=00:30:00 -- ${scratchpath}/planF/r_iF.sh ${dir} ${r} ${mexp} ${mevals} ${myhome}"
+ #time -p bash ${HOME}/plan2/run_irace2.sh ${dir} ${r} &> ${dir}/erreur_${r}.txt
+ #bash ${HOME}/test/r_i.sh
+ echo $cmd
+ $cmd
+ #date -Iseconds
+done
+
+#echo "DONE"
+#date -Iseconds
+#echo $(pwd)
diff --git a/eo/contrib/irace/expe/beta/run_elites_planA.sh b/eo/contrib/irace/expe/beta/run_elites_planA.sh
new file mode 100755
index 000000000..8cc3b146a
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/run_elites_planA.sh
@@ -0,0 +1,61 @@
+#!/bin/bash
+#instance = seed
+echo "-----------------Start $(date)"
+. /etc/profile.d/modules.sh
+export MODULEPATH=${MODULEPATH}${MODULEPATH:+:}/opt/dev/Modules/Anaconda:/opt/dev/Modules/Compilers:/opt/dev/Modules/Frameworks:/opt/dev/Modules/Libraries:/opt/dev/Modules/Tools:/opt/dev/Modules/IDEs:/opt/dev/Modules/MPI
+module load LLVM/clang-llvm-10.0
+
+csv_file=$1 #contains all the configs of all the problems of one experiments
+mexp=$2
+mevals=$3
+path=$4
+# Number of runs (=seeds).
+runs=50
+
+# You most probably want to run on release builds.
+exe="/home/zhenga/fastga"
+plan=$(echo ${csv_file} | sed "s/results_irace_plan//")
+outdir="${path}/plan4_maxExp=${mexp}_maxEv=${mevals}_$(date --iso-8601=minutes)_results_elites_all"
+mkdir -p ${outdir}
+mkdir -p ${outdir}/raw
+mkdir -p ${outdir}/raw/data
+mkdir -p ${outdir}/raw/logs
+
+n=0
+algoid=0
+for line in $(cat ${csv_file}| sed 1,1d | cut -s -d"," -f3-11 ); do
+ a=($(echo $line | sed "s/,/ /g"))
+ algo="--crossover-rate=${a[0]} --cross-selector=${a[1]} --crossover=${a[2]} --mutation-rate=${a[3]} --mut-selector=${a[4]} --mutation=${a[5]} --replacement=${a[6]} --pop-size=${a[7]} --offspring-size=${a[8]}"
+
+ #perc=$(echo "scale=3;${n}/(285)*100.0" | bc)
+ #echo "${perc}% : algo ${algoid}/285"
+ # echo -n "Runs: "
+ for pb in $(seq 0 18) ; do
+ name_dir="pb=${pb}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
+ mkdir -p ${outdir}/raw/data/${name_dir}
+ mkdir -p ${outdir}/raw/logs/${name_dir}
+ for seed in $(seq ${runs}) ; do # Iterates over runs/seeds.
+ # This is the command to be ran.
+ #cmd="${exe} --full-log=1 --problem=${pb} --seed=${seed} ${algo}"
+ cmd="${exe} --problem=${pb} --seed=${seed} --instance=${seed} ${algo}"
+ #echo ${cmd} # Print the command.
+ # Forge a directory/log file name
+ # (remove double dashs and replace spaces with underscore).
+ name_run="pb=${pb}_seed=${seed}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
+ # echo $name_run
+ # Actually start the command.
+
+ ${cmd} > "${outdir}/raw/data/${name_dir}/${name_run}.dat" 2> "${outdir}/raw/logs/${name_dir}/${name_run}.log"
+ # Check for the most common problem in the log file.
+ #cat "${outdir}/raw/logs/${name_run}.log" | grep "illogical performance"
+ done # seed
+ n=$(($n+1))
+ done
+ algoid=$(($algoid+1))
+done
+
+# Move IOH logs in the results directory.
+#mv ./FastGA_* ${outdir}
+
+echo "Done $(date) -----------------------"
+#date
diff --git a/eo/contrib/irace/expe/beta/run_elites_planF.sh b/eo/contrib/irace/expe/beta/run_elites_planF.sh
new file mode 100755
index 000000000..1c8b20a0a
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/run_elites_planF.sh
@@ -0,0 +1,59 @@
+#!/bin/bash
+#instance = seed
+echo "-----------------Start $(date)"
+. /etc/profile.d/modules.sh
+export MODULEPATH=${MODULEPATH}${MODULEPATH:+:}/opt/dev/Modules/Anaconda:/opt/dev/Modules/Compilers:/opt/dev/Modules/Frameworks:/opt/dev/Modules/Libraries:/opt/dev/Modules/Tools:/opt/dev/Modules/IDEs:/opt/dev/Modules/MPI
+module load LLVM/clang-llvm-10.0
+
+csv_file=$1 #contains all the configs of all the problems of one experiments
+mexp=$2
+mevals=$3
+path=$4
+# Number of runs (=seeds).
+runs=50
+
+# You most probably want to run on release builds.
+exe="/home/${USER}/fastga"
+plan=$(echo ${csv_file} | cut -d / -f3 | sed "s/results_irace_plan//")
+outdir="${path}/plan${plan[@]:0:1}_maxExp=${mexp}_maxEv=${mevals}_$(date --iso-8601=minutes)_results_elites_all"
+mkdir -p ${outdir}
+mkdir -p ${outdir}/raw
+mkdir -p ${outdir}/raw/data
+mkdir -p ${outdir}/raw/logs
+
+n=0
+algoid=0
+for line in $(cat ${csv_file}| sed 1,1d ); do
+ a=($(echo $line | sed "s/,/ /g"))
+ algo="--crossover-rate=${a[3]} --cross-selector=${a[4]} --crossover=${a[5]} --mutation-rate=${a[6]} --mut-selector=${a[7]} --mutation=${a[8]} --replacement=${a[9]} --pop-size=${a[10]} --offspring-size=${a[11]}"
+
+ #perc=$(echo "scale=3;${n}/(285)*100.0" | bc)
+ #echo "${perc}% : algo ${algoid}/285"
+ # echo -n "Runs: "
+ name_dir="pb=${a[0]}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
+ mkdir -p ${outdir}/raw/logs/${name_dir}
+ mkdir -p ${outdir}/raw/data/${name_dir}
+ for seed in $(seq ${runs}) ; do # Iterates over runs/seeds.
+ # This is the command to be ran.
+ #cmd="${exe} --full-log=1 --problem=${pb} --seed=${seed} ${algo}"
+ cmd="${exe} --problem=${a[0]} --seed=${seed} --instance=${seed} ${algo}"
+ #echo ${cmd} # Print the command.
+ # Forge a directory/log file name
+ # (remove double dashs and replace spaces with underscore).
+ name_run="pb=${a[0]}_seed=${seed}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
+ # echo $name_run
+ # Actually start the command.
+ ${cmd} > "${outdir}/raw/data/${name_dir}/${name_run}.dat" 2> "${outdir}/raw/logs/${name_dir}/${name_run}.log"
+ # Check for the most common problem in the log file.
+ #cat "${outdir}/raw/logs/${name_run}.log" | grep "illogical performance"
+ done # seed
+
+ n=$(($n+1))
+ algoid=$(($algoid+1))
+done
+
+# Move IOH logs in the results directory.
+#mv ./FastGA_* ${outdir}
+
+echo "Done $(date) -----------------------"
+#date
diff --git a/eo/contrib/irace/expe/beta/run_exp.sh b/eo/contrib/irace/expe/beta/run_exp.sh
new file mode 100644
index 000000000..2688709f8
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/run_exp.sh
@@ -0,0 +1,12 @@
+#!/bin/bash
+lexp=(300 600 1000 10000)
+levals=(100 500 1000)
+myscratchpath=/scratchbeta/$USER
+myhome=${HOME}
+for exp in ${lexp[@]} ; do
+ for evals in ${levals[@]} ; do
+ bash ./planF/riaF.sh ${myhome} ${myscratchpath} ${exp} ${evals}
+ bash ./planA/riaA.sh ${myhome} ${scratchpath} ${exp} ${evals}
+ done
+done
+bash testrandom.sh ${myhome} ${scratchpath} ${levals[@]}
diff --git a/eo/contrib/irace/expe/beta/run_random.sh b/eo/contrib/irace/expe/beta/run_random.sh
new file mode 100755
index 000000000..f509e4f3a
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/run_random.sh
@@ -0,0 +1,67 @@
+#!/bin/bash
+# Number of runs (=seeds).
+runs=5
+basename=$1
+mevals=$2
+nbAlgo=2
+echo "Start JOB maxEv= $mevals $(date -Iseconds) ----------------------"
+. /etc/profile.d/modules.sh
+export MODULEPATH=${MODULEPATH}${MODULEPATH:+:}/opt/dev/Modules/Anaconda:/opt/dev/Modules/Compilers:/opt/dev/Modules/Frameworks:/opt/dev/Modules/Libraries:/opt/dev/Modules/Tools:/opt/dev/Modules/IDEs:/opt/dev/Modules/MPI
+module load LLVM/clang-llvm-10.0
+cp ${HOME}/code/paradiseo/eo/contrib/irace/release/fastga .
+# You most probably want to run on release builds.
+exe="./fastga"
+
+#outdir="/scratchbeta/$USER/$(date --iso-8601=minutes)_results_randoms"
+outdir="${basename}/maxEv=${mevals}_nbAlgo=${nbAlgo}_$(date --iso-8601=minutes)_results_randoms"
+mkdir -p ${outdir}
+n=1
+algoid=0
+for algoid in $(seq ${nbAlgo}); do
+ #date
+ r1=$(echo "scale=2 ; ${RANDOM}/32767" | bc)
+ r2=$(echo "scale=2 ; ${RANDOM}/32767" | bc)
+ a=(${r1} $((RANDOM%7)) $((RANDOM%10)) ${r2} $((RANDOM%7)) $((RANDOM%11)) $((RANDOM%11)) $((RANDOM%50 +1)) $((RANDOM%50 +1)) )
+ #condition for value of replacement, pop-size and offspringsize
+ while [[ (1 -lt ${a[6]} && ${a[7]} -lt ${a[8]}) || ( ${a[6]} -eq 1 && ${a[7]} -ne ${a[8]}) ]]
+ do
+ #echo "get in ------------------replacement ${a[6]} popsize ${a[7]} offspringsize ${a[8]}"
+ r1=$(echo "scale=2 ; ${RANDOM}/32767" | bc)
+ r2=$(echo "scale=2 ; ${RANDOM}/32767" | bc)
+ a=(${r1} $((RANDOM%7)) $((RANDOM%10)) ${r2} $((RANDOM%7)) $((RANDOM%11)) $((RANDOM%11)) $((RANDOM%50 +1)) $((RANDOM%50 +1)))
+ done
+ algo="--crossover-rate=${a[0]} --cross-selector=${a[1]} --crossover=${a[2]} --mutation-rate=${a[3]} --mut-selector=${a[4]} --mutation=${a[5]} --replacement=${a[6]} --pop-size=${a[7]} --offspring-size=${a[8]}"
+ echo " start algo ${a}------ $(date --iso-8601=minutes)"
+ algodir="$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
+ for pb in $(seq 0 18) ; do
+ perc=$(echo "scale=3;${n}/(10*18)*10.0" | bc)
+ #echo "${perc}% : algo ${algoid}/100, problem ${pb}/18 $(date --iso-8601=minutes)"
+ # echo -n "Runs: "
+ name_dir="pb=${pb}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
+
+ mkdir -p ${outdir}/${algodir}/data/${name_dir}
+ mkdir -p ${outdir}/${algodir}/logs/${name_dir}
+
+ for seed in $(seq ${runs}) ; do # Iterates over runs/seeds.
+ # This is the command to be ran.
+ cmd="${exe} --problem=${pb} --seed=${seed} --instance=${seed} ${algo} --max-evals=${mevals}"
+ name_run="pb=${pb}_seed=${seed}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
+ # echo $name_run
+ #echo $algo
+
+ ${cmd} > ${outdir}/${algodir}/data/${name_dir}/${name_run}.dat 2> ${outdir}/${algodir}/logs/${name_dir}/${name_run}.log
+ # Check for the most common problem in the log file.
+ #cat "${outdir}/raw/logs/${name_run}.log" | grep "illogical performance"
+ done # seed
+ # echo ""
+
+ n=$(($n+1))
+ done # pb
+ echo "end algo $(date -Iseconds) "
+ algoid=$(($algoid+1))
+done
+
+
+
+echo "------------------------------------Done $mevals $(date -Iseconds) "
+
diff --git a/eo/contrib/irace/expe/beta/run_res.sh b/eo/contrib/irace/expe/beta/run_res.sh
new file mode 100644
index 000000000..de5b352ad
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/run_res.sh
@@ -0,0 +1,26 @@
+#!/bin/bash
+
+#get csv file, parse dataF in a csv file
+dir=/scratchbeta/$USER/dataFAR
+listdir=$(echo $(ls ${dir}))
+
+for data in ${listdir[@]} ; do
+ file_py="parse${data: -1}_irace_bests.py"
+ path="${dir}/${data}"
+ cmd="bash ./csv_all_bests.sh ${path} ${file_py}"
+ echo $cmd
+ $cmd
+done
+
+#get validation run of each config
+
+dir=/scratchbeta/$USER/csv_FA
+listdir=$(echo $(ls ${dir}))
+echo ${listdir[@]}
+for csvdir in ${listdir[@]} ; do
+ csvpath="${dir}/${csvdir}"
+ file_py="./run_elites_plan${csvdir: -1}.sh"
+ cmd="bash ./fastga_elites_all.sh ${csvpath} ${file_py}"
+ echo $cmd
+ $cmd
+done
diff --git a/eo/contrib/irace/expe/beta/testrandom.sh b/eo/contrib/irace/expe/beta/testrandom.sh
new file mode 100644
index 000000000..5c6880594
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/testrandom.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+#tab=(15000 20000 30000 40000)
+#tab=(100 500 1000 1500 2000 2500 3000 3500 4000 4500 5000 10000)
+myhome=$1
+scratchpath=$2
+tab=${@:3}
+#echo ${tab[@]}
+outdir="/scratchbeta/$USER/fastga_results_all/fastga_results_random"
+mkdir -p ${outdir} #results of random experiment
+for evals in ${tab[@]}; do
+ #evalsdir="${name}/maxEv=${evals}"
+ #mkdir -p ${evalsdir}
+ #{ time -p bash /home/$USER/run_random.sh ${name} ${i} 50 ; } &> "${name}/sortie5_${j}_maxExp=${i}.txt"
+ #cmd="qsub -N iraceR_maxEv=${evals} -q beta -l select=1:ncpus=1 -l walltime=00:30:00 -- /scratchbeta/$USER/run_random.sh ${outdir} ${evals}"
+ $cmd
+
+done
From 6f0f2fb2e646bcdf946587bca1fcf8a07f676915 Mon Sep 17 00:00:00 2001
From: Alix ZHENG
Date: Sun, 5 Sep 2021 20:49:47 +0200
Subject: [PATCH 013/113] Add the final experimental scripts
---
.../irace/expe/beta/fastga_elites_all.sh | 6 +-
eo/contrib/irace/expe/beta/readme.txt | 101 ++++++++++++++++++
eo/contrib/irace/expe/beta/run_exp.sh | 2 +-
3 files changed, 105 insertions(+), 4 deletions(-)
create mode 100755 eo/contrib/irace/expe/beta/readme.txt
diff --git a/eo/contrib/irace/expe/beta/fastga_elites_all.sh b/eo/contrib/irace/expe/beta/fastga_elites_all.sh
index 998cd22ab..a53eb189d 100644
--- a/eo/contrib/irace/expe/beta/fastga_elites_all.sh
+++ b/eo/contrib/irace/expe/beta/fastga_elites_all.sh
@@ -1,6 +1,6 @@
#!/bin/bash
-ldata=$1 # eg : ./csv_plan2/ don t forget to end the path with /
-file_py=$2
+ldata=$1 # eg : ./csv_planF/ don t forget to end the path with /
+file_sh=$2 #eg : ./run_elites_planF
ldir=$(echo $(ls ${ldata}))
fastga_dir="fastga_results_all"
mkdir -p /scratchbeta/${USER}/${fatga_dir}
@@ -16,7 +16,7 @@ for data in ${ldir[@]} ; do
mevals=$(echo ${data[@]} | cut -d _ -f5)
mevals_id=$(echo ${mevals} | cut -d = -f2)
path="/scratchbeta/${USER}/${fastga_dir}/fastga_results_plan${plan_name[@]:0:1}"
- cmd="bash ${file_py} ${path_csv} ${mexp_id} ${mevals_id} ${path}"
+ cmd="bash ${file_sh} ${path_csv} ${mexp_id} ${mevals_id} ${path}"
name="fastga${plan_name[@]:0:1}_${mexp}_${mevals}_$(date -Iseconds)_results_elites_all"
${cmd} &> "${path}/output${plan_name[@]:0:1}_fastga_${mexp}_${mevals}_$(date -Iseconds).txt"
done
diff --git a/eo/contrib/irace/expe/beta/readme.txt b/eo/contrib/irace/expe/beta/readme.txt
new file mode 100755
index 000000000..6d53b7d90
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/readme.txt
@@ -0,0 +1,101 @@
+1. INTRODUCTION
+
+The aim of all the scripts is to make the experimental plans for Algorithm Configuration for Genetic Algorithms by using a fully modular benchmarking pipeline design of this article https://arxiv.org/abs/2102.06435 .
+
+Plan A is an experimental plan for finding an efficient algorithm for all the functions that we consider.
+
+Plan F is an experimental plan for finding an efficient algorithm for each function that we consider.
+
+Plan R is an experimental plan for getting random algorithms.
+
+2. VOCABULARIES
+
+* maxExp : means maximum Experiments, the budget for irace
+* maxEv : means maximum evaluation, the budget for FastGA algorithms
+
+*dataFAR : directory which we store all the experiment data of Plan F and Plan A, created when you run run_exp.sh
+
+* dataA, dataF
+dataA is a directory which we store all the runs of an experiment plan for several budgets
+eg : /dataA/planA_maxExp=*_maxEv=**_$(data), * is a value of maxExp, and ** is a value of maxEv
+
+
+*fastga_results_all : directory which we store all the data for validation runs. It constains only 3 subdirectories (fastga_results_planF, fastga_results_planA, fastga_results_random), created by running run_exp.sh
+
+* fastga_results_planF, fastga_results_planA, fastga_results_random
+Each directory store the data for validation runs of each experiment plan.
+fastga_random directory are created by running run_exp.sh
+fastga_results_planF and fastag_results_planA are created only after you have data in the dataA or dataF directories.
+
+
+* planA_*, planF_*
+If the planA_* or planF_* are in the dataFAR directory, the directory contains the data of experimental plan. This means that each plan contains the result of 15 runs of irace stored in irace.log file, and the data are provided by run_exp.sh.
+
+If the planA_* or planF_* directories are in the fastga_results_planA or fastga_results_planF, these directories contain the data of 50 validation runs by running all the best algorithms of each plan stores in dataFAR. The data are provided by running run_res.sh
+
+
+*fastag_all_results : contains the directories of the validation run data.
+
+*fastga_results_planF, fastga_results_planA and fastga_results_random contain respectively the validation run data of Plan F, Plan A and Plan R.
+
+
+3. DESCRIPTION
+
+The directory which you load all the scripts contains :
+
+ * bash files :
+ -run_res.sh : submit to the cluster all the experiment plan, get all the data we need for the plan F, plan A and plan R.
+ -run_exp.sh : submit to the cluster for getting all the data for validation runs of each data A and data F provided by running run_res.sh
+ -run_random.sh : script for getting random algorithms and the data for validation runs for each problem
+ -testrandom.sh : change the budget fastga (maxEv) in this file if you need, by running this file, you submit plan R job in the cluster
+
+ -csv_all_bests.sh : script for getting all the best configurations of each plan in a dataF or a dataA directories
+
+ -run_elites_planA.sh : script for validation runs of plan A by giving a csv file of each best configuration. This file is provided by running parseA_irace_bests.py.
+ -run_elites_planB.sh
+ -fastga_elites_all.sh : run this file, by giving a directory csv_plan* of csv files ( must only contains the csv file of the same plan, eg : csv_planF) and a run_elites_plan*.sh (* is the name of the plan, eg run_elites_planF.sh), by running this file you get all the validation runs of each csv file. Each csv file contains the best configuration (you get these csv files by running csv_all_bests.sh)
+
+ * python files :
+ -parseA_irace_bests.py : for parsing the irace.log file of each data provided by running irace. By giving a bounch of directories of one experiment
+ -parseF_irace_bests.py
+
+ * 4 directories :
+ -irace_files_pA :
+ -default.instances
+ -example.scen
+ -fastga.param
+ -forbidden.txt
+ -target-runner
+
+ -irace_files_pF :
+ -default.instances :
+ -example.scen
+ -fastga.param
+ -forbidden.txt
+ -target-runner
+
+ -planA :
+ -riaA.sh : for running 15 times r_iA.sh file by submitting to the mesu cluster
+ -r_iA.sh : for running irace for all the problems
+
+ -planF :
+ -riaF.sh : for running 15 times r_iF.sh file by submitting to the mesu cluster
+ -r_iF.sh : for running irace for each problem we considered
+
+
+The directories planA, planF contain the scripts to run one experiment of Plan A and Plan F.
+
+The directories irace_files_pA and irace_files_pA contain the scripts needing for calling irace for one experiment of Plan A and Plan F. [Look at the irace package : User Guide for more information]
+
+
+5. CONCLUSION
+
+For getting all the experiment data and the validation run data run run_exp.sh file first, after run_exp.sh file finished to execute and there is all the data in the dataFAR (ie : in the cluster, all the jobs finished to execute) run_res.sh data.
+
+Warning : run_exp.sh may take few days or few weeks depending on the Budget you ask, do not run_res.sh if in dataFAR there are data which are not finished to execute in the cluster, or jobs killed. Do not forget to remove directories of plan which are not complete.
+
+
+
+
+
+
diff --git a/eo/contrib/irace/expe/beta/run_exp.sh b/eo/contrib/irace/expe/beta/run_exp.sh
index 2688709f8..c3669a1c7 100644
--- a/eo/contrib/irace/expe/beta/run_exp.sh
+++ b/eo/contrib/irace/expe/beta/run_exp.sh
@@ -6,7 +6,7 @@ myhome=${HOME}
for exp in ${lexp[@]} ; do
for evals in ${levals[@]} ; do
bash ./planF/riaF.sh ${myhome} ${myscratchpath} ${exp} ${evals}
- bash ./planA/riaA.sh ${myhome} ${scratchpath} ${exp} ${evals}
+ bash ./planA/riaA.sh ${myhome} ${myscratchpath} ${exp} ${evals}
done
done
bash testrandom.sh ${myhome} ${scratchpath} ${levals[@]}
From 807be1b3c2683eee8a923d12f338e0cf37d94bc1 Mon Sep 17 00:00:00 2001
From: Alix ZHENG
Date: Tue, 7 Sep 2021 00:27:44 +0200
Subject: [PATCH 014/113] Add scripts for parsing and archive link
---
.../irace/expe/beta/best_out_of_elites.py | 86 +++++++
eo/contrib/irace/expe/beta/csv_all.sh | 40 +++
eo/contrib/irace/expe/beta/csv_all_bests.sh | 2 +-
eo/contrib/irace/expe/beta/dist_op_random.py | 78 ++++++
.../irace/expe/beta/distribution_op_all.py | 87 +++++++
.../irace/expe/beta/fastga_elites_all.sh | 7 +-
eo/contrib/irace/expe/beta/hist_all.sh | 34 +++
eo/contrib/irace/expe/beta/hist_by_FARO.py | 71 ++++++
eo/contrib/irace/expe/beta/hist_by_FARO_pb.py | 88 +++++++
.../irace/expe/beta/hist_by_pb_budget_plan.py | 90 +++++++
eo/contrib/irace/expe/beta/hist_join.py | 68 ++++++
.../irace/expe/beta/hist_join_random.py | 46 ++++
.../expe/beta/irace_files_pA/forbidden.txt | 13 +
.../expe/beta/irace_files_pF/forbidden.txt | 15 ++
.../beta/irace_files_pO/default.instances | 48 ++++
.../expe/beta/irace_files_pO/example.scen | 228 ++++++++++++++++++
.../expe/beta/irace_files_pO/fastga.param | 10 +
.../expe/beta/irace_files_pO/target-runner | 88 +++++++
eo/contrib/irace/expe/beta/mwtestU.py | 140 +++++++++++
.../irace/expe/beta/parseO_irace_bests.py | 35 +++
.../irace/expe/beta/parse_auc_average.py | 34 +++
eo/contrib/irace/expe/beta/planA/riaA.sh | 2 +-
eo/contrib/irace/expe/beta/planF/riaF.sh | 2 +-
eo/contrib/irace/expe/beta/planO/r_iO.sh | 43 ++++
eo/contrib/irace/expe/beta/planO/riaO.sh | 23 ++
eo/contrib/irace/expe/beta/readme.txt | 84 ++++++-
.../irace/expe/beta/rep_std_mean_selected.py | 55 +++++
.../irace/expe/beta/run_elites_planO.sh | 64 +++++
eo/contrib/irace/expe/beta/run_exp.sh | 5 +-
eo/contrib/irace/expe/beta/run_res.sh | 2 +-
30 files changed, 1570 insertions(+), 18 deletions(-)
create mode 100755 eo/contrib/irace/expe/beta/best_out_of_elites.py
create mode 100755 eo/contrib/irace/expe/beta/csv_all.sh
create mode 100755 eo/contrib/irace/expe/beta/dist_op_random.py
create mode 100755 eo/contrib/irace/expe/beta/distribution_op_all.py
create mode 100755 eo/contrib/irace/expe/beta/hist_all.sh
create mode 100755 eo/contrib/irace/expe/beta/hist_by_FARO.py
create mode 100755 eo/contrib/irace/expe/beta/hist_by_FARO_pb.py
create mode 100755 eo/contrib/irace/expe/beta/hist_by_pb_budget_plan.py
create mode 100755 eo/contrib/irace/expe/beta/hist_join.py
create mode 100755 eo/contrib/irace/expe/beta/hist_join_random.py
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pA/forbidden.txt
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pF/forbidden.txt
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pO/default.instances
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pO/example.scen
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pO/fastga.param
create mode 100755 eo/contrib/irace/expe/beta/irace_files_pO/target-runner
create mode 100755 eo/contrib/irace/expe/beta/mwtestU.py
create mode 100755 eo/contrib/irace/expe/beta/parseO_irace_bests.py
create mode 100755 eo/contrib/irace/expe/beta/parse_auc_average.py
create mode 100755 eo/contrib/irace/expe/beta/planO/r_iO.sh
create mode 100755 eo/contrib/irace/expe/beta/planO/riaO.sh
create mode 100755 eo/contrib/irace/expe/beta/rep_std_mean_selected.py
create mode 100755 eo/contrib/irace/expe/beta/run_elites_planO.sh
diff --git a/eo/contrib/irace/expe/beta/best_out_of_elites.py b/eo/contrib/irace/expe/beta/best_out_of_elites.py
new file mode 100755
index 000000000..c6832bbe0
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/best_out_of_elites.py
@@ -0,0 +1,86 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+#cmd eg :
+#python3 best_out_of_elites.py ./fastga_results_all/fastga_results_planO/planO_maxExp=50000_maxEv=5n_2021-08-13T19:16+02:00_results_elites_all
+#python3 best_out_of_elites.py ./fastga_results_all/fastga_results_random/maxEv=10000_nbAlgo=15_2021-08-21T20:53+02:00_results_randoms
+
+
+#get the configuration of the best out of the elite
+# recommendation suggested by 15 independant runs of irace
+
+figdir=sys.argv[1] # directory of a result of one experiment
+#eg : ./fastga_results_all/fastga_results_plan1/plan1_maxExp\=100000_maxEv\=5n_2021-08-13T19\:04+02\:00_results_elites_all/
+#print(figdir.split('/')[-2], figdir.split('/'))
+if("plan" in figdir.split('/')[-2]):
+ print("Operator,","op. ,",",".join(map(str,range(1,20))))
+
+ column={"pc" : 101, "SelectC": 7, "Crossover" : 10, "pm": 101,"SelectM" : 7, "Mutation": 11, "Replacement" : 11, "pop-size": 50, "offspring-size" : 50}
+ nbparam=(len(os.listdir(os.path.join(figdir,"raw/data"))[0].split("_"))-1) #-1 car il y a le pb
+
+ if( nbparam "${myfig}/auc_average_${experiments}.csv"
+ #--------------distribution of operators by pb and for all pb only for plan A,F,O ------
+ #myfig=${figpath}/distribution_op_${plan}
+ #mkdir -p ${myfig}
+ #cmd="python3 distribution_op_all.py ${path} ${myfig} "
+ #$cmd
+ #--------------best out csv--------
+ cmd="python3 best_out_of_elites.py ${path}"
+ myfig=${figpath}/best_out_${plan}
+ mkdir -p ${myfig}
+ $cmd > ${myfig}/best_out_all_pb_${experiments}.csv
+ echo ${cmd}
+
+ done
+done
+
+#---------------distribution of operators of randoma algo------------------
+#rpath=${ldata}/fastga_results_random
+#cmd="python3 dist_op_random.py ${rpath} ${figpath}"
+#$cmd
+#---------------random---------------
\ No newline at end of file
diff --git a/eo/contrib/irace/expe/beta/csv_all_bests.sh b/eo/contrib/irace/expe/beta/csv_all_bests.sh
index 3f0fb3652..fb7926faf 100755
--- a/eo/contrib/irace/expe/beta/csv_all_bests.sh
+++ b/eo/contrib/irace/expe/beta/csv_all_bests.sh
@@ -1,7 +1,7 @@
#!/bin/bash
ldata=$1
file_py=$2
-csvdir="csv_FA"
+csvdir="csv_FAO"
ldir=$(echo $(ls ${ldata}))
for data in ${ldir[@]} ; do
path="${ldata}/${data}"
diff --git a/eo/contrib/irace/expe/beta/dist_op_random.py b/eo/contrib/irace/expe/beta/dist_op_random.py
new file mode 100755
index 000000000..b7056cbd2
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/dist_op_random.py
@@ -0,0 +1,78 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+
+#cmd eg : python3 ./dist_op_random.py ./fastga_results_all/fastga_results_random/ ./hist_and_csv/
+#get the distribution of operators variants recommended by 15 random algo for each maxEv
+#pc and pm 10 possibilities : [0-0.1[ [0.1-0.2[ [0.2-0.3[ [0.3-0.4[ [0-0.5[ [0.5-0.6[ ...[0.9-1[
+#pop-size and offspring-size 10 possibilities : 0-5 5-10, 10-15 15-20 20-25 25-30 30-35- 35-40 40-45 45-50
+
+path=sys.argv[1] # directory of a result of one experiment
+#eg : ./fastga_results_all/fastga_results_random/
+figdir=sys.argv[2] #directory of where you want to store the data
+if("random" in path):
+ #column : [operator : nbpossibilities]
+ distdir=figdir+"/distribution_random"
+ try:
+ os.makedirs(distdir)
+ except FileExistsError:
+ pass
+
+ nbparam=9 #-1 car il y a le pb
+
+ res=[]
+
+ for maxEvdir in os.listdir(path):
+ res.append({"crossover-rate":["pc" , np.zeros(10, dtype=int)],
+ "cross-selector":["SelectC", np.zeros(7, dtype=int)],
+ "crossover":["Crossover" , np.zeros(10, dtype=int)],
+ "mutation-rate":["pm",np.zeros(10, dtype=int)],
+ "mut-selector":["SelectM",np.zeros(10, dtype=int)],
+ "mutation":["Mutation", np.zeros(11, dtype=int)],
+ "replacement":["Replacement" , np.zeros(11, dtype=int)],
+ "pop-size":["pop-size", np.zeros(10, dtype=int)],
+ "offspring-size":["offspring-size" , np.zeros(10, dtype=int)]})
+ for algodir in os.listdir(os.path.join(path,maxEvdir)): #fastgadir : directory of 50 runs of an elite configuration
+ algo=algodir.split("_")
+ for param in algo:
+ name,val=param.split("=")[0],float(param.split("=")[1])
+ if(name in {"pop-size" ,"offspring-size"}):
+ if(val%5==0):
+ res[-1][name][1][int(val//5) -1]+=1
+ else:
+ #print(res[-1][name][1],val//5)
+ res[-1][name][1][int(val//5)]+=1
+
+ elif(name in {"crossover-rate","mutation-rate"} ):
+ if(int(val*10)==10): #case of val=1
+ res[-1][name][1][-1]+=1
+ else :
+ #print(int(float(val)*10), name,pb,val)
+ res[-1][name][1][int(val*10)]+=1
+ else :
+ res[-1][name][1][int(val)]+=1
+
+
+ ind=0
+ for maxEvdir in os.listdir(path):
+ name="distribution_random_"+maxEvdir.split("_")[0]+".csv" #the end of the path must be /
+ with open(os.path.join(distdir,name),"w+") as csvfile:
+ csvfile.write("Op index, "+",".join(map(str,range(0,11)))+"\n")
+ with open(os.path.join(distdir,name),"a") as csvfile:
+ for param_name in res[ind].keys():
+ #print(map(str,res[ind]),res[ind], ",".join(map(str,res[ind])))
+ csvfile.write(res[ind][param_name][0]+","+ ",".join(map(str,res[ind][param_name][1]))+",-"*(11-len(res[ind][param_name][1])) +"\n")
+ #print(str(i)+",",",".join(map(str,np.mean(aucs[i],1))))
+ ind+=1
+ #all problems
+ name ="distribution_all_random_"+path.split("/")[-1]+".csv"
+ with open(os.path.join(distdir,name),'w+') as csvfile:
+ csvfile.write("Op index, "+",".join(map(str,range(0,11)))+"\n")
+
+ with open(os.path.join(distdir,name),'a') as csvfile:
+ for param_name in res[0].keys():
+ #print(map(str,res[ind]),res[ind], ",".join(map(str,res[ind])))
+ csvfile.write(res[0][param_name][0]+","+ ",".join(map(str,np.sum([res[i][param_name][1] for i in range(ind-1)],0)))+",-"*(11-len(res[0][param_name][1])) +"\n") #res[0] only for getting the name of parameters
+ #print(str(i)+",",",".join(map(str,np.mean(aucs[i],1))))
\ No newline at end of file
diff --git a/eo/contrib/irace/expe/beta/distribution_op_all.py b/eo/contrib/irace/expe/beta/distribution_op_all.py
new file mode 100755
index 000000000..b2843c68b
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/distribution_op_all.py
@@ -0,0 +1,87 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+
+#get the distribution of operators variants recommended by 15 runs of irace for all problems and each problem
+#also get an csv file
+#pc and pm 10 possibilities : [0-0.1[ [0.1-0.2[ [0.2-0.3[ [0.3-0.4[ [0-0.5[ [0.5-0.6[ ...[0.9-1[
+#pop-size and offspring-size 10 possibilities : 0-5 5-10, 10-15 15-20 20-25 25-30 30-35- 35-40 40-45 45-50
+
+path=sys.argv[1] # directory of a result of one experiment
+#eg : ./fastga_results_all/fastga_results_planO/planO_maxExp\=100000_maxEv\=5n_2021-08-13T19\:04+02\:00_results_elites_all/
+
+if("fastga_results_plan" in path):
+ #column : [operator : nbpossibilities]
+ distdir=sys.argv[2]
+ try:
+ os.makedirs(distdir)
+ except FileExistsError:
+ pass
+
+ nbparam=(len(os.listdir(os.path.join(path,"raw/data"))[0].split("_"))-1)
+
+ if( nbparam==7):
+ res=[{"crossover-rate":["pc" , np.zeros(10, dtype=int)],
+ "cross-selector":["SelectC", np.zeros(7, dtype=int)],
+ "crossover":["Crossover" , np.zeros(10, dtype=int)],
+ "mutation-rate":["pm",np.zeros(10, dtype=int)],
+ "mut-selector":["SelectM",np.zeros(7, dtype=int)],
+ "mutation":["Mutation", np.zeros(11, dtype=int)],
+ "replacement":["Replacement" ,np.zeros(11, dtype=int)]} for i in range(19)]
+ else:
+ res=[{"crossover-rate":["pc" , np.zeros(10, dtype=int)],
+ "cross-selector":["SelectC", np.zeros(7, dtype=int)],
+ "crossover":["Crossover" , np.zeros(10, dtype=int)],
+ "mutation-rate":["pm",np.zeros(10, dtype=int)],
+ "mut-selector":["SelectM",np.zeros(7, dtype=int)],
+ "mutation":["Mutation", np.zeros(11, dtype=int)],
+ "replacement":["Replacement" , np.zeros(11, dtype=int)],
+ "pop-size":["pop-size", np.zeros(10, dtype=int)],
+ "offspring-size":["offspring-size" , np.zeros(10, dtype=int)]} for i in range(19)]
+
+
+ for fastgadir in os.listdir(os.path.join(path,"raw/data")): #fastgadir : directory of 50 runs of an elite configuration
+ algo=fastgadir.split("_")
+ pb=int(fastgadir.split("_")[0].split("=")[1])
+ for param in algo[1:]:
+ name,val=param.split("=")[0],float(param.split("=")[1])
+ if(name in {"pop-size" ,"offspring-size"}):
+ if(val%5==0):
+ res[pb][name][1][int(val//5) -1]+=1
+ else:
+ #print(res[pb][name][1],val//5)
+ res[pb][name][1][int(val//5)]+=1
+
+ elif(name in {"crossover-rate","mutation-rate"} ):
+ if(int(val*10)==10): #case of val=1
+ res[pb][name][1][-1]+=1
+ else :
+ #print(int(float(val)*10), name,pb,val)
+ res[pb][name][1][int(val*10)]+=1
+ else :
+ res[pb][name][1][int(val)]+=1
+
+
+
+ for pb in range(19):
+ name="distribution_pb="+str(pb)+"_"+path.split("/")[-2]+".csv" #the end of the path must be /
+ with open(os.path.join(distdir,name),"w+") as csvfile:
+ csvfile.write("Op index, "+",".join(map(str,range(0,11)))+"\n")
+ with open(os.path.join(distdir,name),"a") as csvfile:
+ for param_name in res[pb].keys():
+ #print(map(str,res[ind]),res[ind], ",".join(map(str,res[ind])))
+ csvfile.write(res[pb][param_name][0]+","+ ",".join(map(str,res[pb][param_name][1]))+",-"*(11-len(res[pb][param_name][1])) +"\n")
+ #print(str(i)+",",",".join(map(str,np.mean(aucs[i],1))))
+
+ #all problems
+ name ="distribution_all_pb_"+path.split("/")[-1]+".csv"
+ with open(os.path.join(path,"raw",name),'w+') as csvfile:
+ csvfile.write("Op index, "+",".join(map(str,range(0,11)))+"\n")
+
+ with open(os.path.join(path,"raw",name),'a') as csvfile:
+ for param_name in res[0].keys():
+ #print(map(str,res[ind]),res[ind], ",".join(map(str,res[ind])))
+ csvfile.write(res[0][param_name][0]+","+ ",".join(map(str,np.sum([res[i][param_name][1] for i in range(19)],0)))+",-"*(11-len(res[0][param_name][1])) +"\n") #res[0] only for getting the name of parameters
+ #print(str(i)+",",",".join(map(str,np.mean(aucs[i],1))))
\ No newline at end of file
diff --git a/eo/contrib/irace/expe/beta/fastga_elites_all.sh b/eo/contrib/irace/expe/beta/fastga_elites_all.sh
index a53eb189d..42f6c0453 100644
--- a/eo/contrib/irace/expe/beta/fastga_elites_all.sh
+++ b/eo/contrib/irace/expe/beta/fastga_elites_all.sh
@@ -1,15 +1,16 @@
#!/bin/bash
-ldata=$1 # eg : ./csv_planF/ don t forget to end the path with /
-file_sh=$2 #eg : ./run_elites_planF
+ldata=$1
+file_sh=$2
ldir=$(echo $(ls ${ldata}))
fastga_dir="fastga_results_all"
mkdir -p /scratchbeta/${USER}/${fatga_dir}
#mkdir -p "/home/${USER}/${fastga_dir}/fastga_results_plan1"
mkdir -p "/scratchbeta/${USER}/${fastga_dir}/fastga_results_planF"
mkdir -p "/scratchbeta/${USER}/${fastga_dir}/fastga_results_planA"
+mkdir -p "/scratchbeta/${USER}/${fastga_dir}/fastga_results_planO"
for data in ${ldir[@]} ; do
- path_csv="${ldata}${data}"
+ path_csv="${ldata}/${data}"
plan_name=$(echo ${data} | sed "s/results_irace_plan//")
mexp=$(echo ${data[@]} | cut -d _ -f4)
mexp_id=$(echo ${mexp} | cut -d = -f2)
diff --git a/eo/contrib/irace/expe/beta/hist_all.sh b/eo/contrib/irace/expe/beta/hist_all.sh
new file mode 100755
index 000000000..89ffe932d
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/hist_all.sh
@@ -0,0 +1,34 @@
+#!/bin/bash
+
+ldata="./fastga_results_all" #fastga_results_all
+figpath="./hist_and_csv" #hist_and_csv
+
+ldir=$(echo $(ls ${ldata})) #list of directory of each plan
+for plan in ${ldir[@]} ; do #get the directory of each plan
+ #------------hist by budget of a Plan (O,R or F)
+ #path="${ldata}/${plan}"
+ #cmd="python3 hist_join.py ${path} ${figpath}"
+ #echo $cmd
+ #$cmd
+
+ #---------------------------hist by pb by budget---------------
+ path="${ldata}/${plan}"
+ cmd="python3 hist_by_pb_budget_plan.py ${path} ${figpath}"
+ echo $cmd
+ $cmd
+done
+
+#---------------random------------------
+#rpath=${ldata}/fastga_results_random
+#cmd="python3 hist_join_random.py ${rpath} ${figpath}"
+#---------------random---------------
+
+#--------------------Choose a Budget irace and a budget fastga
+mexp=100000
+mevals=1000
+#-------------------histogram join each plan F,A,R,O and join all algorithms for the budget chosen
+cmd="python3 hist_by_FARO.py ${ldata} ${figdir} ${mexp} ${mevals}"
+$cmd
+#-------------------histogram by pb join each plan F,A,R,O and join all algorithms for the budget chosen
+cmd="python3 hist_by_FARO_pb.py ${ldata} ${figdir} ${mexp} ${mevals}"
+$cmd
diff --git a/eo/contrib/irace/expe/beta/hist_by_FARO.py b/eo/contrib/irace/expe/beta/hist_by_FARO.py
new file mode 100755
index 000000000..bc6ae3ccc
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/hist_by_FARO.py
@@ -0,0 +1,71 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+from scipy.stats import mannwhitneyu
+
+##python3 hist_by_FARO.py ./fastga_results_all/ ./hist_and_csv/ 100000 1000
+#one plot for one experiment plan for the same budget fastga, and the same budget irace if there is a budget irace (A,F)
+path=sys.argv[1]
+figpath=sys.argv[2]
+maxExp=sys.argv[3]
+maxEv=sys.argv[4]
+
+indF=-1
+indFO=-1
+averageConfigs=[]
+name=[]
+for fastga in os.listdir(path): #ddir : directory of fastga_plan
+ if(fastga in {"fastga_results_planA","fastga_results_planF","fastga_results_planO"}):
+ for plan in os.listdir(os.path.join(path,fastga)):
+ print("maxExp="+str(maxExp)+"_maxEv="+str(maxEv) in plan,plan,"maxExp="+str(maxExp)+"_maxEv="+str(maxEv))
+ if("maxExp="+str(maxExp)+"_maxEv="+str(maxEv) in plan):
+ average=[]
+
+ for fastgadir in os.listdir(os.path.join(path,fastga,plan,"raw","data")): #fastgadir : directory of 50 runs of a configuration
+ for fname in os.listdir(os.path.join(path,fastga,plan,"raw","data",fastgadir)):
+ with open(os.path.join(path,fastga,plan,"raw","data",fastgadir,fname)) as fd:
+ auc = float(fd.readlines()[0]) *(-1)
+ average.append(auc)
+ averageConfigs.append(average)
+ nameid=plan.split("_")[0][-1]
+ name.append("plan"+nameid+"_"+"_".join(plan.split("_")[1:3]))
+ if("random" in fastga):
+ for randir in os.listdir(os.path.join(path,fastga)):
+ #eg path: maxEv=100_nbAlgo=15_2021-08-20T1511+0200_results_randoms
+ average=[]
+ if("maxEv="+str(maxEv)+"_" in randir):
+ for ddir in os.listdir(os.path.join(path,fastga,randir)): #ddir : directory of one run_elites_all or more
+ if("crossover" in ddir):
+ #name.append("_".join(ddir.split("_")[1:3]))
+ for fastgadir in os.listdir(os.path.join(path,fastga,randir,ddir,"data")): #fastgadir : directory of 50 runs of a configuration
+ for fname in os.listdir(os.path.join(path,fastga,randir,ddir,"data",fastgadir)):
+ with open(os.path.join(path,fastga,randir,ddir,"data",fastgadir,fname)) as fd:
+ auc = float(fd.readlines()[0]) *(-1)
+ average.append(auc)
+ #hist[belonging(auc,cum)]+=1
+ averageConfigs.append(average)
+ name.append(randir.split("_")[0]+"_random")
+
+
+figdir=os.path.join(figpath,"hist_FARO_by_budget")
+try:
+ os.makedirs(figdir)
+except FileExistsError:
+ pass
+
+#_,pv=mannwhitneyu(averageConfigs[indFO],averageConfigs[indF])
+#print(name,len(averageConfigs))
+plt.figure()
+plt.hist(averageConfigs,bins=10,range=(0,1),align="mid",rwidth=0.9,label=name) #no label
+plt.xlabel("performances")
+plt.ylabel("Number of runs")
+plt.xlim(0,1)
+plt.ylim(0,8000)
+plt.yticks(range(0,8000,500))
+#plt.title("pvalue="+str(pv)+"\n medianeF="+str(np.median(averageConfigs[indF]))+", medianeFO="+str(np.median(averageConfigs[indFO])))
+plt.legend()
+plt.savefig(figdir+"/hist_planFARO"+"_maxExp="+str(maxExp)+"_maxEv="+str(maxEv)+".png")
+plt.close()
+
\ No newline at end of file
diff --git a/eo/contrib/irace/expe/beta/hist_by_FARO_pb.py b/eo/contrib/irace/expe/beta/hist_by_FARO_pb.py
new file mode 100755
index 000000000..70eb971cf
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/hist_by_FARO_pb.py
@@ -0,0 +1,88 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+
+##python3 hist_by_FARO_pb.py ./fastga_results_all/ ./hist_and_csv/ 100000 1000
+#19 histograms by plan F,A ,R O
+path=sys.argv[1]
+figpath=sys.argv[2]
+maxExp=sys.argv[3]
+maxEv=sys.argv[4]
+
+hist_pb=[[] for i in range(19)]
+name=[]
+for fastga in os.listdir(path): #ddir : directory of fastga_plan
+ if(fastga in {"fastga_results_planA", "fastga_results_planF","fastga_results_planO"}):
+ for plan in os.listdir(os.path.join(path,fastga)):
+ #print("maxExp="+str(maxExp)+"_maxEv="+str(maxEv)+"_" in plan,plan,"maxExp="+str(maxExp)+"_maxEv="+str(maxEv))
+ #print("maxExp="+str(maxExp)+"_maxEv="+str(maxEv) in plan,plan,"maxExp="+str(maxExp)+"_maxEv="+str(maxEv))
+ if("maxExp="+str(maxExp)+"_maxEv="+str(maxEv)+"_" in plan):
+ nameid=fastga[-1]
+ name.append("plan"+nameid+"_".join(plan.split("_")[1:3]))
+ for fastgadir in os.listdir(os.path.join(path,fastga,plan,"raw","data")): #fastgadir : directory of 50 runs of a configuration
+ pb=int(fastgadir.split("_")[0].split("=")[1])
+ average_pb=[]
+ for fname in os.listdir(os.path.join(path,fastga,plan,"raw","data",fastgadir)):
+ with open(os.path.join(path,fastga,plan,"raw","data",fastgadir,fname)) as fd:
+ auc = float(fd.readlines()[0]) *(-1)
+ average_pb.append(auc)
+ if(hist_pb[pb]==[]): #first algo
+ hist_pb[pb].append(average_pb)
+ elif(len(hist_pb[pb])!=len(name)):
+ hist_pb[pb].append(average_pb)
+ else:
+ hist_pb[pb][len(name)-1]+=average_pb #another algo for the same plan
+
+ if("random" in fastga):
+ for randir in os.listdir(os.path.join(path,fastga)):
+ #eg path: maxEv=100_nbAlgo=15_2021-08-20T1511+0200_results_randoms
+ if(("maxEv="+str(maxEv)+"_") in randir):
+ #print("maxEv="+str(maxEv) in randir,randir)
+ name.append(randir.split("_")[0]+"_random")
+ for ddir in os.listdir(os.path.join(path,fastga,randir)): #ddir : directory of one run_elites_all or more
+ if("crossover" in ddir):
+ #name.append("_".join(ddir.split("_")[1:3]))
+ for fastgadir in os.listdir(os.path.join(path,fastga,randir,ddir,"data")): #fastgadir : directory of 50 runs of a configuration
+ average_pb=[]
+ pb=int(fastgadir.split("_")[0].split("=")[1])
+ for fname in os.listdir(os.path.join(path,fastga,randir,ddir,"data",fastgadir)):
+ with open(os.path.join(path,fastga,randir,ddir,"data",fastgadir,fname)) as fd:
+ auc = float(fd.readlines()[0]) *(-1)
+ average_pb.append(auc)
+ #print(len(hist_pb[pb]),len(name), pb)
+ if(hist_pb[pb]==[]): #first algo
+ #print("entrer random vide")
+ hist_pb[pb].append(average_pb)
+ elif(len(hist_pb[pb])!=len(name)):
+ #print("entrer random !=")
+ hist_pb[pb].append(average_pb)
+ else:
+ hist_pb[pb][len(name)-1]+=average_pb #another algo for the same plan
+
+
+figdir=os.path.join(figpath,"hist_by_FARO_pb_maxExp={}_maxEv={}".format(maxExp,maxEv))
+try:
+ os.makedirs(figdir)
+except FileExistsError:
+ pass
+#colors=['yellow', 'green',"blue","pink","purple","orange","magenta","gray","darkred","cyan","brown","olivedrab","thistle","stateblue"]
+print(name)
+for pb in range(19):
+ print(pb, len(hist_pb[pb]))
+ for i in hist_pb[pb]:
+ print(len(i))
+ plt.figure()
+ plt.hist(hist_pb[pb],bins=10,range=(0,1),align="mid",rwidth=0.9,edgecolor="red",label=name) #no label color=colors[:len(name)]
+ #for aucs in range(len(hist_pb[pb])):
+ #plt.hist(hist_pb[pb][aucs],bins=10,range=(0,1),align="mid",rwidth=0.9,edgecolor="red",label=name[aucs]) #no label
+ plt.xlabel("performances")
+ plt.ylabel("Number of runs")
+ plt.ylim(0,800)
+ plt.xlim(0,1)
+ plt.yticks(range(0,800,50))
+ #plt.xticks(np.cumsum([0.1]*10))
+ plt.legend()
+ plt.savefig(figdir+"/hist_FARO_pb={}_maxExp={}_maxEv={}.png".format(pb,maxExp,maxEv))
+ plt.close()
\ No newline at end of file
diff --git a/eo/contrib/irace/expe/beta/hist_by_pb_budget_plan.py b/eo/contrib/irace/expe/beta/hist_by_pb_budget_plan.py
new file mode 100755
index 000000000..a91d15e87
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/hist_by_pb_budget_plan.py
@@ -0,0 +1,90 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+
+# python3 hist_by_pb_budget_plan.py ./fastga_results_all/fastga_results_planF/ ./hist_and_csv/
+#python3 hist_by_pb_budget_plan.py ./fastga_results_all/fastga_results_planO ./hist_and_csv
+#get 19 histograms with number of budget bars, same as hist_join but now is by pb
+
+#argv : list of elite results
+path=sys.argv[1]
+figpath=sys.argv[2]
+#plan_name=sys.argv[3]
+hist_pb=[[] for i in range(19)]
+name=[]
+if("random" in path):
+ plan_name="R"
+else:
+ plan_name=path.strip("/").split("/")[-1][-1]
+
+
+for plandir in os.listdir(path): #plandir: directory of an experiment of elite results
+ if("results_elites_all" in plandir):
+ #eg : plan2_maxExp=10000_maxEv=1000_2021-08-20T1347+0200_results_elites_all
+ budget_irace=plandir.split("_")[1].split("=")[1]
+ budget_fastga=plandir.split("_")[2].split("=")[1]
+ name.append("plan="+plan_name+"_"+"".join(plandir.split("_")[1:3])) #plan=*_maxExp=*_maxEv=*
+
+ for algodir in os.listdir(os.path.join(path,plandir,"raw","data")):
+ average_pb=[]
+ pb=int(algodir.split("_")[0].split("=")[1])
+ for algo in os.listdir(os.path.join(path,plandir,"raw","data",algodir)):
+ with open(os.path.join(path,plandir,"raw","data",algodir,algo)) as fd:
+ auc = float(fd.readlines()[0]) *(-1)
+ average_pb.append(auc)
+ if(hist_pb[pb]==[]): #first algo
+ hist_pb[pb].append(average_pb)
+ elif(len(hist_pb[pb])!=len(name)):
+ hist_pb[pb].append(average_pb)
+ else:
+ hist_pb[pb][len(name)-1]+=average_pb #another algo for the same plan
+
+ if("results_randoms" in plandir):
+ #eg : maxEv=1000_2021-08-20T1347+0200_results_random
+ budget_fastga=plandir.split("_")[0].split("=")[1]
+ name.append("plan="+plan_name+"_"+"".join(plandir.split("_")[0])) #plan=*_maxExp=*_maxEv=*
+ for algodir in os.listdir(os.path.join(path,plandir)):
+
+ for algo in os.listdir(os.path.join(path,plandir,algodir,"data")):
+ pb=int(algo.split("_")[0].split("=")[1])
+ average_pb=[]
+ for fname in os.listdir(os.path.join(path,plandir,algodir,"data",algo)):
+ with open(os.path.join(path,plandir,algodir,"data",algo,fname)) as fd:
+ auc = float(fd.readlines()[0]) *(-1)
+ average_pb.append(auc)
+ if(hist_pb[pb]==[]): #first algo
+ print("entrer")
+ hist_pb[pb].append(average_pb)
+ elif(len(hist_pb[pb])!=len(name)):
+ hist_pb[pb].append(average_pb)
+ else:
+ hist_pb[pb][len(name)-1]+=average_pb #another algo for the same plan
+
+
+
+print(path.split("/")[-1][-1])
+
+figdir=os.path.join(figpath,"hist_by_{}_pb_budget_plan".format(plan_name))
+#figdir=os.path.join(figpath,"hist_by_{}_pb_irace_maxEv={}".format(plan_name,1000))
+try:
+ os.makedirs(figdir)
+except FileExistsError:
+ pass
+
+
+for pb in range(19):
+ print(pb, len(hist_pb[pb]))
+ plt.figure()
+ plt.hist(hist_pb[pb],bins=10,range=(0,1),align="mid",rwidth=0.9,edgecolor="red",label=name) #no label color=colors[:len(name)]
+ #for aucs in range(len(hist_pb[pb])):
+ #plt.hist(hist_pb[pb][aucs],bins=10,range=(0,1),align="mid",rwidth=0.9,edgecolor="red",label=name[aucs]) #no label
+ plt.xlabel("performances")
+ plt.ylabel("Number of runs")
+ plt.ylim(0,750)
+ plt.yticks(range(0,750,50))
+ plt.xlim(0,1)
+ plt.legend()
+ plt.savefig(figdir+"/hist_plan={}_pb={}_budget.png".format(plan_name,pb))
+ plt.close()
\ No newline at end of file
diff --git a/eo/contrib/irace/expe/beta/hist_join.py b/eo/contrib/irace/expe/beta/hist_join.py
new file mode 100755
index 000000000..4ba2d9e13
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/hist_join.py
@@ -0,0 +1,68 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+from scipy.stats import mannwhitneyu
+
+#cmd : python3 hist_join.py ./fastga_results_all/fastga_results_planO/ ./hist_and_csv/
+#histogram by plan for the budgets (irace and fastag)
+
+
+path=sys.argv[1] #argv : directory of a Plan (O, A, F)
+figpath=sys.argv[2] #path to store the histograms
+averageConfigs=[]
+name=[]
+if("fastga_results_plan" in path):
+ for ddir in os.listdir(path): #ddir : directory of one run_elites_all or more
+ if("plan" in ddir):
+ average=[]
+ name.append("_".join(ddir.split("_")[1:3]))
+ for fastgadir in os.listdir(os.path.join(path,ddir,"raw","data")): #fastgadir : directory of 50 runs of a configuration
+ for fname in os.listdir(os.path.join(path,ddir,"raw","data",fastgadir)):
+ with open(os.path.join(path,ddir,"raw","data",fastgadir,fname)) as fd:
+ auc = float(fd.readlines()[0]) *(-1)
+ average.append(auc)
+ #hist[belonging(auc,cum)]+=1
+ averageConfigs.append(average)
+ #print(hist)
+ #print(average)
+
+ figdir=os.path.join(figpath,"hist_join")
+ try:
+ os.makedirs(figdir)
+ except FileExistsError:
+ pass
+
+
+ print(name,len(averageConfigs))
+
+ """
+ idd0=name[0].split("_")[0].split("=")[1][:-3]+"k"
+ idd1=name[1].split("_")[0].split("=")[1][:-3]+"k"
+ idd2=name[2].split("_")[0].split("=")[1][:-3]+"k"
+
+ #only for Budget irace 10000, 50000, 100000 ie: only three experiment results
+ titlename="median"+idd0+"={:.3f}".format(np.median(averageConfigs[0]))+" , median"+idd1+"={:.3f}".format(np.median(averageConfigs[1]))+" , median"+idd2+"={:.3f}".format(np.median(averageConfigs[2]))
+ _,pv=mannwhitneyu(averageConfigs[0],averageConfigs[1])
+ titlename+="\n pvalue{}={:.3f}".format(idd0+idd1,pv)
+ _,pv=mannwhitneyu(averageConfigs[0],averageConfigs[2])
+ titlename+=" ,pvalue{}={:.3f}".format(idd0+idd2,pv)
+ _,pv=mannwhitneyu(averageConfigs[1],averageConfigs[2])
+ titlename+=" ,pvalue{}={:.3f}".format(idd1+idd2,pv)
+ print(titlename)
+ """
+ plt.figure()
+ plt.hist(averageConfigs,bins=10,range=(0,1),align="mid",rwidth=0.9,label=name) #no label
+ plt.xlabel("performances")
+ plt.ylabel("Number of runs")
+ plt.xlim(0,1)
+ plt.ylim(0,7000)
+ plt.yticks(range(0,7000,500))
+ #plt.title(titlename)
+ plt.legend()
+ plt.savefig(figdir+"/hist_plan"+path.strip("/")[-1]+"_by_budget.png")
+ #plt.savefig(figpath+"/hist_plan"+path.strip("/")[-1]+"_by_budgetI.png")
+ plt.close()
+
+
diff --git a/eo/contrib/irace/expe/beta/hist_join_random.py b/eo/contrib/irace/expe/beta/hist_join_random.py
new file mode 100755
index 000000000..0b5d3c7d4
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/hist_join_random.py
@@ -0,0 +1,46 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+
+##python3 hist_random.py ./dastga_results_all/fastga_results_random ./hist_and_csv/
+#argv : list of elite results
+data=sys.argv[1]
+figpath=sys.argv[2]
+averageConfigs=[]
+name=[]
+for path in os.listdir(data):
+ #eg path: maxEv=100_nbAlgo=15_2021-08-20T1511+0200_results_randoms
+ average=[]
+ if("maxEv" in path):
+ for ddir in os.listdir(os.path.join(data,path)): #ddir : directory of one run_elites_all or more
+ if("crossover" in ddir):
+ #name.append("_".join(ddir.split("_")[1:3]))
+ for fastgadir in os.listdir(os.path.join(data,path,ddir,"data")): #fastgadir : directory of 50 runs of a configuration
+ for fname in os.listdir(os.path.join(data,path,ddir,"data",fastgadir)):
+ with open(os.path.join(data,path,ddir,"data",fastgadir,fname)) as fd:
+ auc = float(fd.readlines()[0]) *(-1)
+ average.append(auc)
+ #hist[belonging(auc,cum)]+=1
+ averageConfigs.append(average)
+ name.append(path.split("_")[0])
+
+figdir=os.path.join(figpath,"hist_join")
+try:
+ os.makedirs(figdir)
+except FileExistsError:
+ pass
+
+colors=['yellow', 'green',"blue","pink","purple","orange","magenta","gray","darkred","cyan","brown","olivedrab","thistle","stateblue"]
+plt.figure()
+plt.hist(averageConfigs,bins=10,range=(0,1),align="mid",rwidth=0.5,label=name) #no label
+plt.xlabel("performances")
+plt.ylabel("Number of runs")
+plt.ylim([0,8000])
+plt.xlim(0,1)
+plt.yticks(range(0,8000,500))
+#plt.xticks(np.cumsum([0.1]*10))
+plt.legend()
+plt.savefig(figdir+"/hist_random_by_budget.png")
+plt.close()
diff --git a/eo/contrib/irace/expe/beta/irace_files_pA/forbidden.txt b/eo/contrib/irace/expe/beta/irace_files_pA/forbidden.txt
new file mode 100755
index 000000000..56eb175cd
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pA/forbidden.txt
@@ -0,0 +1,13 @@
+## Template for specifying forbidden parameter configurations in irace.
+##
+## This filename must be specified via the --forbidden-file command-line option
+## (or forbiddenFile in scenario.txt).
+##
+## The format is one constraint per line. Each constraint is a logical
+## expression (in R syntax). If a parameter configuration
+## is generated that makes the logical expression evaluate to TRUE,
+## then the configuration is discarded.
+##
+## Examples of valid logical operators are: == != >= <= > < & | ! %in%
+(replacement %in% c(2,3,4,5,6,7,8,9,10)) & (offspringsize > popsize)
+(replacement %in% c(1)) & (offspringsize < popsize)
diff --git a/eo/contrib/irace/expe/beta/irace_files_pF/forbidden.txt b/eo/contrib/irace/expe/beta/irace_files_pF/forbidden.txt
new file mode 100755
index 000000000..86c8798e4
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pF/forbidden.txt
@@ -0,0 +1,15 @@
+## Template for specifying forbidden parameter configurations in irace.
+##
+## This filename must be specified via the --forbidden-file command-line option
+## (or forbiddenFile in scenario.txt).
+##
+## The format is one constraint per line. Each constraint is a logical
+## expression (in R syntax). If a parameter configuration
+## is generated that makes the logical expression evaluate to TRUE,
+## then the configuration is discarded.
+##
+## Examples of valid logical operators are: == != >= <= > < & | ! %in%
+(replacement %in% c(2,3,4,5,6,7,8,9,10)) & (offspringsize > popsize)
+(replacement %in% c(1)) & (offspringsize < popsize)
+#(as.numeric(replacement) == 2) & (offspringsize > popsize)
+#(as.numeric(replacement) == 3) & (offspringsize > popsize)
diff --git a/eo/contrib/irace/expe/beta/irace_files_pO/default.instances b/eo/contrib/irace/expe/beta/irace_files_pO/default.instances
new file mode 100755
index 000000000..a0a1adfc3
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pO/default.instances
@@ -0,0 +1,48 @@
+## This is an example of specifying instances with a file.
+
+# Each line is an instance relative to trainInstancesDir
+# (see scenario.txt.tmpl) and an optional sequence of instance-specific
+# parameters that will be passed to target-runnerx when invoked on that
+# instance.
+
+0
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+11
+12
+13
+14
+15
+16
+17
+18
+19
+20
+21
+22
+23
+24
+25
+26
+27
+28
+29
+30
+31
+32
+33
+34
+35
+36
+37
+38
+39
+40
diff --git a/eo/contrib/irace/expe/beta/irace_files_pO/example.scen b/eo/contrib/irace/expe/beta/irace_files_pO/example.scen
new file mode 100755
index 000000000..8b9447333
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pO/example.scen
@@ -0,0 +1,228 @@
+###################################################### -*- mode: r -*- #####
+## Scenario setup for Iterated Race (irace).
+############################################################################
+
+## To use the default value of a parameter of iRace, simply do not set
+## the parameter (comment it out in this file, and do not give any
+## value on the command line).
+
+## File that contains the description of the parameters of the target
+## algorithm.
+parameterFile = "./fastga.param"
+
+## Directory where the programs will be run.
+execDir = "."
+
+## File to save tuning results as an R dataset, either absolute path or
+## relative to execDir.
+# logFile = "./irace.Rdata"
+
+## Previously saved log file to recover the execution of irace, either
+## absolute path or relative to the current directory. If empty or NULL,
+## recovery is not performed.
+# recoveryFile = ""
+
+## Directory where training instances are located; either absolute path or
+## relative to current directory. If no trainInstancesFiles is provided,
+## all the files in trainInstancesDir will be listed as instances.
+trainInstancesDir = "."
+
+## File that contains a list of training instances and optionally
+## additional parameters for them. If trainInstancesDir is provided, irace
+## will search for the files in this folder.
+trainInstancesFile = "./default.instances"
+
+## File that contains a table of initial configurations. If empty or NULL,
+## all initial configurations are randomly generated.
+# configurationsFile = ""
+
+## File that contains a list of logical expressions that cannot be TRUE
+## for any evaluated configuration. If empty or NULL, do not use forbidden
+## expressions.
+# forbiddenFile = ""
+
+## Script called for each configuration that executes the target algorithm
+## to be tuned. See templates.
+targetRunner = "./target-runner"
+
+## Number of times to retry a call to targetRunner if the call failed.
+# targetRunnerRetries = 0
+
+## Optional data passed to targetRunner. This is ignored by the default
+## targetRunner function, but it may be used by custom targetRunner
+## functions to pass persistent data around.
+# targetRunnerData = ""
+
+## Optional R function to provide custom parallelization of targetRunner.
+# targetRunnerParallel = ""
+
+## Optional script or R function that provides a numeric value for each
+## configuration. See templates/target-evaluator.tmpl
+# targetEvaluator = ""
+
+## Maximum number of runs (invocations of targetRunner) that will be
+## performed. It determines the maximum budget of experiments for the
+## tuning.
+maxExperiments = 0 #100000
+
+
+## Maximum total execution time in seconds for the executions of
+## targetRunner. targetRunner must return two values: cost and time.
+# maxTime = 60
+
+## Fraction (smaller than 1) of the budget used to estimate the mean
+## computation time of a configuration. Only used when maxTime > 0
+# budgetEstimation = 0.02
+
+## Maximum number of decimal places that are significant for numerical
+## (real) parameters.
+digits = 2
+
+## Debug level of the output of irace. Set this to 0 to silence all debug
+## messages. Higher values provide more verbose debug messages.
+# debugLevel = 0
+
+## Number of iterations.
+# nbIterations = 0
+
+## Number of runs of the target algorithm per iteration.
+# nbExperimentsPerIteration = 0
+
+## Randomly sample the training instances or use them in the order given.
+# sampleInstances = 1
+
+## Statistical test used for elimination. Default test is always F-test
+## unless capping is enabled, in which case the default test is t-test.
+## Valid values are: F-test (Friedman test), t-test (pairwise t-tests with
+## no correction), t-test-bonferroni (t-test with Bonferroni's correction
+## for multiple comparisons), t-test-holm (t-test with Holm's correction
+## for multiple comparisons).
+# testType = "F-test"
+
+## Number of instances evaluated before the first elimination test. It
+## must be a multiple of eachTest.
+# firstTest = 5
+
+## Number of instances evaluated between elimination tests.
+# eachTest = 1
+
+## Minimum number of configurations needed to continue the execution of
+## each race (iteration).
+# minNbSurvival = 0
+
+## Number of configurations to be sampled and evaluated at each iteration.
+# nbConfigurations = 0
+
+## Parameter used to define the number of configurations sampled and
+## evaluated at each iteration.
+# mu = 5
+
+## Confidence level for the elimination test.
+# confidence = 0.95
+
+## If the target algorithm is deterministic, configurations will be
+## evaluated only once per instance.
+# deterministic = 0
+
+## Seed of the random number generator (by default, generate a random
+## seed).
+# seed = NA
+
+## Number of calls to targetRunner to execute in parallel. Values 0 or 1
+## mean no parallelization.
+# parallel = 0
+
+## Enable/disable load-balancing when executing experiments in parallel.
+## Load-balancing makes better use of computing resources, but increases
+## communication overhead. If this overhead is large, disabling
+## load-balancing may be faster.
+# loadBalancing = 1
+
+## Enable/disable MPI. Use Rmpi to execute targetRunner in parallel
+## (parameter parallel is the number of slaves).
+# mpi = 0
+
+## Specify how irace waits for jobs to finish when targetRunner submits
+## jobs to a batch cluster: sge, pbs, torque or slurm. targetRunner must
+## submit jobs to the cluster using, for example, qsub.
+# batchmode = 0
+
+## Enable/disable the soft restart strategy that avoids premature
+## convergence of the probabilistic model.
+# softRestart = 1
+
+## Soft restart threshold value for numerical parameters. If NA, NULL or
+## "", it is computed as 10^-digits.
+# softRestartThreshold = ""
+
+## Directory where testing instances are located, either absolute or
+## relative to current directory.
+# testInstancesDir = ""
+
+## File containing a list of test instances and optionally additional
+## parameters for them.
+# testInstancesFile = ""
+
+## Number of elite configurations returned by irace that will be tested if
+## test instances are provided.
+# testNbElites = 1
+
+## Enable/disable testing the elite configurations found at each
+## iteration.
+# testIterationElites = 0
+
+## Enable/disable elitist irace.
+# elitist = 1
+
+## Number of instances added to the execution list before previous
+## instances in elitist irace.
+# elitistNewInstances = 1
+
+## In elitist irace, maximum number per race of elimination tests that do
+## not eliminate a configuration. Use 0 for no limit.
+# elitistLimit = 2
+
+## User-defined R function that takes a configuration generated by irace
+## and repairs it.
+# repairConfiguration = ""
+
+## Enable the use of adaptive capping, a technique designed for minimizing
+## the computation time of configurations. This is only available when
+## elitist is active.
+# capping = 0
+
+## Measure used to obtain the execution bound from the performance of the
+## elite configurations: median, mean, worst, best.
+# cappingType = "median"
+
+## Method to calculate the mean performance of elite configurations:
+## candidate or instance.
+# boundType = "candidate"
+
+## Maximum execution bound for targetRunner. It must be specified when
+## capping is enabled.
+# boundMax = 0
+
+## Precision used for calculating the execution time. It must be specified
+## when capping is enabled.
+# boundDigits = 0
+
+## Penalization constant for timed out executions (executions that reach
+## boundMax execution time).
+# boundPar = 1
+
+## Replace the configuration cost of bounded executions with boundMax.
+# boundAsTimeout = 1
+
+## Percentage of the configuration budget used to perform a postselection
+## race of the best configurations of each iteration after the execution
+## of irace.
+# postselection = 0
+
+## Enable/disable AClib mode. This option enables compatibility with
+## GenericWrapper4AC as targetRunner script.
+# aclib = 0
+
+## END of scenario file
+############################################################################
+
diff --git a/eo/contrib/irace/expe/beta/irace_files_pO/fastga.param b/eo/contrib/irace/expe/beta/irace_files_pO/fastga.param
new file mode 100755
index 000000000..9f8c088f4
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pO/fastga.param
@@ -0,0 +1,10 @@
+# name switch type range
+# continuator "--continuator=" c (0)
+crossoverrate "--crossover-rate=" r (0,1)
+crossselector "--cross-selector=" c (0,1,2,3,4,5,6)
+# aftercrossselector "--aftercross-selector=" c (0)
+crossover "--crossover=" c (0,1,2,3,4,5,6,7,8,9)
+mutationrate "--mutation-rate=" r (0,1)
+mutselector "--mut-selector=" c (0,1,2,3,4,5,6)
+mutation "--mutation=" c (0,1,2,3,4,5,6,7,8,9,10)
+replacement "--replacement=" c (0,1,2,3,4,5,6,7,8,9,10)
diff --git a/eo/contrib/irace/expe/beta/irace_files_pO/target-runner b/eo/contrib/irace/expe/beta/irace_files_pO/target-runner
new file mode 100755
index 000000000..941322610
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/irace_files_pO/target-runner
@@ -0,0 +1,88 @@
+#!/bin/bash
+###############################################################################
+# This script is the command that is executed every run.
+# Check the examples in examples/
+#
+# This script is run in the execution directory (execDir, --exec-dir).
+#
+# PARAMETERS:
+# $1 is the candidate configuration number
+# $2 is the instance ID
+# $3 is the seed
+# $4 is the instance name
+# The rest ($* after `shift 4') are parameters to the run
+#
+# RETURN VALUE:
+# This script should print one numerical value: the cost that must be minimized.
+# Exit with 0 if no error, with 1 in case of error
+###############################################################################
+error() {
+ echo "`TZ=UTC date`: $0: error: $@"
+ exit 1
+}
+
+
+EXE="./fastga"
+LOG_DIR="irace_logs"
+
+FIXED_PARAMS="--problem=0"
+MAX_EVALS=100
+#
+CONFIG_ID=$1
+INSTANCE_ID=$2
+SEED=$3
+INSTANCE=$(echo $4 | sed 's/\//\n/g'|tail -n 1)
+CROSSOVER_RATE=$5
+CROSSOVER_SELECTOR=$6
+CROSSOVER=$7
+MUTATION_RATE=$8
+MUT_SELECTOR=$9
+MUTATION=${10}
+REPLACEMENT=${11}
+shift 11 || error "Not enough parameters"
+
+INSTANCE_PARAMS=$*
+
+# STDOUT=${LOG_DIR}/c${CONFIG_ID}_i${INSTANCE_ID}_s${SEED}.stdout
+# STDERR=${LOG_DIR}/c${CONFIG_ID}_i${INSTANCE_ID}_s${SEED}.stderr
+STDOUT="/dev/null"
+STDERR="/dev/null"
+
+if [ ! -x "${EXE}" ]; then
+ error "${EXE}: not found or not executable (pwd: $(pwd))"
+fi
+
+# If the program just prints a number, we can use 'exec' to avoid
+# creating another process, but there can be no other commands after exec.
+#exec $EXE ${FIXED_PARAMS} -i $INSTANCE ${INSTANCE_PARAMS}
+# exit 1
+#
+# Otherwise, save the output to a file, and parse the result from it.
+# (If you wish to ignore segmentation faults you can use '{}' around
+# the command.)
+cmd="$EXE ${FIXED_PARAMS} --instance=${INSTANCE} --seed=${SEED} ${CROSSOVER_RATE} ${CROSSOVER_SELECTOR} ${CROSSOVER} ${MUTATION_RATE} ${MUT_SELECTOR} ${MUTATION} ${REPLACEMENT}"
+# NOTE: irace seems to capture both stderr and stdout, so you should not output to stderr
+echo ${cmd} > ${STDERR}
+$cmd 2> ${STDERR} | tee ${STDOUT}
+
+# The following code is useless if the binary only output a single number on stdout.
+
+# This may be used to introduce a delay if there are filesystem
+# issues.
+# SLEEPTIME=1
+# while [ ! -s "${STDOUT}" ]; do
+# sleep $SLEEPTIME
+# let "SLEEPTIME += 1"
+# done
+
+# This is an example of reading a number from the output.
+# It assumes that the objective value is the first number in
+# the first column of the last line of the output.
+# if [ -s "${STDOUT}" ]; then
+# COST=$(tail -n 1 ${STDOUT} | grep -e '^[[:space:]]*[+-]\?[0-9]' | cut -f1)
+# echo "$COST"
+# rm -f "${STDOUT}" "${STDERR}"
+# exit 0
+# else
+# error "${STDOUT}: No such file or directory"
+# fi
diff --git a/eo/contrib/irace/expe/beta/mwtestU.py b/eo/contrib/irace/expe/beta/mwtestU.py
new file mode 100755
index 000000000..00b06ead6
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/mwtestU.py
@@ -0,0 +1,140 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+from scipy.stats import mannwhitneyu
+
+##cmd eg :
+# python3 hist_by_2_4_5.py ./fastga_results_all/ ./hist_and_csv/ 100000 1000
+
+#get the Mann Whitney test U results between the plan F and plan R
+# (change ligne 23 and 44 for other plan, and the maxExp, maxEv for other budget)
+
+path=sys.argv[1]
+figpath=sys.argv[2] #directory to store the data
+maxExp=sys.argv[3]
+maxEv=sys.argv[4]
+
+hist_pb=[[] for i in range(19)]
+name=[]
+randind=-1
+for fastga in os.listdir(path): #ddir : directory of fastga_plan
+ if(fastga in {"fastga_results_planF"}):
+ for plan in os.listdir(os.path.join(path,fastga)):
+ print("maxExp="+str(maxExp)+"_maxEv="+str(maxEv)+"_" in plan,plan,"maxExp="+str(maxExp)+"_maxEv="+str(maxEv))
+ #print("maxExp="+str(maxExp)+"_maxEv="+str(maxEv) in plan,plan,"maxExp="+str(maxExp)+"_maxEv="+str(maxEv))
+ if("maxExp="+str(maxExp)+"_maxEv="+str(maxEv)+"_" in plan):
+ name.append("_".join(plan.split("_")[:3]))
+ for fastgadir in os.listdir(os.path.join(path,fastga,plan,"raw","data")): #fastgadir : directory of 50 runs of a configuration
+ pb=int(fastgadir.split("_")[0].split("=")[1])
+ average_pb=[]
+ for fname in os.listdir(os.path.join(path,fastga,plan,"raw","data",fastgadir)):
+ with open(os.path.join(path,fastga,plan,"raw","data",fastgadir,fname)) as fd:
+ auc = float(fd.readlines()[0])
+ average_pb.append(auc)
+ if(hist_pb[pb]==[]): #first algo
+ hist_pb[pb].append(average_pb)
+ elif(len(hist_pb[pb])!=len(name)):
+ hist_pb[pb].append(average_pb)
+ else:
+ hist_pb[pb][len(name)-1]+=average_pb #another algo for the same plan
+
+
+ if("random" in fastga):
+ for randir in os.listdir(os.path.join(path,fastga)):
+ #eg path: maxEv=100_nbAlgo=15_2021-08-20T1511+0200_results_randoms
+ if(("maxEv="+str(maxEv)+"_") in randir):
+ print("maxEv="+str(maxEv) in randir,randir)
+ name.append(randir.split("_")[0]+"_random")
+ randind=len(name)-1
+ print(randind,name)
+ for ddir in os.listdir(os.path.join(path,fastga,randir)): #ddir : directory of one run_elites_all or more
+ if("crossover" in ddir):
+ for fastgadir in os.listdir(os.path.join(path,fastga,randir,ddir,"data")): #fastgadir : directory of 50 runs of a configuration
+ average_pb=[]
+ pb=int(fastgadir.split("_")[0].split("=")[1])
+ for fname in os.listdir(os.path.join(path,fastga,randir,ddir,"data",fastgadir)):
+ with open(os.path.join(path,fastga,randir,ddir,"data",fastgadir,fname)) as fd:
+ auc = float(fd.readlines()[0])
+ average_pb.append(auc)
+ #print(len(hist_pb[pb]),len(name), pb)
+ if(hist_pb[pb]==[]): #first algo
+ #print("entrer random vide")
+ hist_pb[pb].append(average_pb)
+ elif(len(hist_pb[pb])!=len(name)):
+ #print("entrer random !=")
+ hist_pb[pb].append(average_pb)
+ else:
+ hist_pb[pb][len(name)-1]+=average_pb #another algo for the same plan
+
+
+figdir=os.path.join(figpath,"mwtestU_FR")
+try:
+ os.makedirs(figdir)
+except FileExistsError:
+ pass
+#colors=['yellow', 'green',"blue","pink","purple","orange","magenta","gray","darkred","cyan","brown","olivedrab","thistle","stateblue"]
+print(name)
+
+filename="mwtestU_maxExp={}_maxEv={}_FR.csv".format(maxExp,maxEv)
+with open(os.path.join(figdir,filename),'w+') as csvfile:
+ csvfile.write(" ,"+",".join(map(str,range(0,19)))+"\n")
+meanvalue=[]
+pvalue=[]
+meanR=[]
+meanF=[]
+mdianR=[]
+mdianF=[]
+mdianvalue=[]
+iqrR=[]
+iqrF=[]
+stdR=[]
+stdF=[]
+iqrvalue=[]
+pstd=[]
+
+for pb in range(19):
+ #hR,lR,_=plt.hist(hist_pb[pb][randind],bins=10,range=(-1,0),align="mid",label=name) #no label color=colors[:len(name)]
+ #hF,lF,_=plt.hist(hist_pb[pb][np.abs(1-randind)],bins=10,range=(-1,0),align="mid",label=name) #no label color=colors[:len(name)]
+ _,pv=mannwhitneyu(hist_pb[pb][np.abs(1-randind)],hist_pb[pb][randind])
+ print(_,pv)
+ #meanvalue.append(np.mean(np.array(hF)*np.array(lF[:len(lF)-1]))-np.mean(np.array(hR)*np.array(lR[:len(lR)-1])))
+ pstd.append(np.std(hist_pb[pb][np.abs(1-randind)])-np.std(hist_pb[pb][randind]))
+ stdF.append(np.std(hist_pb[pb][np.abs(1-randind)]))
+ stdR.append(np.std(hist_pb[pb][randind]))
+ meanF.append(np.mean(hist_pb[pb][np.abs(1-randind)]))
+ meanR.append(np.mean(hist_pb[pb][randind]))
+ mdianF.append(np.median(hist_pb[pb][np.abs(1-randind)]))
+ mdianR.append(np.median(hist_pb[pb][randind]))
+ mdianvalue.append(np.median(hist_pb[pb][np.abs(1-randind)])-np.median(hist_pb[pb][randind]))
+ meanvalue.append(np.mean(hist_pb[pb][np.abs(1-randind)])-np.mean(hist_pb[pb][randind]))
+ pvalue.append(pv)
+ Q1 = np.percentile(hist_pb[pb][np.abs(1-randind)], 25, interpolation = 'midpoint')
+ # Third quartile (Q3)
+ Q3 = np.percentile(hist_pb[pb][np.abs(1-randind)], 75, interpolation = 'midpoint')
+ # Interquaritle range (IQR)
+ iqrF.append( Q3 - Q1)
+ Q1 = np.percentile(hist_pb[pb][randind], 25, interpolation = 'midpoint')
+ # Third quartile (Q3)
+ Q3 = np.percentile(hist_pb[pb][randind], 75, interpolation = 'midpoint')
+ # Interquaritle range (IQR)
+ iqrR.append( Q3 - Q1)
+ print(_,pv)
+iqrvalue=np.array(iqrF)-np.array(iqrR)
+with open(os.path.join(figdir,filename),'a') as csvfile:
+ csvfile.write("mF-mR,"+",".join(map(str,meanvalue))+"\n")
+ csvfile.write("p_value,"+",".join(map(str,pvalue))+"\n")
+ csvfile.write("mF,"+",".join(map(str,meanF))+"\n")
+ csvfile.write("mR,"+",".join(map(str,meanR))+"\n")
+ csvfile.write("medianF-medianR,"+",".join(map(str,mdianvalue))+"\n")
+ csvfile.write("medianF,"+",".join(map(str,mdianF))+"\n")
+ csvfile.write("medianR,"+",".join(map(str,mdianR))+"\n")
+ csvfile.write("stdF-stdR,"+",".join(map(str,mdianvalue))+"\n")
+ csvfile.write("stdF,"+",".join(map(str,stdF))+"\n")
+ csvfile.write("stdR,"+",".join(map(str,stdR))+"\n")
+ csvfile.write("iqrF,"+",".join(map(str,iqrF))+"\n")
+ csvfile.write("iqrR,"+",".join(map(str,iqrR))+"\n")
+ csvfile.write("iqrF-iqrR,"+",".join(map(str,iqrvalue))+"\n")
+
+
\ No newline at end of file
diff --git a/eo/contrib/irace/expe/beta/parseO_irace_bests.py b/eo/contrib/irace/expe/beta/parseO_irace_bests.py
new file mode 100755
index 000000000..c1811acdf
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/parseO_irace_bests.py
@@ -0,0 +1,35 @@
+#!/usr/bin/env python3
+#parse data1
+import os
+import re
+import sys
+#print("pb,ecdf,id,crossover-rate,cross-selector,crossover,mutation-rate,mut-selector,mutation,replacement") #plan1
+print("pb,ecdf,id,crossover-rate,cross-selector,crossover,mutation-rate,mut-selector,mutation,replacement")
+
+
+#give the path of one experiment
+argv=sys.argv[1]
+for datadir in os.listdir(argv):
+ #if(os.path.isdir(os.path.join(argv,datadir))): check if argv/datadir is a directory
+ if(datadir.find("results_irace")>=0): #check if the directory is one JOB
+ for pb_dir in os.listdir(os.path.join(argv,datadir)):
+ if "results_problem" in pb_dir:
+ pb_id=pb_dir.replace("results_problem_","")
+ with open(os.path.join("./",argv,datadir,pb_dir,"irace.log")) as fd:
+ data = fd.readlines()
+
+ # Find the last best configuration
+ bests = [line.strip() for line in data if "Best-so-far" in line]
+ #print(datadir,bests)
+ best = bests[-1].split()
+ best_id, best_perf = best[2], best[5]
+ # print(best_id,best_perf)
+
+ # Filter the config detail
+ configs = [line.strip() for line in data if "--crossover-rate=" in line and best_id in line]
+ # print(configs)
+
+ # Format as CSV
+ algo = re.sub("\-\-\S*=", ",", configs[0])
+ csv_line = pb_id + "," + best_perf + "," + algo
+ print(csv_line.replace(" ",""))
diff --git a/eo/contrib/irace/expe/beta/parse_auc_average.py b/eo/contrib/irace/expe/beta/parse_auc_average.py
new file mode 100755
index 000000000..b2d20dbd3
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/parse_auc_average.py
@@ -0,0 +1,34 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+
+#get the auc average values of one experiment
+figdir=sys.argv[1] # directory of a result of one experiment
+#eg : ./fastga_results_all/fastga_results_planO/planO_maxExp\=100000_maxEv\=5n_2021-08-13T19\:04+02\:00_results_elites_all/raw
+
+if("fastga_results_plan" in figdir):
+ print("FID,",",".join(map(str,range(1,16))))
+ aucs=[[] for i in range(19)]
+ for fastgadir in os.listdir(os.path.join(figdir,"raw/data")): #fastgadir : directory of 50 runs of an elite configuration
+ #cum=np.cumsum([0.1]*10)
+ average=[]
+ for fname in os.listdir(os.path.join(figdir,"raw/data",fastgadir)):
+ with open(os.path.join(figdir,"raw/data",fastgadir,fname)) as fd:
+ auc = float(fd.readlines()[0]) * -1
+ average.append(auc)
+ aucs[int(fastgadir.split("_")[0].split("=")[1])].append(average)
+ #print(np.shape(aucs))
+
+
+
+ for i in range(19):
+ print(str(i)+",",",".join(map(str,np.mean(aucs[i],1))))
+
+
+
+
+
+
+
diff --git a/eo/contrib/irace/expe/beta/planA/riaA.sh b/eo/contrib/irace/expe/beta/planA/riaA.sh
index c28359626..0653a3358 100755
--- a/eo/contrib/irace/expe/beta/planA/riaA.sh
+++ b/eo/contrib/irace/expe/beta/planA/riaA.sh
@@ -14,7 +14,7 @@ outdir="${dir}/dataA_maxExp=${mexp}_maxEv=${mevals}_$(date --iso-8601=seconds)"
mkdir -p ${outdir}
for r in $(seq 2); do
echo "Run $r/15";
- cmd="qsub -N iraceA_maxEv_${r} -q beta -l select=1:ncpus=1 -l walltime=00:30:00 -- ${scratchpath}/planA/r_iA.sh ${outdir} ${r} ${mexp} ${mevals} ${myhome}"
+ cmd="qsub -N iraceA_maxEv_${r} -q beta -l select=1:ncpus=1 -l walltime=00:25:00 -- ${scratchpath}/planA/r_iA.sh ${outdir} ${r} ${mexp} ${mevals} ${myhome}"
#cmd="bash ./r_iA_buckets.sh ${outdir} ${r} ${mexp} ${mevals}"
echo $cmd
time -p $cmd
diff --git a/eo/contrib/irace/expe/beta/planF/riaF.sh b/eo/contrib/irace/expe/beta/planF/riaF.sh
index 5791a1a1d..e400f152a 100755
--- a/eo/contrib/irace/expe/beta/planF/riaF.sh
+++ b/eo/contrib/irace/expe/beta/planF/riaF.sh
@@ -15,7 +15,7 @@ for r in $(seq 2); do
echo "Run $r/15";
#date -Iseconds
#cmd="qsub -N irace_${runs}_${buckets}" -q beta -l select=1:ncpus=1 -l walltime=00:04:00 --${HOME}/run_irace.sh ${dir}
- cmd="qsub -N iraceF_${mevals}_run=${r} -q beta -l select=1:ncpus=1 -l walltime=00:30:00 -- ${scratchpath}/planF/r_iF.sh ${dir} ${r} ${mexp} ${mevals} ${myhome}"
+ cmd="qsub -N iraceF_${mevals}_run=${r} -q beta -l select=1:ncpus=1 -l walltime=00:25:00 -- ${scratchpath}/planF/r_iF.sh ${dir} ${r} ${mexp} ${mevals} ${myhome}"
#time -p bash ${HOME}/plan2/run_irace2.sh ${dir} ${r} &> ${dir}/erreur_${r}.txt
#bash ${HOME}/test/r_i.sh
echo $cmd
diff --git a/eo/contrib/irace/expe/beta/planO/r_iO.sh b/eo/contrib/irace/expe/beta/planO/r_iO.sh
new file mode 100755
index 000000000..b69a18941
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/planO/r_iO.sh
@@ -0,0 +1,43 @@
+#!/bin/bash
+#run once each problem
+
+. /etc/profile.d/modules.sh
+export MODULEPATH=${MODULEPATH}${MODULEPATH:+:}/opt/dev/Modules/Anaconda:/opt/dev/Modules/Compilers:/opt/dev/Modules/Frameworks:/opt/dev/Modules/Libraries:/opt/dev/Modules/Tools:/opt/dev/Modules/IDEs:/opt/dev/Modules/MPI
+module load LLVM/clang-llvm-10.0
+module load R
+
+dir=$1
+run=$2
+budget_irace=$3
+buckets=$4
+myhome=$5
+
+cp -r ${myhome}/R .
+cp -r ${myhome}/irace_files_pO .
+
+outdir="${run}_$(date --iso-8601=seconds)_results_irace"
+echo "start a job $(date -Iseconds)"
+
+for pb in $(seq 0 18) ; do
+ echo "Problem ${pb}... "
+ res="results_problem_${pb}"
+ mkdir -p ${dir}/${outdir}/${res}
+ # Fore some reason, irace absolutely need those files...
+ cp ${myhome}/code/paradiseo/eo/contrib/irace/release/fastga ${dir}/${outdir}/${res}
+
+ cat ./irace_files_pO/example.scen | sed "s%\".%\"${dir}/${outdir}/${res}%g" | sed "s/maxExperiments = 0/maxExperiments=${budget_irace}/" > ${dir}/${outdir}/${res}/example.scen
+ cp ./irace_files_pO/default.instances ${dir}/${outdir}/${res}
+ cp ./irace_files_pO/fastga.param ${dir}/${outdir}/${res}
+ cat ./irace_files_pO/target-runner | sed "s/--problem=0/--problem=${pb}/" > ${dir}/${outdir}/${res}/target-runner
+ chmod u+x ${dir}/${outdir}/${res}/target-runner
+
+ echo "---start $(date)"
+ time -p ./R/x86_64-pc-linux-gnu-library/3.6/irace/bin/irace --scenario ${dir}/${outdir}/${res}/example.scen > ${dir}/${outdir}/${res}/irace.log
+ echo "---end $(date)"
+
+ echo "done run : ${run} pb : ${pb}"
+ date -Iseconds
+done
+
+echo "end a job $(date -Iseconds)---------------------"
+
diff --git a/eo/contrib/irace/expe/beta/planO/riaO.sh b/eo/contrib/irace/expe/beta/planO/riaO.sh
new file mode 100755
index 000000000..76e7d822e
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/planO/riaO.sh
@@ -0,0 +1,23 @@
+#!/bin/bash
+
+date -Iseconds
+echo "STARTS"
+myhome=$1
+scratchpath=$2
+mexp=$3
+mevals=$4
+name="dataO_maxExp=${mexp}_maxEv=${mevals}_$(date --iso-8601=seconds)"
+dir=${scratchpath}/dataFAR/dataO/${name}
+mkdir -p ${dir}
+
+for r in $(seq 2); do
+ echo "Run $r/15";
+ cmd="qsub -N iraceO_maxExp=${exp}_maxEv=${evals}_${r} -q beta -l select=1:ncpus=1 -l walltime=00:10:00 -- ${scratchpath}/planO/r_iO.sh ${dir} ${r} ${mexp} ${mevals} ${myhome}"
+ echo $cmd
+ $cmd
+ #time (p=2; while [[ ${p} > 1 ]] ; do p=$(qqueue -u $USER | wc -l); echo "$r: $p"; sleep 300; done)
+done
+
+#echo "DONE"
+#date -Iseconds
+
diff --git a/eo/contrib/irace/expe/beta/readme.txt b/eo/contrib/irace/expe/beta/readme.txt
index 6d53b7d90..85e30d5af 100755
--- a/eo/contrib/irace/expe/beta/readme.txt
+++ b/eo/contrib/irace/expe/beta/readme.txt
@@ -1,13 +1,21 @@
+############################################
+#Explanation of the experimental plans and the validation runs
+
+############################################
1. INTRODUCTION
The aim of all the scripts is to make the experimental plans for Algorithm Configuration for Genetic Algorithms by using a fully modular benchmarking pipeline design of this article https://arxiv.org/abs/2102.06435 .
+You can upload the data in : https://zenodo.org/record/5479538#.YTaT0Bnis2w
+
Plan A is an experimental plan for finding an efficient algorithm for all the functions that we consider.
Plan F is an experimental plan for finding an efficient algorithm for each function that we consider.
Plan R is an experimental plan for getting random algorithms.
+Plan O is the reproduction of the experimental plan of the article.
+
2. VOCABULARIES
* maxExp : means maximum Experiments, the budget for irace
@@ -20,18 +28,18 @@ dataA is a directory which we store all the runs of an experiment plan for sever
eg : /dataA/planA_maxExp=*_maxEv=**_$(data), * is a value of maxExp, and ** is a value of maxEv
-*fastga_results_all : directory which we store all the data for validation runs. It constains only 3 subdirectories (fastga_results_planF, fastga_results_planA, fastga_results_random), created by running run_exp.sh
+*fastga_results_all : directory which we store all the data for validation runs. It constains only 3 subdirectories (fastga_results_planF, fastga_results_planA, fastga_results_planO, fastga_results_random), created by running run_exp.sh
-* fastga_results_planF, fastga_results_planA, fastga_results_random
+* fastga_results_planF, fastga_results_planA, fastga_results_random, fastga_results_planO
Each directory store the data for validation runs of each experiment plan.
fastga_random directory are created by running run_exp.sh
-fastga_results_planF and fastag_results_planA are created only after you have data in the dataA or dataF directories.
+fastga_results_planF, fastag_results_planO and fastag_results_planA are created only after you have data in the dataA or dataF or dataO directories.
-* planA_*, planF_*
-If the planA_* or planF_* are in the dataFAR directory, the directory contains the data of experimental plan. This means that each plan contains the result of 15 runs of irace stored in irace.log file, and the data are provided by run_exp.sh.
+* planA_*, planF_*, planO_*
+If the planA_* or planF_* or planO_* are in the dataFAR directory, the directory contains the data of experimental plan. This means that each plan contains the result of 15 runs of irace stored in irace.log file, and the data are provided by run_exp.sh.
-If the planA_* or planF_* directories are in the fastga_results_planA or fastga_results_planF, these directories contain the data of 50 validation runs by running all the best algorithms of each plan stores in dataFAR. The data are provided by running run_res.sh
+If the planA_* or planF_* or planO_* directories are in the fastga_results_planA or fastga_results_planF, these directories contain the data of 50 validation runs by running all the best algorithms of each plan stores in dataFAR. The data are provided by running run_res.sh
*fastag_all_results : contains the directories of the validation run data.
@@ -57,9 +65,9 @@ The directory which you load all the scripts contains :
* python files :
-parseA_irace_bests.py : for parsing the irace.log file of each data provided by running irace. By giving a bounch of directories of one experiment
- -parseF_irace_bests.py
+ -parseF_irace_bests.py : for the plan plan F and plan O(in the plan O csv, there are label offspringsize and popsize, but there are not values)
- * 4 directories :
+ * 6 directories :
-irace_files_pA :
-default.instances
-example.scen
@@ -74,6 +82,12 @@ The directory which you load all the scripts contains :
-forbidden.txt
-target-runner
+ -irace_files_pO :
+ -default.instances :
+ -example.scen
+ -fastga.param
+ -target-runner
+
-planA :
-riaA.sh : for running 15 times r_iA.sh file by submitting to the mesu cluster
-r_iA.sh : for running irace for all the problems
@@ -81,11 +95,14 @@ The directory which you load all the scripts contains :
-planF :
-riaF.sh : for running 15 times r_iF.sh file by submitting to the mesu cluster
-r_iF.sh : for running irace for each problem we considered
+ -planO :
+ -riaO.sh : for running 15 times r_iO.sh file by submitting to the mesu cluster
+ -r_iO.sh : for running irace for each problem we considered
The directories planA, planF contain the scripts to run one experiment of Plan A and Plan F.
-The directories irace_files_pA and irace_files_pA contain the scripts needing for calling irace for one experiment of Plan A and Plan F. [Look at the irace package : User Guide for more information]
+The directories irace_files_pA, irace_files_pO and irace_files_pF contain the scripts needing for calling irace for one experiment of Plan A, Plan O and Plan F. [Look at the irace package : User Guide for more information]
5. CONCLUSION
@@ -97,5 +114,54 @@ Warning : run_exp.sh may take few days or few weeks depending on the Budget you
+############################################
+#Scripts for getting histograms and csv files of validation runs results.
+
+############################################
+
+get histograms or csv files for random data :
+-hist_join_random.py : get one histogram for a plan by budget
+-dist_op_random.py : get csv files of the distribution of operators by problems
+
+get histograms or csv files for plan O,F,A :
+-hist_join.py
+-dist_op_all.py
+-parse_auc_average # get the mean auc value of each problem and each irace run
+
+get histograms for plan F, A , R, O
+-hist_by_pb_budget_plan.py : get histograms by problem
+-hist_by_FARO_pb.py :
+-hist_by_FARO.py
+-best_out_of_elites.py : get the best algorithm found among 15 runs of irace, for a plan
+files to call all these files :
+-csv_all.sh : get all the csv files (average of auc, best out ..), call best_out_of_elites.py, parse_auc_average.py, dist_op_*.py
+-hist_all.sh : get all the histograms, call each hist_*.py file
+
+file for other goal :
+-mwtestU.py ; csv file for selected problems which irace algorithms gave better performances than random algorithms
+-rep_std_mean_selected.py : to get the std, mean and the distribution of operators of the selected problems
+
+
+
+
+
+############################################
+#Summary
+
+############################################
+
+Get the experiment data :
+run : bash run_exp.sh
+
+-----------Only after you have the experiment data:
+Get the validation run data :
+run : bash run_res.sh
+
+Get histograms :
+run : bash hist_all.sh
+
+Get csv files of validation run data :
+run : bash csv_all.sh
+
diff --git a/eo/contrib/irace/expe/beta/rep_std_mean_selected.py b/eo/contrib/irace/expe/beta/rep_std_mean_selected.py
new file mode 100755
index 000000000..1add3e9ab
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/rep_std_mean_selected.py
@@ -0,0 +1,55 @@
+#!/usr/bin/env python3
+import sys
+import os
+import numpy as np
+import matplotlib.pyplot as plt
+import pandas
+
+#eg : python3 ./rep_std_mean_selected.py ./hist_and_csv/distribution_op_fastga_results_planF
+#get the std of the selected problem
+path=sys.argv[1] # directory of each distribution by pb
+lpb={13,14,15,16,18} #set of pb selected
+#column : [operator : nbpossibilities]
+distdir=path+"/rep_std_mean"
+try:
+ os.makedirs(distdir)
+except FileExistsError:
+ pass
+
+res=[]
+for csvfile in os.listdir(os.path.join(path)):
+ if(int(csvfile.split("_")[1].split("=")[1]) in lpb):
+ print(csvfile)
+ res.append(pandas.read_csv(os.path.join(path,csvfile)))
+
+#assert(len(res[0])==len(res[1]) , "each csv file does not have the same line " #check if the number of param is eq in each csv file
+
+
+name ="std_rep_pb={}".format(str(lpb))+"".join(map(str,path.split("/")[-3].split("_")[:3]))+".csv"
+with open(os.path.join(distdir,name),'w+') as fd:
+ fd.write("Op index, "+",".join(map(str,range(0,11)))+"\n")
+globalname="rep_all_pb={}".format(str(lpb))+"".join(map(str,path.split("/")[-3].split("_")[:3]))+".csv"
+with open(os.path.join(distdir,globalname),'w+') as fd:
+ fd.write("Op index, "+",".join(map(str,range(0,11)))+"\n")
+meanname="mean_rep_pb={}".format(str(lpb))+"".join(map(str,path.split("/")[-3].split("_")[:3]))+".csv"
+with open(os.path.join(distdir,meanname),'w+') as fd:
+ fd.write("Op index, "+",".join(map(str,range(0,11)))+"\n")
+#print(res)
+limparam=[10,7,10,10,7,11,11,10,10]
+for i in range(1,10): #9 nb parameters
+ npval=np.zeros((len(res),limparam[i-1]),dtype=int)
+ for pb in range(len(res)):
+ print(i,np.array(np.array(res[pb][i-1:i])[0]),np.array(np.array(res[pb][i-1:i])[0][1:limparam[i-1]+1]))
+ npval[pb,:]=np.array(np.array(res[pb][i-1:i])[0][1:limparam[i-1]+1],dtype=int)
+ nameparam=np.array(res[pb][i-1:i])[0][0]
+ line= ",".join(map(str,np.std(npval,0)))+",-"*(11-limparam[i-1])
+ print("ligne ",line)
+
+ with open(os.path.join(distdir,name),'a') as fd:
+ fd.write(nameparam+","+line+"\n")
+ line= ",".join(map(str,np.sum(npval,0)))+",-"*(11-limparam[i-1])
+ with open(os.path.join(distdir,globalname),'a') as fd:
+ fd.write(nameparam+","+line+"\n")
+ line= ",".join(map(str,np.mean(npval,0)))+",-"*(11-limparam[i-1])
+ with open(os.path.join(distdir,meanname),'a') as fd:
+ fd.write(nameparam+","+line+"\n")
\ No newline at end of file
diff --git a/eo/contrib/irace/expe/beta/run_elites_planO.sh b/eo/contrib/irace/expe/beta/run_elites_planO.sh
new file mode 100755
index 000000000..8f93293c4
--- /dev/null
+++ b/eo/contrib/irace/expe/beta/run_elites_planO.sh
@@ -0,0 +1,64 @@
+#!/bin/bash
+#instance = seed
+
+. /etc/profile.d/modules.sh
+export MODULEPATH=${MODULEPATH}${MODULEPATH:+:}/opt/dev/Modules/Anaconda:/opt/dev/Modules/Compilers:/opt/dev/Modules/Frameworks:/opt/dev/Modules/Libraries:/opt/dev/Modules/Tools:/opt/dev/Modules/IDEs:/opt/dev/Modules/MPI
+module load LLVM/clang-llvm-10.0
+
+
+
+
+csv_file=$1 #contains all the configs of all the problems of one experiments
+mexp=$2
+mevals=$3
+path=$4
+
+echo "-----------------Start $(date -Iseconds) "
+# Number of runs (=seeds).
+runs=50
+
+# You most probably want to run on release builds.
+exe="/home/${USER}/fastga"
+
+outdir="${path}/planO_maxExp=${mexp}_maxEv=${mevals}_$(date --iso-8601=minutes)_results_elites_all"
+mkdir -p ${outdir}
+mkdir -p ${outdir}/raw
+mkdir -p ${outdir}/raw/data
+mkdir -p ${outdir}/raw/logs
+
+n=0
+algoid=0
+for line in $(cat ${csv_file}| sed 1,1d ); do
+ a=($(echo $line | sed "s/,/ /g"))
+ algo="--crossover-rate=${a[3]} --cross-selector=${a[4]} --crossover=${a[5]} --mutation-rate=${a[6]} --mut-selector=${a[7]} --mutation=${a[8]} --replacement=${a[9]}"
+
+ #perc=$(echo "scale=3;${n}/(285)*100.0" | bc)
+ #echo "${perc}% : algo ${algoid}/285"
+ # echo -n "Runs: "
+ name_dir="pb=${a[0]}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
+ mkdir -p ${outdir}/raw/data/${name_dir}
+ mkdir -p ${outdir}/raw/logs/${name_dir}
+ for seed in $(seq ${runs}) ; do # Iterates over runs/seeds.
+ # This is the command to be ran.
+ #cmd="${exe} --full-log=1 --problem=${pb} --seed=${seed} ${algo}"
+ cmd="${exe} --problem=${a[0]} --seed=${seed} --instance=${seed} ${algo}"
+ #echo ${cmd} # Print the command.
+ # Forge a directory/log file name
+ # (remove double dashs and replace spaces with underscore).
+ name_run="pb=${a[0]}_seed=${seed}_$(echo "${algo}" | sed 's/--//g' | sed 's/ /_/g')"
+ # echo $name_run
+ # Actually start the command.
+ ${cmd} > "${outdir}/raw/data/${name_dir}/${name_run}.dat" 2> "${outdir}/raw/logs/${name_dir}/${name_run}.log"
+ # Check for the most common problem in the log file.
+ #cat "${outdir}/raw/logs/${name_run}.log" | grep "illogical performance"
+ done # seed
+
+ n=$(($n+1))
+ algoid=$(($algoid+1))
+done
+
+# Move IOH logs in the results directory.
+#mv ./FastGA_* ${outdir}
+
+echo "Done $(date) -----------------------"
+date
diff --git a/eo/contrib/irace/expe/beta/run_exp.sh b/eo/contrib/irace/expe/beta/run_exp.sh
index c3669a1c7..44630176c 100644
--- a/eo/contrib/irace/expe/beta/run_exp.sh
+++ b/eo/contrib/irace/expe/beta/run_exp.sh
@@ -1,11 +1,12 @@
#!/bin/bash
-lexp=(300 600 1000 10000)
-levals=(100 500 1000)
+lexp=(300 600)
+levals=(100 500)
myscratchpath=/scratchbeta/$USER
myhome=${HOME}
for exp in ${lexp[@]} ; do
for evals in ${levals[@]} ; do
bash ./planF/riaF.sh ${myhome} ${myscratchpath} ${exp} ${evals}
+ bash ./planO/riaO.sh ${myhome} ${myscratchpath} ${exp} ${evals}
bash ./planA/riaA.sh ${myhome} ${myscratchpath} ${exp} ${evals}
done
done
diff --git a/eo/contrib/irace/expe/beta/run_res.sh b/eo/contrib/irace/expe/beta/run_res.sh
index de5b352ad..b3579863a 100644
--- a/eo/contrib/irace/expe/beta/run_res.sh
+++ b/eo/contrib/irace/expe/beta/run_res.sh
@@ -14,7 +14,7 @@ done
#get validation run of each config
-dir=/scratchbeta/$USER/csv_FA
+dir=/scratchbeta/$USER/csv_FAO
listdir=$(echo $(ls ${dir}))
echo ${listdir[@]}
for csvdir in ${listdir[@]} ; do
From f89bad4aec673a798194d99517fe5ea48ae625c6 Mon Sep 17 00:00:00 2001
From: GMYS Jan
Date: Wed, 29 Sep 2021 08:39:18 +0000
Subject: [PATCH 015/113] Add LICENSE
---
LICENSE | 1018 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 1018 insertions(+)
create mode 100644 LICENSE
diff --git a/LICENSE b/LICENSE
new file mode 100644
index 000000000..b7f1e4658
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,1018 @@
+CeCILL FREE SOFTWARE LICENSE AGREEMENT
+
+ Notice
+
+This Agreement is a Free Software license agreement that is the result
+of discussions between its authors in order to ensure compliance with
+the two main principles guiding its drafting:
+
+ * firstly, compliance with the principles governing the distribution
+ of Free Software: access to source code, broad rights granted to
+ users,
+ * secondly, the election of a governing law, French law, with which
+ it is conformant, both as regards the law of torts and
+ intellectual property law, and the protection that it offers to
+ both authors and holders of the economic rights over software.
+
+The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
+license are:
+
+Commissariat à l'Energie Atomique - CEA, a public scientific, technical
+and industrial research establishment, having its principal place of
+business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific
+and technological establishment, having its principal place of business
+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, a public scientific and technological establishment, having its
+principal place of business at Domaine de Voluceau, Rocquencourt, BP
+105, 78153 Le Chesnay cedex, France.
+
+
+ Preamble
+
+The purpose of this Free Software license agreement is to grant users
+the right to modify and redistribute the software governed by this
+license within the framework of an open source distribution model.
+
+The exercising of these rights is conditional upon certain obligations
+for users so as to preserve this status for all subsequent redistributions.
+
+In consideration of access to the source code and the rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors only have limited liability.
+
+In this respect, the risks associated with loading, using, modifying
+and/or developing or reproducing the software by the user are brought to
+the user's attention, given its Free Software status, which may make it
+complicated to use, with the result that its use is reserved for
+developers and experienced professionals having in-depth computer
+knowledge. Users are therefore encouraged to load and test the
+suitability of the software as regards their requirements in conditions
+enabling the security of their systems and/or data to be ensured and,
+more generally, to use and operate it in the same conditions of
+security. This Agreement may be freely reproduced and published,
+provided it is not altered, and that no provisions are either added or
+removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of
+the economic rights decides to submit the use thereof to its provisions.
+
+
+ Article 1 - DEFINITIONS
+
+For the purpose of this Agreement, when the following expressions
+commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this license agreement, and its possible subsequent
+versions and annexes.
+
+Software: means the software in its Object Code and/or Source Code form
+and, where applicable, its documentation, "as is" when the Licensee
+accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and possibly its
+Object Code form and, where applicable, its documentation, "as is" when
+it is first distributed under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one
+Contribution.
+
+Source Code: means all the Software's instructions and program lines to
+which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of
+the Source Code.
+
+Holder: means the holder(s) of the economic rights over the Initial
+Software.
+
+Licensee: means the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any other individual or legal entity, who
+distributes the Software under the Agreement.
+
+Contribution: means any or all modifications, corrections, translations,
+adaptations and/or new functions integrated into the Software by any or
+all Contributors, as well as any or all Internal Modules.
+
+Module: means a set of sources files including their documentation that
+enables supplementary functions or services in addition to those offered
+by the Software.
+
+External Module: means any or all Modules, not derived from the
+Software, so that this Module and the Software run in separate address
+spaces, with one calling the other when they are run.
+
+Internal Module: means any or all Module, connected to the Software so
+that they both execute in the same address space.
+
+GNU GPL: means the GNU General Public License version 2 or any
+subsequent version, as published by the Free Software Foundation Inc.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+
+ Article 2 - PURPOSE
+
+The purpose of the Agreement is the grant by the Licensor to the
+Licensee of a non-exclusive, transferable and worldwide license for the
+Software as set forth in Article 5 hereinafter for the whole term of the
+protection granted by the rights over said Software.
+
+
+ Article 3 - ACCEPTANCE
+
+3.1 The Licensee shall be deemed as having accepted the terms and
+conditions of this Agreement upon the occurrence of the first of the
+following events:
+
+ * (i) loading the Software by any or all means, notably, by
+ downloading from a remote server, or by loading from a physical
+ medium;
+ * (ii) the first time the Licensee exercises any of the rights
+ granted hereunder.
+
+3.2 One copy of the Agreement, containing a notice relating to the
+characteristics of the Software, to the limited warranty, and to the
+fact that its use is restricted to experienced users has been provided
+to the Licensee prior to its acceptance as set forth in Article 3.1
+hereinabove, and the Licensee hereby acknowledges that it has read and
+understood it.
+
+
+ Article 4 - EFFECTIVE DATE AND TERM
+
+
+ 4.1 EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by
+the Licensee as set forth in Article 3.1.
+
+
+ 4.2 TERM
+
+The Agreement shall remain in force for the entire legal term of
+protection of the economic rights over the Software.
+
+
+ Article 5 - SCOPE OF RIGHTS GRANTED
+
+The Licensor hereby grants to the Licensee, who accepts, the following
+rights over the Software for any or all use, and for the term of the
+Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Besides, if the Licensor owns or comes to own one or more patents
+protecting all or part of the functions of the Software or of its
+components, the Licensor undertakes not to enforce the rights granted by
+these patents against successive Licensees using, exploiting or
+modifying the Software. If these patents are transferred, the Licensor
+undertakes to have the transferees subscribe to the obligations set
+forth in this paragraph.
+
+
+ 5.1 RIGHT OF USE
+
+The Licensee is authorized to use the Software, without any limitation
+as to its fields of application, with it being hereinafter specified
+that this comprises:
+
+ 1. permanent or temporary reproduction of all or part of the Software
+ by any or all means and in any or all form.
+
+ 2. loading, displaying, running, or storing the Software on any or
+ all medium.
+
+ 3. entitlement to observe, study or test its operation so as to
+ determine the ideas and principles behind any or all constituent
+ elements of said Software. This shall apply when the Licensee
+ carries out any or all loading, displaying, running, transmission
+ or storage operation as regards the Software, that it is entitled
+ to carry out hereunder.
+
+
+ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt,
+arrange, or make any or all modifications to the Software, and the right
+to reproduce the resulting software.
+
+The Licensee is authorized to make any or all Contributions to the
+Software provided that it includes an explicit notice that it is the
+author of said Contribution and indicates the date of the creation thereof.
+
+
+ 5.3 RIGHT OF DISTRIBUTION
+
+In particular, the right of distribution includes the right to publish,
+transmit and communicate the Software to the general public on any or
+all medium, and by any or all means, and the right to market, either in
+consideration of a fee, or free of charge, one or more copies of the
+Software by any means.
+
+The Licensee is further authorized to distribute copies of the modified
+or unmodified Software to third parties according to the terms and
+conditions set forth hereinafter.
+
+
+ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to distribute true copies of the Software in
+Source Code or Object Code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Object Code of the Software is
+redistributed, the Licensee allows future Licensees unhindered access to
+the full Source Code of the Software by indicating how to access it, it
+being understood that the additional cost of acquiring the Source Code
+shall not exceed the cost of transferring the data.
+
+
+ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
+
+When the Licensee makes a Contribution to the Software, the terms and
+conditions for the distribution of the resulting Modified Software
+become subject to all the provisions of this Agreement.
+
+The Licensee is authorized to distribute the Modified Software, in
+source code or object code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the object code of the Modified
+Software is redistributed, the Licensee allows future Licensees
+unhindered access to the full source code of the Modified Software by
+indicating how to access it, it being understood that the additional
+cost of acquiring the source code shall not exceed the cost of
+transferring the data.
+
+
+ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
+
+When the Licensee has developed an External Module, the terms and
+conditions of this Agreement do not apply to said External Module, that
+may be distributed under a separate license agreement.
+
+
+ 5.3.4 COMPATIBILITY WITH THE GNU GPL
+
+The Licensee can include a code that is subject to the provisions of one
+of the versions of the GNU GPL in the Modified or unmodified Software,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+The Licensee can include the Modified or unmodified Software in a code
+that is subject to the provisions of one of the versions of the GNU GPL,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+
+ Article 6 - INTELLECTUAL PROPERTY
+
+
+ 6.1 OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or
+all use of the Initial Software is subject to compliance with the terms
+and conditions under which the Holder has elected to distribute its work
+and no one shall be entitled to modify the terms and conditions for the
+distribution of said Initial Software.
+
+The Holder undertakes that the Initial Software will remain ruled at
+least by this Agreement, for the duration set forth in Article 4.2.
+
+
+ 6.2 OVER THE CONTRIBUTIONS
+
+The Licensee who develops a Contribution is the owner of the
+intellectual property rights over this Contribution as defined by
+applicable law.
+
+
+ 6.3 OVER THE EXTERNAL MODULES
+
+The Licensee who develops an External Module is the owner of the
+intellectual property rights over this External Module as defined by
+applicable law and is free to choose the type of agreement that shall
+govern its distribution.
+
+
+ 6.4 JOINT PROVISIONS
+
+The Licensee expressly undertakes:
+
+ 1. not to remove, or modify, in any manner, the intellectual property
+ notices attached to the Software;
+
+ 2. to reproduce said notices, in an identical manner, in the copies
+ of the Software modified or not.
+
+The Licensee undertakes not to directly or indirectly infringe the
+intellectual property rights of the Holder and/or Contributors on the
+Software and to take, where applicable, vis-à-vis its staff, any and all
+measures required to ensure respect of said intellectual property rights
+of the Holder and/or Contributors.
+
+
+ Article 7 - RELATED SERVICES
+
+7.1 Under no circumstances shall the Agreement oblige the Licensor to
+provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of services. The
+terms and conditions of such technical assistance, and/or such
+maintenance, shall be set forth in a separate instrument. Only the
+Licensor offering said maintenance and/or technical assistance services
+shall incur liability therefor.
+
+7.2 Similarly, any Licensor is entitled to offer to its licensees, under
+its sole responsibility, a warranty, that shall only be binding upon
+itself, for the redistribution of the Software and/or the Modified
+Software, under terms and conditions that it is free to decide. Said
+warranty, and the financial terms and conditions of its application,
+shall be subject of a separate instrument executed between the Licensor
+and the Licensee.
+
+
+ Article 8 - LIABILITY
+
+8.1 Subject to the provisions of Article 8.2, the Licensee shall be
+entitled to claim compensation for any direct loss it may have suffered
+from the Software as a result of a fault on the part of the relevant
+Licensor, subject to providing evidence thereof.
+
+8.2 The Licensor's liability is limited to the commitments made under
+this Agreement and shall not be incurred as a result of in particular:
+(i) loss due the Licensee's total or partial failure to fulfill its
+obligations, (ii) direct or consequential loss that is suffered by the
+Licensee due to the use or performance of the Software, and (iii) more
+generally, any consequential loss. In particular the Parties expressly
+agree that any or all pecuniary or business loss (i.e. loss of data,
+loss of profits, operating loss, loss of customers or orders,
+opportunity cost, any disturbance to business activities) or any or all
+legal proceedings instituted against the Licensee by a third party,
+shall constitute consequential loss and shall not provide entitlement to
+any or all compensation from the Licensor.
+
+
+ Article 9 - WARRANTY
+
+9.1 The Licensee acknowledges that the scientific and technical
+state-of-the-art when the Software was distributed did not enable all
+possible uses to be tested and verified, nor for the presence of
+possible defects to be detected. In this respect, the Licensee's
+attention has been drawn to the risks associated with loading, using,
+modifying and/or developing and reproducing the Software which are
+reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means,
+the suitability of the product for its requirements, its good working
+order, and for ensuring that it shall not cause damage to either persons
+or properties.
+
+9.2 The Licensor hereby represents, in good faith, that it is entitled
+to grant all the rights over the Software (including in particular the
+rights set forth in Article 5).
+
+9.3 The Licensee acknowledges that the Software is supplied "as is" by
+the Licensor without any other express or tacit warranty, other than
+that provided for in Article 9.2 and, in particular, without any warranty
+as to its commercial value, its secured, safe, innovative or relevant
+nature.
+
+Specifically, the Licensor does not warrant that the Software is free
+from any error, that it will operate without interruption, that it will
+be compatible with the Licensee's own equipment and software
+configuration, nor that it will meet the Licensee's requirements.
+
+9.4 The Licensor does not either expressly or tacitly warrant that the
+Software does not infringe any third party intellectual property right
+relating to a patent, software or any other property right. Therefore,
+the Licensor disclaims any and all liability towards the Licensee
+arising out of any or all proceedings for infringement that may be
+instituted in respect of the use, modification and redistribution of the
+Software. Nevertheless, should such proceedings be instituted against
+the Licensee, the Licensor shall provide it with technical and legal
+assistance for its defense. Such technical and legal assistance shall be
+decided on a case-by-case basis between the relevant Licensor and the
+Licensee pursuant to a memorandum of understanding. The Licensor
+disclaims any and all liability as regards the Licensee's use of the
+name of the Software. No warranty is given as regards the existence of
+prior rights over the name of the Software or as regards the existence
+of a trademark.
+
+
+ Article 10 - TERMINATION
+
+10.1 In the event of a breach by the Licensee of its obligations
+hereunder, the Licensor may automatically terminate this Agreement
+thirty (30) days after notice has been sent to the Licensee and has
+remained ineffective.
+
+10.2 A Licensee whose Agreement is terminated shall no longer be
+authorized to use, modify or distribute the Software. However, any
+licenses that it may have granted prior to termination of the Agreement
+shall remain valid subject to their having been granted in compliance
+with the terms and conditions hereof.
+
+
+ Article 11 - MISCELLANEOUS
+
+
+ 11.1 EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to
+perform the Agreement, that may be attributable to an event of force
+majeure, an act of God or an outside cause, such as defective
+functioning or interruptions of the electricity or telecommunications
+networks, network paralysis following a virus attack, intervention by
+government authorities, natural disasters, water damage, earthquakes,
+fire, explosions, strikes and labor unrest, war, etc.
+
+11.2 Any failure by either Party, on one or more occasions, to invoke
+one or more of the provisions hereof, shall under no circumstances be
+interpreted as being a waiver by the interested Party of its right to
+invoke said provision(s) subsequently.
+
+11.3 The Agreement cancels and replaces any or all previous agreements,
+whether written or oral, between the Parties and having the same
+purpose, and constitutes the entirety of the agreement between said
+Parties concerning said purpose. No supplement or modification to the
+terms and conditions hereof shall be effective as between the Parties
+unless it is made in writing and signed by their duly authorized
+representatives.
+
+11.4 In the event that one or more of the provisions hereof were to
+conflict with a current or future applicable act or legislative text,
+said act or legislative text shall prevail, and the Parties shall make
+the necessary amendments so as to comply with said act or legislative
+text. All other provisions shall remain effective. Similarly, invalidity
+of a provision of the Agreement, for any reason whatsoever, shall not
+cause the Agreement as a whole to be invalid.
+
+
+ 11.5 LANGUAGE
+
+The Agreement is drafted in both French and English and both versions
+are deemed authentic.
+
+
+ Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1 Any person is authorized to duplicate and distribute copies of this
+Agreement.
+
+12.2 So as to ensure coherence, the wording of this Agreement is
+protected and may only be modified by the authors of the License, who
+reserve the right to periodically publish updates or new versions of the
+Agreement, each with a separate number. These subsequent versions may
+address new issues encountered by Free Software.
+
+12.3 Any Software distributed under a given version of the Agreement may
+only be subsequently distributed under the same version of the Agreement
+or a subsequent version, subject to the provisions of Article 5.3.4.
+
+
+ Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1 The Agreement is governed by French law. The Parties agree to
+endeavor to seek an amicable solution to any disagreements or disputes
+that may arise during the performance of the Agreement.
+
+13.2 Failing an amicable solution within two (2) months as from their
+occurrence, and unless emergency proceedings are necessary, the
+disagreements or disputes shall be referred to the Paris Courts having
+jurisdiction, by the more diligent Party.
+
+
+Version 2.0 dated 2006-09-05.
+
+------------------------------------------------------------------------------
+
+CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL
+
+
+ Avertissement
+
+Ce contrat est une licence de logiciel libre issue d'une concertation
+entre ses auteurs afin que le respect de deux grands principes préside à
+sa rédaction:
+
+ * d'une part, le respect des principes de diffusion des logiciels
+ libres: accès au code source, droits étendus conférés aux
+ utilisateurs,
+ * d'autre part, la désignation d'un droit applicable, le droit
+ français, auquel elle est conforme, tant au regard du droit de la
+ responsabilité civile que du droit de la propriété intellectuelle
+ et de la protection qu'il offre aux auteurs et titulaires des
+ droits patrimoniaux sur un logiciel.
+
+Les auteurs de la licence CeCILL (pour Ce[a] C[nrs] I[nria] L[ogiciel]
+L[ibre]) sont:
+
+Commissariat à l'Energie Atomique - CEA, établissement public de
+recherche à caractère scientifique, technique et industriel, dont le
+siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris.
+
+Centre National de la Recherche Scientifique - CNRS, établissement
+public à caractère scientifique et technologique, dont le siège est
+situé 3 rue Michel-Ange, 75794 Paris cedex 16.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, établissement public à caractère scientifique et technologique,
+dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153
+Le Chesnay cedex.
+
+
+ Préambule
+
+Ce contrat est une licence de logiciel libre dont l'objectif est de
+conférer aux utilisateurs la liberté de modification et de
+redistribution du logiciel régi par cette licence dans le cadre d'un
+modèle de diffusion en logiciel libre.
+
+L'exercice de ces libertés est assorti de certains devoirs à la charge
+des utilisateurs afin de préserver ce statut au cours des
+redistributions ultérieures.
+
+L'accessibilité au code source et les droits de copie, de modification
+et de redistribution qui en découlent ont pour contrepartie de n'offrir
+aux utilisateurs qu'une garantie limitée et de ne faire peser sur
+l'auteur du logiciel, le titulaire des droits patrimoniaux et les
+concédants successifs qu'une responsabilité restreinte.
+
+A cet égard l'attention de l'utilisateur est attirée sur les risques
+associés au chargement, à l'utilisation, à la modification et/ou au
+développement et à la reproduction du logiciel par l'utilisateur étant
+donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+manipuler et qui le réserve donc à des développeurs ou des
+professionnels avertis possédant des connaissances informatiques
+approfondies. Les utilisateurs sont donc invités à charger et tester
+l'adéquation du logiciel à leurs besoins dans des conditions permettant
+d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus
+généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
+sécurité. Ce contrat peut être reproduit et diffusé librement, sous
+réserve de le conserver en l'état, sans ajout ni suppression de clauses.
+
+Ce contrat est susceptible de s'appliquer à tout logiciel dont le
+titulaire des droits patrimoniaux décide de soumettre l'exploitation aux
+dispositions qu'il contient.
+
+
+ Article 1 - DEFINITIONS
+
+Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une
+lettre capitale, auront la signification suivante:
+
+Contrat: désigne le présent contrat de licence, ses éventuelles versions
+postérieures et annexes.
+
+Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code
+Source et le cas échéant sa documentation, dans leur état au moment de
+l'acceptation du Contrat par le Licencié.
+
+Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et
+éventuellement de Code Objet et le cas échéant sa documentation, dans
+leur état au moment de leur première diffusion sous les termes du Contrat.
+
+Logiciel Modifié: désigne le Logiciel modifié par au moins une
+Contribution.
+
+Code Source: désigne l'ensemble des instructions et des lignes de
+programme du Logiciel et auquel l'accès est nécessaire en vue de
+modifier le Logiciel.
+
+Code Objet: désigne les fichiers binaires issus de la compilation du
+Code Source.
+
+Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur
+sur le Logiciel Initial.
+
+Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le
+Contrat.
+
+Contributeur: désigne le Licencié auteur d'au moins une Contribution.
+
+Concédant: désigne le Titulaire ou toute personne physique ou morale
+distribuant le Logiciel sous le Contrat.
+
+Contribution: désigne l'ensemble des modifications, corrections,
+traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans
+le Logiciel par tout Contributeur, ainsi que tout Module Interne.
+
+Module: désigne un ensemble de fichiers sources y compris leur
+documentation qui permet de réaliser des fonctionnalités ou services
+supplémentaires à ceux fournis par le Logiciel.
+
+Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce
+Module et le Logiciel s'exécutent dans des espaces d'adressage
+différents, l'un appelant l'autre au moment de leur exécution.
+
+Module Interne: désigne tout Module lié au Logiciel de telle sorte
+qu'ils s'exécutent dans le même espace d'adressage.
+
+GNU GPL: désigne la GNU General Public License dans sa version 2 ou
+toute version ultérieure, telle que publiée par Free Software Foundation
+Inc.
+
+Parties: désigne collectivement le Licencié et le Concédant.
+
+Ces termes s'entendent au singulier comme au pluriel.
+
+
+ Article 2 - OBJET
+
+Le Contrat a pour objet la concession par le Concédant au Licencié d'une
+licence non exclusive, cessible et mondiale du Logiciel telle que
+définie ci-après à l'article 5 pour toute la durée de protection des droits
+portant sur ce Logiciel.
+
+
+ Article 3 - ACCEPTATION
+
+3.1 L'acceptation par le Licencié des termes du Contrat est réputée
+acquise du fait du premier des faits suivants:
+
+ * (i) le chargement du Logiciel par tout moyen notamment par
+ téléchargement à partir d'un serveur distant ou par chargement à
+ partir d'un support physique;
+ * (ii) le premier exercice par le Licencié de l'un quelconque des
+ droits concédés par le Contrat.
+
+3.2 Un exemplaire du Contrat, contenant notamment un avertissement
+relatif aux spécificités du Logiciel, à la restriction de garantie et à
+la limitation à un usage par des utilisateurs expérimentés a été mis à
+disposition du Licencié préalablement à son acceptation telle que
+définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris
+connaissance.
+
+
+ Article 4 - ENTREE EN VIGUEUR ET DUREE
+
+
+ 4.1 ENTREE EN VIGUEUR
+
+Le Contrat entre en vigueur à la date de son acceptation par le Licencié
+telle que définie en 3.1.
+
+
+ 4.2 DUREE
+
+Le Contrat produira ses effets pendant toute la durée légale de
+protection des droits patrimoniaux portant sur le Logiciel.
+
+
+ Article 5 - ETENDUE DES DROITS CONCEDES
+
+Le Concédant concède au Licencié, qui accepte, les droits suivants sur
+le Logiciel pour toutes destinations et pour la durée du Contrat dans
+les conditions ci-après détaillées.
+
+Par ailleurs, si le Concédant détient ou venait à détenir un ou
+plusieurs brevets d'invention protégeant tout ou partie des
+fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas
+opposer les éventuels droits conférés par ces brevets aux Licenciés
+successifs qui utiliseraient, exploiteraient ou modifieraient le
+Logiciel. En cas de cession de ces brevets, le Concédant s'engage à
+faire reprendre les obligations du présent alinéa aux cessionnaires.
+
+
+ 5.1 DROIT D'UTILISATION
+
+Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant
+aux domaines d'application, étant ci-après précisé que cela comporte:
+
+ 1. la reproduction permanente ou provisoire du Logiciel en tout ou
+ partie par tout moyen et sous toute forme.
+
+ 2. le chargement, l'affichage, l'exécution, ou le stockage du
+ Logiciel sur tout support.
+
+ 3. la possibilité d'en observer, d'en étudier, ou d'en tester le
+ fonctionnement afin de déterminer les idées et principes qui sont
+ à la base de n'importe quel élément de ce Logiciel; et ceci,
+ lorsque le Licencié effectue toute opération de chargement,
+ d'affichage, d'exécution, de transmission ou de stockage du
+ Logiciel qu'il est en droit d'effectuer en vertu du Contrat.
+
+
+ 5.2 DROIT D'APPORTER DES CONTRIBUTIONS
+
+Le droit d'apporter des Contributions comporte le droit de traduire,
+d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel
+et le droit de reproduire le logiciel en résultant.
+
+Le Licencié est autorisé à apporter toute Contribution au Logiciel sous
+réserve de mentionner, de façon explicite, son nom en tant qu'auteur de
+cette Contribution et la date de création de celle-ci.
+
+
+ 5.3 DROIT DE DISTRIBUTION
+
+Le droit de distribution comporte notamment le droit de diffuser, de
+transmettre et de communiquer le Logiciel au public sur tout support et
+par tout moyen ainsi que le droit de mettre sur le marché à titre
+onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé.
+
+Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou
+non, à des tiers dans les conditions ci-après détaillées.
+
+
+ 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
+
+Le Licencié est autorisé à distribuer des copies conformes du Logiciel,
+sous forme de Code Source ou de Code Objet, à condition que cette
+distribution respecte les dispositions du Contrat dans leur totalité et
+soit accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le Code Objet du Logiciel est redistribué,
+le Licencié permette aux futurs Licenciés d'accéder facilement au Code
+Source complet du Logiciel en indiquant les modalités d'accès, étant
+entendu que le coût additionnel d'acquisition du Code Source ne devra
+pas excéder le simple coût de transfert des données.
+
+
+ 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
+
+Lorsque le Licencié apporte une Contribution au Logiciel, les conditions
+de distribution du Logiciel Modifié en résultant sont alors soumises à
+l'intégralité des dispositions du Contrat.
+
+Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de
+code source ou de code objet, à condition que cette distribution
+respecte les dispositions du Contrat dans leur totalité et soit
+accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le code objet du Logiciel Modifié est
+redistribué, le Licencié permette aux futurs Licenciés d'accéder
+facilement au code source complet du Logiciel Modifié en indiquant les
+modalités d'accès, étant entendu que le coût additionnel d'acquisition
+du code source ne devra pas excéder le simple coût de transfert des données.
+
+
+ 5.3.3 DISTRIBUTION DES MODULES EXTERNES
+
+Lorsque le Licencié a développé un Module Externe les conditions du
+Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué
+sous un contrat de licence différent.
+
+
+ 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
+
+Le Licencié peut inclure un code soumis aux dispositions d'une des
+versions de la licence GNU GPL dans le Logiciel modifié ou non et
+distribuer l'ensemble sous les conditions de la même version de la
+licence GNU GPL.
+
+Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis
+aux dispositions d'une des versions de la licence GNU GPL et distribuer
+l'ensemble sous les conditions de la même version de la licence GNU GPL.
+
+
+ Article 6 - PROPRIETE INTELLECTUELLE
+
+
+ 6.1 SUR LE LOGICIEL INITIAL
+
+Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel
+Initial. Toute utilisation du Logiciel Initial est soumise au respect
+des conditions dans lesquelles le Titulaire a choisi de diffuser son
+oeuvre et nul autre n'a la faculté de modifier les conditions de
+diffusion de ce Logiciel Initial.
+
+Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi
+par le Contrat et ce, pour la durée visée à l'article 4.2.
+
+
+ 6.2 SUR LES CONTRIBUTIONS
+
+Le Licencié qui a développé une Contribution est titulaire sur celle-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable.
+
+
+ 6.3 SUR LES MODULES EXTERNES
+
+Le Licencié qui a développé un Module Externe est titulaire sur celui-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable et reste libre du choix du contrat régissant
+sa diffusion.
+
+
+ 6.4 DISPOSITIONS COMMUNES
+
+Le Licencié s'engage expressément:
+
+ 1. à ne pas supprimer ou modifier de quelque manière que ce soit les
+ mentions de propriété intellectuelle apposées sur le Logiciel;
+
+ 2. à reproduire à l'identique lesdites mentions de propriété
+ intellectuelle sur les copies du Logiciel modifié ou non.
+
+Le Licencié s'engage à ne pas porter atteinte, directement ou
+indirectement, aux droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs sur le Logiciel et à prendre, le cas échéant, à
+l'égard de son personnel toutes les mesures nécessaires pour assurer le
+respect des dits droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs.
+
+
+ Article 7 - SERVICES ASSOCIES
+
+7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de
+prestations d'assistance technique ou de maintenance du Logiciel.
+
+Cependant le Concédant reste libre de proposer ce type de services. Les
+termes et conditions d'une telle assistance technique et/ou d'une telle
+maintenance seront alors déterminés dans un acte séparé. Ces actes de
+maintenance et/ou assistance technique n'engageront que la seule
+responsabilité du Concédant qui les propose.
+
+7.2 De même, tout Concédant est libre de proposer, sous sa seule
+responsabilité, à ses licenciés une garantie, qui n'engagera que lui,
+lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce,
+dans les conditions qu'il souhaite. Cette garantie et les modalités
+financières de son application feront l'objet d'un acte séparé entre le
+Concédant et le Licencié.
+
+
+ Article 8 - RESPONSABILITE
+
+8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la
+faculté, sous réserve de prouver la faute du Concédant concerné, de
+solliciter la réparation du préjudice direct qu'il subirait du fait du
+Logiciel et dont il apportera la preuve.
+
+8.2 La responsabilité du Concédant est limitée aux engagements pris en
+application du Contrat et ne saurait être engagée en raison notamment:
+(i) des dommages dus à l'inexécution, totale ou partielle, de ses
+obligations par le Licencié, (ii) des dommages directs ou indirects
+découlant de l'utilisation ou des performances du Logiciel subis par le
+Licencié et (iii) plus généralement d'un quelconque dommage indirect. En
+particulier, les Parties conviennent expressément que tout préjudice
+financier ou commercial (par exemple perte de données, perte de
+bénéfices, perte d'exploitation, perte de clientèle ou de commandes,
+manque à gagner, trouble commercial quelconque) ou toute action dirigée
+contre le Licencié par un tiers, constitue un dommage indirect et
+n'ouvre pas droit à réparation par le Concédant.
+
+
+ Article 9 - GARANTIE
+
+9.1 Le Licencié reconnaît que l'état actuel des connaissances
+scientifiques et techniques au moment de la mise en circulation du
+Logiciel ne permet pas d'en tester et d'en vérifier toutes les
+utilisations ni de détecter l'existence d'éventuels défauts. L'attention
+du Licencié a été attirée sur ce point sur les risques associés au
+chargement, à l'utilisation, la modification et/ou au développement et à
+la reproduction du Logiciel qui sont réservés à des utilisateurs avertis.
+
+Il relève de la responsabilité du Licencié de contrôler, par tous
+moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et
+de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
+
+9.2 Le Concédant déclare de bonne foi être en droit de concéder
+l'ensemble des droits attachés au Logiciel (comprenant notamment les
+droits visés à l'article 5).
+
+9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le
+Concédant sans autre garantie, expresse ou tacite, que celle prévue à
+l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale,
+son caractère sécurisé, innovant ou pertinent.
+
+En particulier, le Concédant ne garantit pas que le Logiciel est exempt
+d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
+avec l'équipement du Licencié et sa configuration logicielle ni qu'il
+remplira les besoins du Licencié.
+
+9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le
+Logiciel ne porte pas atteinte à un quelconque droit de propriété
+intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
+autre droit de propriété. Ainsi, le Concédant exclut toute garantie au
+profit du Licencié contre les actions en contrefaçon qui pourraient être
+diligentées au titre de l'utilisation, de la modification, et de la
+redistribution du Logiciel. Néanmoins, si de telles actions sont
+exercées contre le Licencié, le Concédant lui apportera son aide
+technique et juridique pour sa défense. Cette aide technique et
+juridique est déterminée au cas par cas entre le Concédant concerné et
+le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage
+toute responsabilité quant à l'utilisation de la dénomination du
+Logiciel par le Licencié. Aucune garantie n'est apportée quant à
+l'existence de droits antérieurs sur le nom du Logiciel et sur
+l'existence d'une marque.
+
+
+ Article 10 - RESILIATION
+
+10.1 En cas de manquement par le Licencié aux obligations mises à sa
+charge par le Contrat, le Concédant pourra résilier de plein droit le
+Contrat trente (30) jours après notification adressée au Licencié et
+restée sans effet.
+
+10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à
+utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
+licences qu'il aura concédées antérieurement à la résiliation du Contrat
+resteront valides sous réserve qu'elles aient été effectuées en
+conformité avec le Contrat.
+
+
+ Article 11 - DISPOSITIONS DIVERSES
+
+
+ 11.1 CAUSE EXTERIEURE
+
+Aucune des Parties ne sera responsable d'un retard ou d'une défaillance
+d'exécution du Contrat qui serait dû à un cas de force majeure, un cas
+fortuit ou une cause extérieure, telle que, notamment, le mauvais
+fonctionnement ou les interruptions du réseau électrique ou de
+télécommunication, la paralysie du réseau liée à une attaque
+informatique, l'intervention des autorités gouvernementales, les
+catastrophes naturelles, les dégâts des eaux, les tremblements de terre,
+le feu, les explosions, les grèves et les conflits sociaux, l'état de
+guerre...
+
+11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
+plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du
+Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
+intéressée à s'en prévaloir ultérieurement.
+
+11.3 Le Contrat annule et remplace toute convention antérieure, écrite
+ou orale, entre les Parties sur le même objet et constitue l'accord
+entier entre les Parties sur cet objet. Aucune addition ou modification
+aux termes du Contrat n'aura d'effet à l'égard des Parties à moins
+d'être faite par écrit et signée par leurs représentants dûment habilités.
+
+11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat
+s'avèrerait contraire à une loi ou à un texte applicable, existants ou
+futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les
+amendements nécessaires pour se conformer à cette loi ou à ce texte.
+Toutes les autres dispositions resteront en vigueur. De même, la
+nullité, pour quelque raison que ce soit, d'une des dispositions du
+Contrat ne saurait entraîner la nullité de l'ensemble du Contrat.
+
+
+ 11.5 LANGUE
+
+Le Contrat est rédigé en langue française et en langue anglaise, ces
+deux versions faisant également foi.
+
+
+ Article 12 - NOUVELLES VERSIONS DU CONTRAT
+
+12.1 Toute personne est autorisée à copier et distribuer des copies de
+ce Contrat.
+
+12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé
+et ne peut être modifié que par les auteurs de la licence, lesquels se
+réservent le droit de publier périodiquement des mises à jour ou de
+nouvelles versions du Contrat, qui posséderont chacune un numéro
+distinct. Ces versions ultérieures seront susceptibles de prendre en
+compte de nouvelles problématiques rencontrées par les logiciels libres.
+
+12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra
+faire l'objet d'une diffusion ultérieure que sous la même version du
+Contrat ou une version postérieure, sous réserve des dispositions de
+l'article 5.3.4.
+
+
+ Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
+
+13.1 Le Contrat est régi par la loi française. Les Parties conviennent
+de tenter de régler à l'amiable les différends ou litiges qui
+viendraient à se produire par suite ou à l'occasion du Contrat.
+
+13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter
+de leur survenance et sauf situation relevant d'une procédure d'urgence,
+les différends ou litiges seront portés par la Partie la plus diligente
+devant les Tribunaux compétents de Paris.
+
+
+Version 2.0 du 2006-09-05.
From 2d41e2c03554e312190a955464a50ca616f96071 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Wed, 3 Nov 2021 15:28:52 +0100
Subject: [PATCH 016/113] fix licenses
- summary of licenses at root
- license files in modules
---
LICENSE | 1024 +-------------------------------------------------
edo/LICENSE | 502 +++++++++++++++++++++++++
mo/LICENSE | 1018 +++++++++++++++++++++++++++++++++++++++++++++++++
moeo/LICENSE | 1018 +++++++++++++++++++++++++++++++++++++++++++++++++
smp/LICENSE | 1018 +++++++++++++++++++++++++++++++++++++++++++++++++
5 files changed, 3564 insertions(+), 1016 deletions(-)
create mode 100644 edo/LICENSE
create mode 100644 mo/LICENSE
create mode 100644 moeo/LICENSE
create mode 100644 smp/LICENSE
diff --git a/LICENSE b/LICENSE
index b7f1e4658..7e4a015c0 100644
--- a/LICENSE
+++ b/LICENSE
@@ -1,1018 +1,10 @@
-CeCILL FREE SOFTWARE LICENSE AGREEMENT
+ParadisEO modules have different licenses, see LICENSE files in each directories:
- Notice
+- eo : LGPL v2.1
+- edo : LGPL v2.1
+- mo : CeCILL v2+ (GPL-like)
+- moeo: CeCILL v2+ (GPL-like)
+- smp : CeCILL v2+ (GPL-like)
+- problem: depend on each file (usually CeCILL).
-This Agreement is a Free Software license agreement that is the result
-of discussions between its authors in order to ensure compliance with
-the two main principles guiding its drafting:
-
- * firstly, compliance with the principles governing the distribution
- of Free Software: access to source code, broad rights granted to
- users,
- * secondly, the election of a governing law, French law, with which
- it is conformant, both as regards the law of torts and
- intellectual property law, and the protection that it offers to
- both authors and holders of the economic rights over software.
-
-The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
-license are:
-
-Commissariat à l'Energie Atomique - CEA, a public scientific, technical
-and industrial research establishment, having its principal place of
-business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
-
-Centre National de la Recherche Scientifique - CNRS, a public scientific
-and technological establishment, having its principal place of business
-at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
-
-Institut National de Recherche en Informatique et en Automatique -
-INRIA, a public scientific and technological establishment, having its
-principal place of business at Domaine de Voluceau, Rocquencourt, BP
-105, 78153 Le Chesnay cedex, France.
-
-
- Preamble
-
-The purpose of this Free Software license agreement is to grant users
-the right to modify and redistribute the software governed by this
-license within the framework of an open source distribution model.
-
-The exercising of these rights is conditional upon certain obligations
-for users so as to preserve this status for all subsequent redistributions.
-
-In consideration of access to the source code and the rights to copy,
-modify and redistribute granted by the license, users are provided only
-with a limited warranty and the software's author, the holder of the
-economic rights, and the successive licensors only have limited liability.
-
-In this respect, the risks associated with loading, using, modifying
-and/or developing or reproducing the software by the user are brought to
-the user's attention, given its Free Software status, which may make it
-complicated to use, with the result that its use is reserved for
-developers and experienced professionals having in-depth computer
-knowledge. Users are therefore encouraged to load and test the
-suitability of the software as regards their requirements in conditions
-enabling the security of their systems and/or data to be ensured and,
-more generally, to use and operate it in the same conditions of
-security. This Agreement may be freely reproduced and published,
-provided it is not altered, and that no provisions are either added or
-removed herefrom.
-
-This Agreement may apply to any or all software for which the holder of
-the economic rights decides to submit the use thereof to its provisions.
-
-
- Article 1 - DEFINITIONS
-
-For the purpose of this Agreement, when the following expressions
-commence with a capital letter, they shall have the following meaning:
-
-Agreement: means this license agreement, and its possible subsequent
-versions and annexes.
-
-Software: means the software in its Object Code and/or Source Code form
-and, where applicable, its documentation, "as is" when the Licensee
-accepts the Agreement.
-
-Initial Software: means the Software in its Source Code and possibly its
-Object Code form and, where applicable, its documentation, "as is" when
-it is first distributed under the terms and conditions of the Agreement.
-
-Modified Software: means the Software modified by at least one
-Contribution.
-
-Source Code: means all the Software's instructions and program lines to
-which access is required so as to modify the Software.
-
-Object Code: means the binary files originating from the compilation of
-the Source Code.
-
-Holder: means the holder(s) of the economic rights over the Initial
-Software.
-
-Licensee: means the Software user(s) having accepted the Agreement.
-
-Contributor: means a Licensee having made at least one Contribution.
-
-Licensor: means the Holder, or any other individual or legal entity, who
-distributes the Software under the Agreement.
-
-Contribution: means any or all modifications, corrections, translations,
-adaptations and/or new functions integrated into the Software by any or
-all Contributors, as well as any or all Internal Modules.
-
-Module: means a set of sources files including their documentation that
-enables supplementary functions or services in addition to those offered
-by the Software.
-
-External Module: means any or all Modules, not derived from the
-Software, so that this Module and the Software run in separate address
-spaces, with one calling the other when they are run.
-
-Internal Module: means any or all Module, connected to the Software so
-that they both execute in the same address space.
-
-GNU GPL: means the GNU General Public License version 2 or any
-subsequent version, as published by the Free Software Foundation Inc.
-
-Parties: mean both the Licensee and the Licensor.
-
-These expressions may be used both in singular and plural form.
-
-
- Article 2 - PURPOSE
-
-The purpose of the Agreement is the grant by the Licensor to the
-Licensee of a non-exclusive, transferable and worldwide license for the
-Software as set forth in Article 5 hereinafter for the whole term of the
-protection granted by the rights over said Software.
-
-
- Article 3 - ACCEPTANCE
-
-3.1 The Licensee shall be deemed as having accepted the terms and
-conditions of this Agreement upon the occurrence of the first of the
-following events:
-
- * (i) loading the Software by any or all means, notably, by
- downloading from a remote server, or by loading from a physical
- medium;
- * (ii) the first time the Licensee exercises any of the rights
- granted hereunder.
-
-3.2 One copy of the Agreement, containing a notice relating to the
-characteristics of the Software, to the limited warranty, and to the
-fact that its use is restricted to experienced users has been provided
-to the Licensee prior to its acceptance as set forth in Article 3.1
-hereinabove, and the Licensee hereby acknowledges that it has read and
-understood it.
-
-
- Article 4 - EFFECTIVE DATE AND TERM
-
-
- 4.1 EFFECTIVE DATE
-
-The Agreement shall become effective on the date when it is accepted by
-the Licensee as set forth in Article 3.1.
-
-
- 4.2 TERM
-
-The Agreement shall remain in force for the entire legal term of
-protection of the economic rights over the Software.
-
-
- Article 5 - SCOPE OF RIGHTS GRANTED
-
-The Licensor hereby grants to the Licensee, who accepts, the following
-rights over the Software for any or all use, and for the term of the
-Agreement, on the basis of the terms and conditions set forth hereinafter.
-
-Besides, if the Licensor owns or comes to own one or more patents
-protecting all or part of the functions of the Software or of its
-components, the Licensor undertakes not to enforce the rights granted by
-these patents against successive Licensees using, exploiting or
-modifying the Software. If these patents are transferred, the Licensor
-undertakes to have the transferees subscribe to the obligations set
-forth in this paragraph.
-
-
- 5.1 RIGHT OF USE
-
-The Licensee is authorized to use the Software, without any limitation
-as to its fields of application, with it being hereinafter specified
-that this comprises:
-
- 1. permanent or temporary reproduction of all or part of the Software
- by any or all means and in any or all form.
-
- 2. loading, displaying, running, or storing the Software on any or
- all medium.
-
- 3. entitlement to observe, study or test its operation so as to
- determine the ideas and principles behind any or all constituent
- elements of said Software. This shall apply when the Licensee
- carries out any or all loading, displaying, running, transmission
- or storage operation as regards the Software, that it is entitled
- to carry out hereunder.
-
-
- 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
-
-The right to make Contributions includes the right to translate, adapt,
-arrange, or make any or all modifications to the Software, and the right
-to reproduce the resulting software.
-
-The Licensee is authorized to make any or all Contributions to the
-Software provided that it includes an explicit notice that it is the
-author of said Contribution and indicates the date of the creation thereof.
-
-
- 5.3 RIGHT OF DISTRIBUTION
-
-In particular, the right of distribution includes the right to publish,
-transmit and communicate the Software to the general public on any or
-all medium, and by any or all means, and the right to market, either in
-consideration of a fee, or free of charge, one or more copies of the
-Software by any means.
-
-The Licensee is further authorized to distribute copies of the modified
-or unmodified Software to third parties according to the terms and
-conditions set forth hereinafter.
-
-
- 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
-
-The Licensee is authorized to distribute true copies of the Software in
-Source Code or Object Code form, provided that said distribution
-complies with all the provisions of the Agreement and is accompanied by:
-
- 1. a copy of the Agreement,
-
- 2. a notice relating to the limitation of both the Licensor's
- warranty and liability as set forth in Articles 8 and 9,
-
-and that, in the event that only the Object Code of the Software is
-redistributed, the Licensee allows future Licensees unhindered access to
-the full Source Code of the Software by indicating how to access it, it
-being understood that the additional cost of acquiring the Source Code
-shall not exceed the cost of transferring the data.
-
-
- 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
-
-When the Licensee makes a Contribution to the Software, the terms and
-conditions for the distribution of the resulting Modified Software
-become subject to all the provisions of this Agreement.
-
-The Licensee is authorized to distribute the Modified Software, in
-source code or object code form, provided that said distribution
-complies with all the provisions of the Agreement and is accompanied by:
-
- 1. a copy of the Agreement,
-
- 2. a notice relating to the limitation of both the Licensor's
- warranty and liability as set forth in Articles 8 and 9,
-
-and that, in the event that only the object code of the Modified
-Software is redistributed, the Licensee allows future Licensees
-unhindered access to the full source code of the Modified Software by
-indicating how to access it, it being understood that the additional
-cost of acquiring the source code shall not exceed the cost of
-transferring the data.
-
-
- 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
-
-When the Licensee has developed an External Module, the terms and
-conditions of this Agreement do not apply to said External Module, that
-may be distributed under a separate license agreement.
-
-
- 5.3.4 COMPATIBILITY WITH THE GNU GPL
-
-The Licensee can include a code that is subject to the provisions of one
-of the versions of the GNU GPL in the Modified or unmodified Software,
-and distribute that entire code under the terms of the same version of
-the GNU GPL.
-
-The Licensee can include the Modified or unmodified Software in a code
-that is subject to the provisions of one of the versions of the GNU GPL,
-and distribute that entire code under the terms of the same version of
-the GNU GPL.
-
-
- Article 6 - INTELLECTUAL PROPERTY
-
-
- 6.1 OVER THE INITIAL SOFTWARE
-
-The Holder owns the economic rights over the Initial Software. Any or
-all use of the Initial Software is subject to compliance with the terms
-and conditions under which the Holder has elected to distribute its work
-and no one shall be entitled to modify the terms and conditions for the
-distribution of said Initial Software.
-
-The Holder undertakes that the Initial Software will remain ruled at
-least by this Agreement, for the duration set forth in Article 4.2.
-
-
- 6.2 OVER THE CONTRIBUTIONS
-
-The Licensee who develops a Contribution is the owner of the
-intellectual property rights over this Contribution as defined by
-applicable law.
-
-
- 6.3 OVER THE EXTERNAL MODULES
-
-The Licensee who develops an External Module is the owner of the
-intellectual property rights over this External Module as defined by
-applicable law and is free to choose the type of agreement that shall
-govern its distribution.
-
-
- 6.4 JOINT PROVISIONS
-
-The Licensee expressly undertakes:
-
- 1. not to remove, or modify, in any manner, the intellectual property
- notices attached to the Software;
-
- 2. to reproduce said notices, in an identical manner, in the copies
- of the Software modified or not.
-
-The Licensee undertakes not to directly or indirectly infringe the
-intellectual property rights of the Holder and/or Contributors on the
-Software and to take, where applicable, vis-à-vis its staff, any and all
-measures required to ensure respect of said intellectual property rights
-of the Holder and/or Contributors.
-
-
- Article 7 - RELATED SERVICES
-
-7.1 Under no circumstances shall the Agreement oblige the Licensor to
-provide technical assistance or maintenance services for the Software.
-
-However, the Licensor is entitled to offer this type of services. The
-terms and conditions of such technical assistance, and/or such
-maintenance, shall be set forth in a separate instrument. Only the
-Licensor offering said maintenance and/or technical assistance services
-shall incur liability therefor.
-
-7.2 Similarly, any Licensor is entitled to offer to its licensees, under
-its sole responsibility, a warranty, that shall only be binding upon
-itself, for the redistribution of the Software and/or the Modified
-Software, under terms and conditions that it is free to decide. Said
-warranty, and the financial terms and conditions of its application,
-shall be subject of a separate instrument executed between the Licensor
-and the Licensee.
-
-
- Article 8 - LIABILITY
-
-8.1 Subject to the provisions of Article 8.2, the Licensee shall be
-entitled to claim compensation for any direct loss it may have suffered
-from the Software as a result of a fault on the part of the relevant
-Licensor, subject to providing evidence thereof.
-
-8.2 The Licensor's liability is limited to the commitments made under
-this Agreement and shall not be incurred as a result of in particular:
-(i) loss due the Licensee's total or partial failure to fulfill its
-obligations, (ii) direct or consequential loss that is suffered by the
-Licensee due to the use or performance of the Software, and (iii) more
-generally, any consequential loss. In particular the Parties expressly
-agree that any or all pecuniary or business loss (i.e. loss of data,
-loss of profits, operating loss, loss of customers or orders,
-opportunity cost, any disturbance to business activities) or any or all
-legal proceedings instituted against the Licensee by a third party,
-shall constitute consequential loss and shall not provide entitlement to
-any or all compensation from the Licensor.
-
-
- Article 9 - WARRANTY
-
-9.1 The Licensee acknowledges that the scientific and technical
-state-of-the-art when the Software was distributed did not enable all
-possible uses to be tested and verified, nor for the presence of
-possible defects to be detected. In this respect, the Licensee's
-attention has been drawn to the risks associated with loading, using,
-modifying and/or developing and reproducing the Software which are
-reserved for experienced users.
-
-The Licensee shall be responsible for verifying, by any or all means,
-the suitability of the product for its requirements, its good working
-order, and for ensuring that it shall not cause damage to either persons
-or properties.
-
-9.2 The Licensor hereby represents, in good faith, that it is entitled
-to grant all the rights over the Software (including in particular the
-rights set forth in Article 5).
-
-9.3 The Licensee acknowledges that the Software is supplied "as is" by
-the Licensor without any other express or tacit warranty, other than
-that provided for in Article 9.2 and, in particular, without any warranty
-as to its commercial value, its secured, safe, innovative or relevant
-nature.
-
-Specifically, the Licensor does not warrant that the Software is free
-from any error, that it will operate without interruption, that it will
-be compatible with the Licensee's own equipment and software
-configuration, nor that it will meet the Licensee's requirements.
-
-9.4 The Licensor does not either expressly or tacitly warrant that the
-Software does not infringe any third party intellectual property right
-relating to a patent, software or any other property right. Therefore,
-the Licensor disclaims any and all liability towards the Licensee
-arising out of any or all proceedings for infringement that may be
-instituted in respect of the use, modification and redistribution of the
-Software. Nevertheless, should such proceedings be instituted against
-the Licensee, the Licensor shall provide it with technical and legal
-assistance for its defense. Such technical and legal assistance shall be
-decided on a case-by-case basis between the relevant Licensor and the
-Licensee pursuant to a memorandum of understanding. The Licensor
-disclaims any and all liability as regards the Licensee's use of the
-name of the Software. No warranty is given as regards the existence of
-prior rights over the name of the Software or as regards the existence
-of a trademark.
-
-
- Article 10 - TERMINATION
-
-10.1 In the event of a breach by the Licensee of its obligations
-hereunder, the Licensor may automatically terminate this Agreement
-thirty (30) days after notice has been sent to the Licensee and has
-remained ineffective.
-
-10.2 A Licensee whose Agreement is terminated shall no longer be
-authorized to use, modify or distribute the Software. However, any
-licenses that it may have granted prior to termination of the Agreement
-shall remain valid subject to their having been granted in compliance
-with the terms and conditions hereof.
-
-
- Article 11 - MISCELLANEOUS
-
-
- 11.1 EXCUSABLE EVENTS
-
-Neither Party shall be liable for any or all delay, or failure to
-perform the Agreement, that may be attributable to an event of force
-majeure, an act of God or an outside cause, such as defective
-functioning or interruptions of the electricity or telecommunications
-networks, network paralysis following a virus attack, intervention by
-government authorities, natural disasters, water damage, earthquakes,
-fire, explosions, strikes and labor unrest, war, etc.
-
-11.2 Any failure by either Party, on one or more occasions, to invoke
-one or more of the provisions hereof, shall under no circumstances be
-interpreted as being a waiver by the interested Party of its right to
-invoke said provision(s) subsequently.
-
-11.3 The Agreement cancels and replaces any or all previous agreements,
-whether written or oral, between the Parties and having the same
-purpose, and constitutes the entirety of the agreement between said
-Parties concerning said purpose. No supplement or modification to the
-terms and conditions hereof shall be effective as between the Parties
-unless it is made in writing and signed by their duly authorized
-representatives.
-
-11.4 In the event that one or more of the provisions hereof were to
-conflict with a current or future applicable act or legislative text,
-said act or legislative text shall prevail, and the Parties shall make
-the necessary amendments so as to comply with said act or legislative
-text. All other provisions shall remain effective. Similarly, invalidity
-of a provision of the Agreement, for any reason whatsoever, shall not
-cause the Agreement as a whole to be invalid.
-
-
- 11.5 LANGUAGE
-
-The Agreement is drafted in both French and English and both versions
-are deemed authentic.
-
-
- Article 12 - NEW VERSIONS OF THE AGREEMENT
-
-12.1 Any person is authorized to duplicate and distribute copies of this
-Agreement.
-
-12.2 So as to ensure coherence, the wording of this Agreement is
-protected and may only be modified by the authors of the License, who
-reserve the right to periodically publish updates or new versions of the
-Agreement, each with a separate number. These subsequent versions may
-address new issues encountered by Free Software.
-
-12.3 Any Software distributed under a given version of the Agreement may
-only be subsequently distributed under the same version of the Agreement
-or a subsequent version, subject to the provisions of Article 5.3.4.
-
-
- Article 13 - GOVERNING LAW AND JURISDICTION
-
-13.1 The Agreement is governed by French law. The Parties agree to
-endeavor to seek an amicable solution to any disagreements or disputes
-that may arise during the performance of the Agreement.
-
-13.2 Failing an amicable solution within two (2) months as from their
-occurrence, and unless emergency proceedings are necessary, the
-disagreements or disputes shall be referred to the Paris Courts having
-jurisdiction, by the more diligent Party.
-
-
-Version 2.0 dated 2006-09-05.
-
-------------------------------------------------------------------------------
-
-CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL
-
-
- Avertissement
-
-Ce contrat est une licence de logiciel libre issue d'une concertation
-entre ses auteurs afin que le respect de deux grands principes préside à
-sa rédaction:
-
- * d'une part, le respect des principes de diffusion des logiciels
- libres: accès au code source, droits étendus conférés aux
- utilisateurs,
- * d'autre part, la désignation d'un droit applicable, le droit
- français, auquel elle est conforme, tant au regard du droit de la
- responsabilité civile que du droit de la propriété intellectuelle
- et de la protection qu'il offre aux auteurs et titulaires des
- droits patrimoniaux sur un logiciel.
-
-Les auteurs de la licence CeCILL (pour Ce[a] C[nrs] I[nria] L[ogiciel]
-L[ibre]) sont:
-
-Commissariat à l'Energie Atomique - CEA, établissement public de
-recherche à caractère scientifique, technique et industriel, dont le
-siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris.
-
-Centre National de la Recherche Scientifique - CNRS, établissement
-public à caractère scientifique et technologique, dont le siège est
-situé 3 rue Michel-Ange, 75794 Paris cedex 16.
-
-Institut National de Recherche en Informatique et en Automatique -
-INRIA, établissement public à caractère scientifique et technologique,
-dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153
-Le Chesnay cedex.
-
-
- Préambule
-
-Ce contrat est une licence de logiciel libre dont l'objectif est de
-conférer aux utilisateurs la liberté de modification et de
-redistribution du logiciel régi par cette licence dans le cadre d'un
-modèle de diffusion en logiciel libre.
-
-L'exercice de ces libertés est assorti de certains devoirs à la charge
-des utilisateurs afin de préserver ce statut au cours des
-redistributions ultérieures.
-
-L'accessibilité au code source et les droits de copie, de modification
-et de redistribution qui en découlent ont pour contrepartie de n'offrir
-aux utilisateurs qu'une garantie limitée et de ne faire peser sur
-l'auteur du logiciel, le titulaire des droits patrimoniaux et les
-concédants successifs qu'une responsabilité restreinte.
-
-A cet égard l'attention de l'utilisateur est attirée sur les risques
-associés au chargement, à l'utilisation, à la modification et/ou au
-développement et à la reproduction du logiciel par l'utilisateur étant
-donné sa spécificité de logiciel libre, qui peut le rendre complexe à
-manipuler et qui le réserve donc à des développeurs ou des
-professionnels avertis possédant des connaissances informatiques
-approfondies. Les utilisateurs sont donc invités à charger et tester
-l'adéquation du logiciel à leurs besoins dans des conditions permettant
-d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus
-généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
-sécurité. Ce contrat peut être reproduit et diffusé librement, sous
-réserve de le conserver en l'état, sans ajout ni suppression de clauses.
-
-Ce contrat est susceptible de s'appliquer à tout logiciel dont le
-titulaire des droits patrimoniaux décide de soumettre l'exploitation aux
-dispositions qu'il contient.
-
-
- Article 1 - DEFINITIONS
-
-Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une
-lettre capitale, auront la signification suivante:
-
-Contrat: désigne le présent contrat de licence, ses éventuelles versions
-postérieures et annexes.
-
-Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code
-Source et le cas échéant sa documentation, dans leur état au moment de
-l'acceptation du Contrat par le Licencié.
-
-Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et
-éventuellement de Code Objet et le cas échéant sa documentation, dans
-leur état au moment de leur première diffusion sous les termes du Contrat.
-
-Logiciel Modifié: désigne le Logiciel modifié par au moins une
-Contribution.
-
-Code Source: désigne l'ensemble des instructions et des lignes de
-programme du Logiciel et auquel l'accès est nécessaire en vue de
-modifier le Logiciel.
-
-Code Objet: désigne les fichiers binaires issus de la compilation du
-Code Source.
-
-Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur
-sur le Logiciel Initial.
-
-Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le
-Contrat.
-
-Contributeur: désigne le Licencié auteur d'au moins une Contribution.
-
-Concédant: désigne le Titulaire ou toute personne physique ou morale
-distribuant le Logiciel sous le Contrat.
-
-Contribution: désigne l'ensemble des modifications, corrections,
-traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans
-le Logiciel par tout Contributeur, ainsi que tout Module Interne.
-
-Module: désigne un ensemble de fichiers sources y compris leur
-documentation qui permet de réaliser des fonctionnalités ou services
-supplémentaires à ceux fournis par le Logiciel.
-
-Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce
-Module et le Logiciel s'exécutent dans des espaces d'adressage
-différents, l'un appelant l'autre au moment de leur exécution.
-
-Module Interne: désigne tout Module lié au Logiciel de telle sorte
-qu'ils s'exécutent dans le même espace d'adressage.
-
-GNU GPL: désigne la GNU General Public License dans sa version 2 ou
-toute version ultérieure, telle que publiée par Free Software Foundation
-Inc.
-
-Parties: désigne collectivement le Licencié et le Concédant.
-
-Ces termes s'entendent au singulier comme au pluriel.
-
-
- Article 2 - OBJET
-
-Le Contrat a pour objet la concession par le Concédant au Licencié d'une
-licence non exclusive, cessible et mondiale du Logiciel telle que
-définie ci-après à l'article 5 pour toute la durée de protection des droits
-portant sur ce Logiciel.
-
-
- Article 3 - ACCEPTATION
-
-3.1 L'acceptation par le Licencié des termes du Contrat est réputée
-acquise du fait du premier des faits suivants:
-
- * (i) le chargement du Logiciel par tout moyen notamment par
- téléchargement à partir d'un serveur distant ou par chargement à
- partir d'un support physique;
- * (ii) le premier exercice par le Licencié de l'un quelconque des
- droits concédés par le Contrat.
-
-3.2 Un exemplaire du Contrat, contenant notamment un avertissement
-relatif aux spécificités du Logiciel, à la restriction de garantie et à
-la limitation à un usage par des utilisateurs expérimentés a été mis à
-disposition du Licencié préalablement à son acceptation telle que
-définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris
-connaissance.
-
-
- Article 4 - ENTREE EN VIGUEUR ET DUREE
-
-
- 4.1 ENTREE EN VIGUEUR
-
-Le Contrat entre en vigueur à la date de son acceptation par le Licencié
-telle que définie en 3.1.
-
-
- 4.2 DUREE
-
-Le Contrat produira ses effets pendant toute la durée légale de
-protection des droits patrimoniaux portant sur le Logiciel.
-
-
- Article 5 - ETENDUE DES DROITS CONCEDES
-
-Le Concédant concède au Licencié, qui accepte, les droits suivants sur
-le Logiciel pour toutes destinations et pour la durée du Contrat dans
-les conditions ci-après détaillées.
-
-Par ailleurs, si le Concédant détient ou venait à détenir un ou
-plusieurs brevets d'invention protégeant tout ou partie des
-fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas
-opposer les éventuels droits conférés par ces brevets aux Licenciés
-successifs qui utiliseraient, exploiteraient ou modifieraient le
-Logiciel. En cas de cession de ces brevets, le Concédant s'engage à
-faire reprendre les obligations du présent alinéa aux cessionnaires.
-
-
- 5.1 DROIT D'UTILISATION
-
-Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant
-aux domaines d'application, étant ci-après précisé que cela comporte:
-
- 1. la reproduction permanente ou provisoire du Logiciel en tout ou
- partie par tout moyen et sous toute forme.
-
- 2. le chargement, l'affichage, l'exécution, ou le stockage du
- Logiciel sur tout support.
-
- 3. la possibilité d'en observer, d'en étudier, ou d'en tester le
- fonctionnement afin de déterminer les idées et principes qui sont
- à la base de n'importe quel élément de ce Logiciel; et ceci,
- lorsque le Licencié effectue toute opération de chargement,
- d'affichage, d'exécution, de transmission ou de stockage du
- Logiciel qu'il est en droit d'effectuer en vertu du Contrat.
-
-
- 5.2 DROIT D'APPORTER DES CONTRIBUTIONS
-
-Le droit d'apporter des Contributions comporte le droit de traduire,
-d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel
-et le droit de reproduire le logiciel en résultant.
-
-Le Licencié est autorisé à apporter toute Contribution au Logiciel sous
-réserve de mentionner, de façon explicite, son nom en tant qu'auteur de
-cette Contribution et la date de création de celle-ci.
-
-
- 5.3 DROIT DE DISTRIBUTION
-
-Le droit de distribution comporte notamment le droit de diffuser, de
-transmettre et de communiquer le Logiciel au public sur tout support et
-par tout moyen ainsi que le droit de mettre sur le marché à titre
-onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé.
-
-Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou
-non, à des tiers dans les conditions ci-après détaillées.
-
-
- 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
-
-Le Licencié est autorisé à distribuer des copies conformes du Logiciel,
-sous forme de Code Source ou de Code Objet, à condition que cette
-distribution respecte les dispositions du Contrat dans leur totalité et
-soit accompagnée:
-
- 1. d'un exemplaire du Contrat,
-
- 2. d'un avertissement relatif à la restriction de garantie et de
- responsabilité du Concédant telle que prévue aux articles 8
- et 9,
-
-et que, dans le cas où seul le Code Objet du Logiciel est redistribué,
-le Licencié permette aux futurs Licenciés d'accéder facilement au Code
-Source complet du Logiciel en indiquant les modalités d'accès, étant
-entendu que le coût additionnel d'acquisition du Code Source ne devra
-pas excéder le simple coût de transfert des données.
-
-
- 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
-
-Lorsque le Licencié apporte une Contribution au Logiciel, les conditions
-de distribution du Logiciel Modifié en résultant sont alors soumises à
-l'intégralité des dispositions du Contrat.
-
-Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de
-code source ou de code objet, à condition que cette distribution
-respecte les dispositions du Contrat dans leur totalité et soit
-accompagnée:
-
- 1. d'un exemplaire du Contrat,
-
- 2. d'un avertissement relatif à la restriction de garantie et de
- responsabilité du Concédant telle que prévue aux articles 8
- et 9,
-
-et que, dans le cas où seul le code objet du Logiciel Modifié est
-redistribué, le Licencié permette aux futurs Licenciés d'accéder
-facilement au code source complet du Logiciel Modifié en indiquant les
-modalités d'accès, étant entendu que le coût additionnel d'acquisition
-du code source ne devra pas excéder le simple coût de transfert des données.
-
-
- 5.3.3 DISTRIBUTION DES MODULES EXTERNES
-
-Lorsque le Licencié a développé un Module Externe les conditions du
-Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué
-sous un contrat de licence différent.
-
-
- 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
-
-Le Licencié peut inclure un code soumis aux dispositions d'une des
-versions de la licence GNU GPL dans le Logiciel modifié ou non et
-distribuer l'ensemble sous les conditions de la même version de la
-licence GNU GPL.
-
-Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis
-aux dispositions d'une des versions de la licence GNU GPL et distribuer
-l'ensemble sous les conditions de la même version de la licence GNU GPL.
-
-
- Article 6 - PROPRIETE INTELLECTUELLE
-
-
- 6.1 SUR LE LOGICIEL INITIAL
-
-Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel
-Initial. Toute utilisation du Logiciel Initial est soumise au respect
-des conditions dans lesquelles le Titulaire a choisi de diffuser son
-oeuvre et nul autre n'a la faculté de modifier les conditions de
-diffusion de ce Logiciel Initial.
-
-Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi
-par le Contrat et ce, pour la durée visée à l'article 4.2.
-
-
- 6.2 SUR LES CONTRIBUTIONS
-
-Le Licencié qui a développé une Contribution est titulaire sur celle-ci
-des droits de propriété intellectuelle dans les conditions définies par
-la législation applicable.
-
-
- 6.3 SUR LES MODULES EXTERNES
-
-Le Licencié qui a développé un Module Externe est titulaire sur celui-ci
-des droits de propriété intellectuelle dans les conditions définies par
-la législation applicable et reste libre du choix du contrat régissant
-sa diffusion.
-
-
- 6.4 DISPOSITIONS COMMUNES
-
-Le Licencié s'engage expressément:
-
- 1. à ne pas supprimer ou modifier de quelque manière que ce soit les
- mentions de propriété intellectuelle apposées sur le Logiciel;
-
- 2. à reproduire à l'identique lesdites mentions de propriété
- intellectuelle sur les copies du Logiciel modifié ou non.
-
-Le Licencié s'engage à ne pas porter atteinte, directement ou
-indirectement, aux droits de propriété intellectuelle du Titulaire et/ou
-des Contributeurs sur le Logiciel et à prendre, le cas échéant, à
-l'égard de son personnel toutes les mesures nécessaires pour assurer le
-respect des dits droits de propriété intellectuelle du Titulaire et/ou
-des Contributeurs.
-
-
- Article 7 - SERVICES ASSOCIES
-
-7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de
-prestations d'assistance technique ou de maintenance du Logiciel.
-
-Cependant le Concédant reste libre de proposer ce type de services. Les
-termes et conditions d'une telle assistance technique et/ou d'une telle
-maintenance seront alors déterminés dans un acte séparé. Ces actes de
-maintenance et/ou assistance technique n'engageront que la seule
-responsabilité du Concédant qui les propose.
-
-7.2 De même, tout Concédant est libre de proposer, sous sa seule
-responsabilité, à ses licenciés une garantie, qui n'engagera que lui,
-lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce,
-dans les conditions qu'il souhaite. Cette garantie et les modalités
-financières de son application feront l'objet d'un acte séparé entre le
-Concédant et le Licencié.
-
-
- Article 8 - RESPONSABILITE
-
-8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la
-faculté, sous réserve de prouver la faute du Concédant concerné, de
-solliciter la réparation du préjudice direct qu'il subirait du fait du
-Logiciel et dont il apportera la preuve.
-
-8.2 La responsabilité du Concédant est limitée aux engagements pris en
-application du Contrat et ne saurait être engagée en raison notamment:
-(i) des dommages dus à l'inexécution, totale ou partielle, de ses
-obligations par le Licencié, (ii) des dommages directs ou indirects
-découlant de l'utilisation ou des performances du Logiciel subis par le
-Licencié et (iii) plus généralement d'un quelconque dommage indirect. En
-particulier, les Parties conviennent expressément que tout préjudice
-financier ou commercial (par exemple perte de données, perte de
-bénéfices, perte d'exploitation, perte de clientèle ou de commandes,
-manque à gagner, trouble commercial quelconque) ou toute action dirigée
-contre le Licencié par un tiers, constitue un dommage indirect et
-n'ouvre pas droit à réparation par le Concédant.
-
-
- Article 9 - GARANTIE
-
-9.1 Le Licencié reconnaît que l'état actuel des connaissances
-scientifiques et techniques au moment de la mise en circulation du
-Logiciel ne permet pas d'en tester et d'en vérifier toutes les
-utilisations ni de détecter l'existence d'éventuels défauts. L'attention
-du Licencié a été attirée sur ce point sur les risques associés au
-chargement, à l'utilisation, la modification et/ou au développement et à
-la reproduction du Logiciel qui sont réservés à des utilisateurs avertis.
-
-Il relève de la responsabilité du Licencié de contrôler, par tous
-moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et
-de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
-
-9.2 Le Concédant déclare de bonne foi être en droit de concéder
-l'ensemble des droits attachés au Logiciel (comprenant notamment les
-droits visés à l'article 5).
-
-9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le
-Concédant sans autre garantie, expresse ou tacite, que celle prévue à
-l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale,
-son caractère sécurisé, innovant ou pertinent.
-
-En particulier, le Concédant ne garantit pas que le Logiciel est exempt
-d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
-avec l'équipement du Licencié et sa configuration logicielle ni qu'il
-remplira les besoins du Licencié.
-
-9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le
-Logiciel ne porte pas atteinte à un quelconque droit de propriété
-intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
-autre droit de propriété. Ainsi, le Concédant exclut toute garantie au
-profit du Licencié contre les actions en contrefaçon qui pourraient être
-diligentées au titre de l'utilisation, de la modification, et de la
-redistribution du Logiciel. Néanmoins, si de telles actions sont
-exercées contre le Licencié, le Concédant lui apportera son aide
-technique et juridique pour sa défense. Cette aide technique et
-juridique est déterminée au cas par cas entre le Concédant concerné et
-le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage
-toute responsabilité quant à l'utilisation de la dénomination du
-Logiciel par le Licencié. Aucune garantie n'est apportée quant à
-l'existence de droits antérieurs sur le nom du Logiciel et sur
-l'existence d'une marque.
-
-
- Article 10 - RESILIATION
-
-10.1 En cas de manquement par le Licencié aux obligations mises à sa
-charge par le Contrat, le Concédant pourra résilier de plein droit le
-Contrat trente (30) jours après notification adressée au Licencié et
-restée sans effet.
-
-10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à
-utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
-licences qu'il aura concédées antérieurement à la résiliation du Contrat
-resteront valides sous réserve qu'elles aient été effectuées en
-conformité avec le Contrat.
-
-
- Article 11 - DISPOSITIONS DIVERSES
-
-
- 11.1 CAUSE EXTERIEURE
-
-Aucune des Parties ne sera responsable d'un retard ou d'une défaillance
-d'exécution du Contrat qui serait dû à un cas de force majeure, un cas
-fortuit ou une cause extérieure, telle que, notamment, le mauvais
-fonctionnement ou les interruptions du réseau électrique ou de
-télécommunication, la paralysie du réseau liée à une attaque
-informatique, l'intervention des autorités gouvernementales, les
-catastrophes naturelles, les dégâts des eaux, les tremblements de terre,
-le feu, les explosions, les grèves et les conflits sociaux, l'état de
-guerre...
-
-11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
-plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du
-Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
-intéressée à s'en prévaloir ultérieurement.
-
-11.3 Le Contrat annule et remplace toute convention antérieure, écrite
-ou orale, entre les Parties sur le même objet et constitue l'accord
-entier entre les Parties sur cet objet. Aucune addition ou modification
-aux termes du Contrat n'aura d'effet à l'égard des Parties à moins
-d'être faite par écrit et signée par leurs représentants dûment habilités.
-
-11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat
-s'avèrerait contraire à une loi ou à un texte applicable, existants ou
-futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les
-amendements nécessaires pour se conformer à cette loi ou à ce texte.
-Toutes les autres dispositions resteront en vigueur. De même, la
-nullité, pour quelque raison que ce soit, d'une des dispositions du
-Contrat ne saurait entraîner la nullité de l'ensemble du Contrat.
-
-
- 11.5 LANGUE
-
-Le Contrat est rédigé en langue française et en langue anglaise, ces
-deux versions faisant également foi.
-
-
- Article 12 - NOUVELLES VERSIONS DU CONTRAT
-
-12.1 Toute personne est autorisée à copier et distribuer des copies de
-ce Contrat.
-
-12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé
-et ne peut être modifié que par les auteurs de la licence, lesquels se
-réservent le droit de publier périodiquement des mises à jour ou de
-nouvelles versions du Contrat, qui posséderont chacune un numéro
-distinct. Ces versions ultérieures seront susceptibles de prendre en
-compte de nouvelles problématiques rencontrées par les logiciels libres.
-
-12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra
-faire l'objet d'une diffusion ultérieure que sous la même version du
-Contrat ou une version postérieure, sous réserve des dispositions de
-l'article 5.3.4.
-
-
- Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
-
-13.1 Le Contrat est régi par la loi française. Les Parties conviennent
-de tenter de régler à l'amiable les différends ou litiges qui
-viendraient à se produire par suite ou à l'occasion du Contrat.
-
-13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter
-de leur survenance et sauf situation relevant d'une procédure d'urgence,
-les différends ou litiges seront portés par la Partie la plus diligente
-devant les Tribunaux compétents de Paris.
-
-
-Version 2.0 du 2006-09-05.
+You may also double check the headers of source code files.
diff --git a/edo/LICENSE b/edo/LICENSE
new file mode 100644
index 000000000..b8df7fd44
--- /dev/null
+++ b/edo/LICENSE
@@ -0,0 +1,502 @@
+ GNU LESSER GENERAL PUBLIC LICENSE
+ Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL. It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it. You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+ When we speak of free software, we are referring to freedom of use,
+not price. Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+ To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights. These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ To protect each distributor, we want to make it very clear that
+there is no warranty for the free library. Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+ Finally, software patents pose a constant threat to the existence of
+any free program. We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder. Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+ Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License. This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License. We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+ When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library. The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom. The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+ We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License. It also provides other free software developers Less
+of an advantage over competing non-free programs. These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries. However, the Lesser license provides advantages in certain
+special circumstances.
+
+ For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard. To achieve this, non-free programs must be
+allowed to use the library. A more frequent case is that a free
+library does the same job as widely used non-free libraries. In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+ In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software. For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+ Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+ GNU LESSER GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+ 6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Use a suitable shared library mechanism for linking with the
+ Library. A suitable mechanism is one that (1) uses at run time a
+ copy of the library already present on the user's computer system,
+ rather than copying library functions into the executable, and (2)
+ will operate properly with a modified version of the library, if
+ the user installs one, as long as the modified version is
+ interface-compatible with the version that the work was made with.
+
+ c) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ d) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ e) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+
+ Copyright (C)
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Lesser General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Lesser General Public License for more details.
+
+ You should have received a copy of the GNU Lesser General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ , 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
diff --git a/mo/LICENSE b/mo/LICENSE
new file mode 100644
index 000000000..b7f1e4658
--- /dev/null
+++ b/mo/LICENSE
@@ -0,0 +1,1018 @@
+CeCILL FREE SOFTWARE LICENSE AGREEMENT
+
+ Notice
+
+This Agreement is a Free Software license agreement that is the result
+of discussions between its authors in order to ensure compliance with
+the two main principles guiding its drafting:
+
+ * firstly, compliance with the principles governing the distribution
+ of Free Software: access to source code, broad rights granted to
+ users,
+ * secondly, the election of a governing law, French law, with which
+ it is conformant, both as regards the law of torts and
+ intellectual property law, and the protection that it offers to
+ both authors and holders of the economic rights over software.
+
+The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
+license are:
+
+Commissariat à l'Energie Atomique - CEA, a public scientific, technical
+and industrial research establishment, having its principal place of
+business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific
+and technological establishment, having its principal place of business
+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, a public scientific and technological establishment, having its
+principal place of business at Domaine de Voluceau, Rocquencourt, BP
+105, 78153 Le Chesnay cedex, France.
+
+
+ Preamble
+
+The purpose of this Free Software license agreement is to grant users
+the right to modify and redistribute the software governed by this
+license within the framework of an open source distribution model.
+
+The exercising of these rights is conditional upon certain obligations
+for users so as to preserve this status for all subsequent redistributions.
+
+In consideration of access to the source code and the rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors only have limited liability.
+
+In this respect, the risks associated with loading, using, modifying
+and/or developing or reproducing the software by the user are brought to
+the user's attention, given its Free Software status, which may make it
+complicated to use, with the result that its use is reserved for
+developers and experienced professionals having in-depth computer
+knowledge. Users are therefore encouraged to load and test the
+suitability of the software as regards their requirements in conditions
+enabling the security of their systems and/or data to be ensured and,
+more generally, to use and operate it in the same conditions of
+security. This Agreement may be freely reproduced and published,
+provided it is not altered, and that no provisions are either added or
+removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of
+the economic rights decides to submit the use thereof to its provisions.
+
+
+ Article 1 - DEFINITIONS
+
+For the purpose of this Agreement, when the following expressions
+commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this license agreement, and its possible subsequent
+versions and annexes.
+
+Software: means the software in its Object Code and/or Source Code form
+and, where applicable, its documentation, "as is" when the Licensee
+accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and possibly its
+Object Code form and, where applicable, its documentation, "as is" when
+it is first distributed under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one
+Contribution.
+
+Source Code: means all the Software's instructions and program lines to
+which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of
+the Source Code.
+
+Holder: means the holder(s) of the economic rights over the Initial
+Software.
+
+Licensee: means the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any other individual or legal entity, who
+distributes the Software under the Agreement.
+
+Contribution: means any or all modifications, corrections, translations,
+adaptations and/or new functions integrated into the Software by any or
+all Contributors, as well as any or all Internal Modules.
+
+Module: means a set of sources files including their documentation that
+enables supplementary functions or services in addition to those offered
+by the Software.
+
+External Module: means any or all Modules, not derived from the
+Software, so that this Module and the Software run in separate address
+spaces, with one calling the other when they are run.
+
+Internal Module: means any or all Module, connected to the Software so
+that they both execute in the same address space.
+
+GNU GPL: means the GNU General Public License version 2 or any
+subsequent version, as published by the Free Software Foundation Inc.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+
+ Article 2 - PURPOSE
+
+The purpose of the Agreement is the grant by the Licensor to the
+Licensee of a non-exclusive, transferable and worldwide license for the
+Software as set forth in Article 5 hereinafter for the whole term of the
+protection granted by the rights over said Software.
+
+
+ Article 3 - ACCEPTANCE
+
+3.1 The Licensee shall be deemed as having accepted the terms and
+conditions of this Agreement upon the occurrence of the first of the
+following events:
+
+ * (i) loading the Software by any or all means, notably, by
+ downloading from a remote server, or by loading from a physical
+ medium;
+ * (ii) the first time the Licensee exercises any of the rights
+ granted hereunder.
+
+3.2 One copy of the Agreement, containing a notice relating to the
+characteristics of the Software, to the limited warranty, and to the
+fact that its use is restricted to experienced users has been provided
+to the Licensee prior to its acceptance as set forth in Article 3.1
+hereinabove, and the Licensee hereby acknowledges that it has read and
+understood it.
+
+
+ Article 4 - EFFECTIVE DATE AND TERM
+
+
+ 4.1 EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by
+the Licensee as set forth in Article 3.1.
+
+
+ 4.2 TERM
+
+The Agreement shall remain in force for the entire legal term of
+protection of the economic rights over the Software.
+
+
+ Article 5 - SCOPE OF RIGHTS GRANTED
+
+The Licensor hereby grants to the Licensee, who accepts, the following
+rights over the Software for any or all use, and for the term of the
+Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Besides, if the Licensor owns or comes to own one or more patents
+protecting all or part of the functions of the Software or of its
+components, the Licensor undertakes not to enforce the rights granted by
+these patents against successive Licensees using, exploiting or
+modifying the Software. If these patents are transferred, the Licensor
+undertakes to have the transferees subscribe to the obligations set
+forth in this paragraph.
+
+
+ 5.1 RIGHT OF USE
+
+The Licensee is authorized to use the Software, without any limitation
+as to its fields of application, with it being hereinafter specified
+that this comprises:
+
+ 1. permanent or temporary reproduction of all or part of the Software
+ by any or all means and in any or all form.
+
+ 2. loading, displaying, running, or storing the Software on any or
+ all medium.
+
+ 3. entitlement to observe, study or test its operation so as to
+ determine the ideas and principles behind any or all constituent
+ elements of said Software. This shall apply when the Licensee
+ carries out any or all loading, displaying, running, transmission
+ or storage operation as regards the Software, that it is entitled
+ to carry out hereunder.
+
+
+ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt,
+arrange, or make any or all modifications to the Software, and the right
+to reproduce the resulting software.
+
+The Licensee is authorized to make any or all Contributions to the
+Software provided that it includes an explicit notice that it is the
+author of said Contribution and indicates the date of the creation thereof.
+
+
+ 5.3 RIGHT OF DISTRIBUTION
+
+In particular, the right of distribution includes the right to publish,
+transmit and communicate the Software to the general public on any or
+all medium, and by any or all means, and the right to market, either in
+consideration of a fee, or free of charge, one or more copies of the
+Software by any means.
+
+The Licensee is further authorized to distribute copies of the modified
+or unmodified Software to third parties according to the terms and
+conditions set forth hereinafter.
+
+
+ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to distribute true copies of the Software in
+Source Code or Object Code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Object Code of the Software is
+redistributed, the Licensee allows future Licensees unhindered access to
+the full Source Code of the Software by indicating how to access it, it
+being understood that the additional cost of acquiring the Source Code
+shall not exceed the cost of transferring the data.
+
+
+ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
+
+When the Licensee makes a Contribution to the Software, the terms and
+conditions for the distribution of the resulting Modified Software
+become subject to all the provisions of this Agreement.
+
+The Licensee is authorized to distribute the Modified Software, in
+source code or object code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the object code of the Modified
+Software is redistributed, the Licensee allows future Licensees
+unhindered access to the full source code of the Modified Software by
+indicating how to access it, it being understood that the additional
+cost of acquiring the source code shall not exceed the cost of
+transferring the data.
+
+
+ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
+
+When the Licensee has developed an External Module, the terms and
+conditions of this Agreement do not apply to said External Module, that
+may be distributed under a separate license agreement.
+
+
+ 5.3.4 COMPATIBILITY WITH THE GNU GPL
+
+The Licensee can include a code that is subject to the provisions of one
+of the versions of the GNU GPL in the Modified or unmodified Software,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+The Licensee can include the Modified or unmodified Software in a code
+that is subject to the provisions of one of the versions of the GNU GPL,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+
+ Article 6 - INTELLECTUAL PROPERTY
+
+
+ 6.1 OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or
+all use of the Initial Software is subject to compliance with the terms
+and conditions under which the Holder has elected to distribute its work
+and no one shall be entitled to modify the terms and conditions for the
+distribution of said Initial Software.
+
+The Holder undertakes that the Initial Software will remain ruled at
+least by this Agreement, for the duration set forth in Article 4.2.
+
+
+ 6.2 OVER THE CONTRIBUTIONS
+
+The Licensee who develops a Contribution is the owner of the
+intellectual property rights over this Contribution as defined by
+applicable law.
+
+
+ 6.3 OVER THE EXTERNAL MODULES
+
+The Licensee who develops an External Module is the owner of the
+intellectual property rights over this External Module as defined by
+applicable law and is free to choose the type of agreement that shall
+govern its distribution.
+
+
+ 6.4 JOINT PROVISIONS
+
+The Licensee expressly undertakes:
+
+ 1. not to remove, or modify, in any manner, the intellectual property
+ notices attached to the Software;
+
+ 2. to reproduce said notices, in an identical manner, in the copies
+ of the Software modified or not.
+
+The Licensee undertakes not to directly or indirectly infringe the
+intellectual property rights of the Holder and/or Contributors on the
+Software and to take, where applicable, vis-à-vis its staff, any and all
+measures required to ensure respect of said intellectual property rights
+of the Holder and/or Contributors.
+
+
+ Article 7 - RELATED SERVICES
+
+7.1 Under no circumstances shall the Agreement oblige the Licensor to
+provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of services. The
+terms and conditions of such technical assistance, and/or such
+maintenance, shall be set forth in a separate instrument. Only the
+Licensor offering said maintenance and/or technical assistance services
+shall incur liability therefor.
+
+7.2 Similarly, any Licensor is entitled to offer to its licensees, under
+its sole responsibility, a warranty, that shall only be binding upon
+itself, for the redistribution of the Software and/or the Modified
+Software, under terms and conditions that it is free to decide. Said
+warranty, and the financial terms and conditions of its application,
+shall be subject of a separate instrument executed between the Licensor
+and the Licensee.
+
+
+ Article 8 - LIABILITY
+
+8.1 Subject to the provisions of Article 8.2, the Licensee shall be
+entitled to claim compensation for any direct loss it may have suffered
+from the Software as a result of a fault on the part of the relevant
+Licensor, subject to providing evidence thereof.
+
+8.2 The Licensor's liability is limited to the commitments made under
+this Agreement and shall not be incurred as a result of in particular:
+(i) loss due the Licensee's total or partial failure to fulfill its
+obligations, (ii) direct or consequential loss that is suffered by the
+Licensee due to the use or performance of the Software, and (iii) more
+generally, any consequential loss. In particular the Parties expressly
+agree that any or all pecuniary or business loss (i.e. loss of data,
+loss of profits, operating loss, loss of customers or orders,
+opportunity cost, any disturbance to business activities) or any or all
+legal proceedings instituted against the Licensee by a third party,
+shall constitute consequential loss and shall not provide entitlement to
+any or all compensation from the Licensor.
+
+
+ Article 9 - WARRANTY
+
+9.1 The Licensee acknowledges that the scientific and technical
+state-of-the-art when the Software was distributed did not enable all
+possible uses to be tested and verified, nor for the presence of
+possible defects to be detected. In this respect, the Licensee's
+attention has been drawn to the risks associated with loading, using,
+modifying and/or developing and reproducing the Software which are
+reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means,
+the suitability of the product for its requirements, its good working
+order, and for ensuring that it shall not cause damage to either persons
+or properties.
+
+9.2 The Licensor hereby represents, in good faith, that it is entitled
+to grant all the rights over the Software (including in particular the
+rights set forth in Article 5).
+
+9.3 The Licensee acknowledges that the Software is supplied "as is" by
+the Licensor without any other express or tacit warranty, other than
+that provided for in Article 9.2 and, in particular, without any warranty
+as to its commercial value, its secured, safe, innovative or relevant
+nature.
+
+Specifically, the Licensor does not warrant that the Software is free
+from any error, that it will operate without interruption, that it will
+be compatible with the Licensee's own equipment and software
+configuration, nor that it will meet the Licensee's requirements.
+
+9.4 The Licensor does not either expressly or tacitly warrant that the
+Software does not infringe any third party intellectual property right
+relating to a patent, software or any other property right. Therefore,
+the Licensor disclaims any and all liability towards the Licensee
+arising out of any or all proceedings for infringement that may be
+instituted in respect of the use, modification and redistribution of the
+Software. Nevertheless, should such proceedings be instituted against
+the Licensee, the Licensor shall provide it with technical and legal
+assistance for its defense. Such technical and legal assistance shall be
+decided on a case-by-case basis between the relevant Licensor and the
+Licensee pursuant to a memorandum of understanding. The Licensor
+disclaims any and all liability as regards the Licensee's use of the
+name of the Software. No warranty is given as regards the existence of
+prior rights over the name of the Software or as regards the existence
+of a trademark.
+
+
+ Article 10 - TERMINATION
+
+10.1 In the event of a breach by the Licensee of its obligations
+hereunder, the Licensor may automatically terminate this Agreement
+thirty (30) days after notice has been sent to the Licensee and has
+remained ineffective.
+
+10.2 A Licensee whose Agreement is terminated shall no longer be
+authorized to use, modify or distribute the Software. However, any
+licenses that it may have granted prior to termination of the Agreement
+shall remain valid subject to their having been granted in compliance
+with the terms and conditions hereof.
+
+
+ Article 11 - MISCELLANEOUS
+
+
+ 11.1 EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to
+perform the Agreement, that may be attributable to an event of force
+majeure, an act of God or an outside cause, such as defective
+functioning or interruptions of the electricity or telecommunications
+networks, network paralysis following a virus attack, intervention by
+government authorities, natural disasters, water damage, earthquakes,
+fire, explosions, strikes and labor unrest, war, etc.
+
+11.2 Any failure by either Party, on one or more occasions, to invoke
+one or more of the provisions hereof, shall under no circumstances be
+interpreted as being a waiver by the interested Party of its right to
+invoke said provision(s) subsequently.
+
+11.3 The Agreement cancels and replaces any or all previous agreements,
+whether written or oral, between the Parties and having the same
+purpose, and constitutes the entirety of the agreement between said
+Parties concerning said purpose. No supplement or modification to the
+terms and conditions hereof shall be effective as between the Parties
+unless it is made in writing and signed by their duly authorized
+representatives.
+
+11.4 In the event that one or more of the provisions hereof were to
+conflict with a current or future applicable act or legislative text,
+said act or legislative text shall prevail, and the Parties shall make
+the necessary amendments so as to comply with said act or legislative
+text. All other provisions shall remain effective. Similarly, invalidity
+of a provision of the Agreement, for any reason whatsoever, shall not
+cause the Agreement as a whole to be invalid.
+
+
+ 11.5 LANGUAGE
+
+The Agreement is drafted in both French and English and both versions
+are deemed authentic.
+
+
+ Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1 Any person is authorized to duplicate and distribute copies of this
+Agreement.
+
+12.2 So as to ensure coherence, the wording of this Agreement is
+protected and may only be modified by the authors of the License, who
+reserve the right to periodically publish updates or new versions of the
+Agreement, each with a separate number. These subsequent versions may
+address new issues encountered by Free Software.
+
+12.3 Any Software distributed under a given version of the Agreement may
+only be subsequently distributed under the same version of the Agreement
+or a subsequent version, subject to the provisions of Article 5.3.4.
+
+
+ Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1 The Agreement is governed by French law. The Parties agree to
+endeavor to seek an amicable solution to any disagreements or disputes
+that may arise during the performance of the Agreement.
+
+13.2 Failing an amicable solution within two (2) months as from their
+occurrence, and unless emergency proceedings are necessary, the
+disagreements or disputes shall be referred to the Paris Courts having
+jurisdiction, by the more diligent Party.
+
+
+Version 2.0 dated 2006-09-05.
+
+------------------------------------------------------------------------------
+
+CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL
+
+
+ Avertissement
+
+Ce contrat est une licence de logiciel libre issue d'une concertation
+entre ses auteurs afin que le respect de deux grands principes préside à
+sa rédaction:
+
+ * d'une part, le respect des principes de diffusion des logiciels
+ libres: accès au code source, droits étendus conférés aux
+ utilisateurs,
+ * d'autre part, la désignation d'un droit applicable, le droit
+ français, auquel elle est conforme, tant au regard du droit de la
+ responsabilité civile que du droit de la propriété intellectuelle
+ et de la protection qu'il offre aux auteurs et titulaires des
+ droits patrimoniaux sur un logiciel.
+
+Les auteurs de la licence CeCILL (pour Ce[a] C[nrs] I[nria] L[ogiciel]
+L[ibre]) sont:
+
+Commissariat à l'Energie Atomique - CEA, établissement public de
+recherche à caractère scientifique, technique et industriel, dont le
+siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris.
+
+Centre National de la Recherche Scientifique - CNRS, établissement
+public à caractère scientifique et technologique, dont le siège est
+situé 3 rue Michel-Ange, 75794 Paris cedex 16.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, établissement public à caractère scientifique et technologique,
+dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153
+Le Chesnay cedex.
+
+
+ Préambule
+
+Ce contrat est une licence de logiciel libre dont l'objectif est de
+conférer aux utilisateurs la liberté de modification et de
+redistribution du logiciel régi par cette licence dans le cadre d'un
+modèle de diffusion en logiciel libre.
+
+L'exercice de ces libertés est assorti de certains devoirs à la charge
+des utilisateurs afin de préserver ce statut au cours des
+redistributions ultérieures.
+
+L'accessibilité au code source et les droits de copie, de modification
+et de redistribution qui en découlent ont pour contrepartie de n'offrir
+aux utilisateurs qu'une garantie limitée et de ne faire peser sur
+l'auteur du logiciel, le titulaire des droits patrimoniaux et les
+concédants successifs qu'une responsabilité restreinte.
+
+A cet égard l'attention de l'utilisateur est attirée sur les risques
+associés au chargement, à l'utilisation, à la modification et/ou au
+développement et à la reproduction du logiciel par l'utilisateur étant
+donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+manipuler et qui le réserve donc à des développeurs ou des
+professionnels avertis possédant des connaissances informatiques
+approfondies. Les utilisateurs sont donc invités à charger et tester
+l'adéquation du logiciel à leurs besoins dans des conditions permettant
+d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus
+généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
+sécurité. Ce contrat peut être reproduit et diffusé librement, sous
+réserve de le conserver en l'état, sans ajout ni suppression de clauses.
+
+Ce contrat est susceptible de s'appliquer à tout logiciel dont le
+titulaire des droits patrimoniaux décide de soumettre l'exploitation aux
+dispositions qu'il contient.
+
+
+ Article 1 - DEFINITIONS
+
+Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une
+lettre capitale, auront la signification suivante:
+
+Contrat: désigne le présent contrat de licence, ses éventuelles versions
+postérieures et annexes.
+
+Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code
+Source et le cas échéant sa documentation, dans leur état au moment de
+l'acceptation du Contrat par le Licencié.
+
+Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et
+éventuellement de Code Objet et le cas échéant sa documentation, dans
+leur état au moment de leur première diffusion sous les termes du Contrat.
+
+Logiciel Modifié: désigne le Logiciel modifié par au moins une
+Contribution.
+
+Code Source: désigne l'ensemble des instructions et des lignes de
+programme du Logiciel et auquel l'accès est nécessaire en vue de
+modifier le Logiciel.
+
+Code Objet: désigne les fichiers binaires issus de la compilation du
+Code Source.
+
+Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur
+sur le Logiciel Initial.
+
+Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le
+Contrat.
+
+Contributeur: désigne le Licencié auteur d'au moins une Contribution.
+
+Concédant: désigne le Titulaire ou toute personne physique ou morale
+distribuant le Logiciel sous le Contrat.
+
+Contribution: désigne l'ensemble des modifications, corrections,
+traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans
+le Logiciel par tout Contributeur, ainsi que tout Module Interne.
+
+Module: désigne un ensemble de fichiers sources y compris leur
+documentation qui permet de réaliser des fonctionnalités ou services
+supplémentaires à ceux fournis par le Logiciel.
+
+Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce
+Module et le Logiciel s'exécutent dans des espaces d'adressage
+différents, l'un appelant l'autre au moment de leur exécution.
+
+Module Interne: désigne tout Module lié au Logiciel de telle sorte
+qu'ils s'exécutent dans le même espace d'adressage.
+
+GNU GPL: désigne la GNU General Public License dans sa version 2 ou
+toute version ultérieure, telle que publiée par Free Software Foundation
+Inc.
+
+Parties: désigne collectivement le Licencié et le Concédant.
+
+Ces termes s'entendent au singulier comme au pluriel.
+
+
+ Article 2 - OBJET
+
+Le Contrat a pour objet la concession par le Concédant au Licencié d'une
+licence non exclusive, cessible et mondiale du Logiciel telle que
+définie ci-après à l'article 5 pour toute la durée de protection des droits
+portant sur ce Logiciel.
+
+
+ Article 3 - ACCEPTATION
+
+3.1 L'acceptation par le Licencié des termes du Contrat est réputée
+acquise du fait du premier des faits suivants:
+
+ * (i) le chargement du Logiciel par tout moyen notamment par
+ téléchargement à partir d'un serveur distant ou par chargement à
+ partir d'un support physique;
+ * (ii) le premier exercice par le Licencié de l'un quelconque des
+ droits concédés par le Contrat.
+
+3.2 Un exemplaire du Contrat, contenant notamment un avertissement
+relatif aux spécificités du Logiciel, à la restriction de garantie et à
+la limitation à un usage par des utilisateurs expérimentés a été mis à
+disposition du Licencié préalablement à son acceptation telle que
+définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris
+connaissance.
+
+
+ Article 4 - ENTREE EN VIGUEUR ET DUREE
+
+
+ 4.1 ENTREE EN VIGUEUR
+
+Le Contrat entre en vigueur à la date de son acceptation par le Licencié
+telle que définie en 3.1.
+
+
+ 4.2 DUREE
+
+Le Contrat produira ses effets pendant toute la durée légale de
+protection des droits patrimoniaux portant sur le Logiciel.
+
+
+ Article 5 - ETENDUE DES DROITS CONCEDES
+
+Le Concédant concède au Licencié, qui accepte, les droits suivants sur
+le Logiciel pour toutes destinations et pour la durée du Contrat dans
+les conditions ci-après détaillées.
+
+Par ailleurs, si le Concédant détient ou venait à détenir un ou
+plusieurs brevets d'invention protégeant tout ou partie des
+fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas
+opposer les éventuels droits conférés par ces brevets aux Licenciés
+successifs qui utiliseraient, exploiteraient ou modifieraient le
+Logiciel. En cas de cession de ces brevets, le Concédant s'engage à
+faire reprendre les obligations du présent alinéa aux cessionnaires.
+
+
+ 5.1 DROIT D'UTILISATION
+
+Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant
+aux domaines d'application, étant ci-après précisé que cela comporte:
+
+ 1. la reproduction permanente ou provisoire du Logiciel en tout ou
+ partie par tout moyen et sous toute forme.
+
+ 2. le chargement, l'affichage, l'exécution, ou le stockage du
+ Logiciel sur tout support.
+
+ 3. la possibilité d'en observer, d'en étudier, ou d'en tester le
+ fonctionnement afin de déterminer les idées et principes qui sont
+ à la base de n'importe quel élément de ce Logiciel; et ceci,
+ lorsque le Licencié effectue toute opération de chargement,
+ d'affichage, d'exécution, de transmission ou de stockage du
+ Logiciel qu'il est en droit d'effectuer en vertu du Contrat.
+
+
+ 5.2 DROIT D'APPORTER DES CONTRIBUTIONS
+
+Le droit d'apporter des Contributions comporte le droit de traduire,
+d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel
+et le droit de reproduire le logiciel en résultant.
+
+Le Licencié est autorisé à apporter toute Contribution au Logiciel sous
+réserve de mentionner, de façon explicite, son nom en tant qu'auteur de
+cette Contribution et la date de création de celle-ci.
+
+
+ 5.3 DROIT DE DISTRIBUTION
+
+Le droit de distribution comporte notamment le droit de diffuser, de
+transmettre et de communiquer le Logiciel au public sur tout support et
+par tout moyen ainsi que le droit de mettre sur le marché à titre
+onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé.
+
+Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou
+non, à des tiers dans les conditions ci-après détaillées.
+
+
+ 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
+
+Le Licencié est autorisé à distribuer des copies conformes du Logiciel,
+sous forme de Code Source ou de Code Objet, à condition que cette
+distribution respecte les dispositions du Contrat dans leur totalité et
+soit accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le Code Objet du Logiciel est redistribué,
+le Licencié permette aux futurs Licenciés d'accéder facilement au Code
+Source complet du Logiciel en indiquant les modalités d'accès, étant
+entendu que le coût additionnel d'acquisition du Code Source ne devra
+pas excéder le simple coût de transfert des données.
+
+
+ 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
+
+Lorsque le Licencié apporte une Contribution au Logiciel, les conditions
+de distribution du Logiciel Modifié en résultant sont alors soumises à
+l'intégralité des dispositions du Contrat.
+
+Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de
+code source ou de code objet, à condition que cette distribution
+respecte les dispositions du Contrat dans leur totalité et soit
+accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le code objet du Logiciel Modifié est
+redistribué, le Licencié permette aux futurs Licenciés d'accéder
+facilement au code source complet du Logiciel Modifié en indiquant les
+modalités d'accès, étant entendu que le coût additionnel d'acquisition
+du code source ne devra pas excéder le simple coût de transfert des données.
+
+
+ 5.3.3 DISTRIBUTION DES MODULES EXTERNES
+
+Lorsque le Licencié a développé un Module Externe les conditions du
+Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué
+sous un contrat de licence différent.
+
+
+ 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
+
+Le Licencié peut inclure un code soumis aux dispositions d'une des
+versions de la licence GNU GPL dans le Logiciel modifié ou non et
+distribuer l'ensemble sous les conditions de la même version de la
+licence GNU GPL.
+
+Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis
+aux dispositions d'une des versions de la licence GNU GPL et distribuer
+l'ensemble sous les conditions de la même version de la licence GNU GPL.
+
+
+ Article 6 - PROPRIETE INTELLECTUELLE
+
+
+ 6.1 SUR LE LOGICIEL INITIAL
+
+Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel
+Initial. Toute utilisation du Logiciel Initial est soumise au respect
+des conditions dans lesquelles le Titulaire a choisi de diffuser son
+oeuvre et nul autre n'a la faculté de modifier les conditions de
+diffusion de ce Logiciel Initial.
+
+Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi
+par le Contrat et ce, pour la durée visée à l'article 4.2.
+
+
+ 6.2 SUR LES CONTRIBUTIONS
+
+Le Licencié qui a développé une Contribution est titulaire sur celle-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable.
+
+
+ 6.3 SUR LES MODULES EXTERNES
+
+Le Licencié qui a développé un Module Externe est titulaire sur celui-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable et reste libre du choix du contrat régissant
+sa diffusion.
+
+
+ 6.4 DISPOSITIONS COMMUNES
+
+Le Licencié s'engage expressément:
+
+ 1. à ne pas supprimer ou modifier de quelque manière que ce soit les
+ mentions de propriété intellectuelle apposées sur le Logiciel;
+
+ 2. à reproduire à l'identique lesdites mentions de propriété
+ intellectuelle sur les copies du Logiciel modifié ou non.
+
+Le Licencié s'engage à ne pas porter atteinte, directement ou
+indirectement, aux droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs sur le Logiciel et à prendre, le cas échéant, à
+l'égard de son personnel toutes les mesures nécessaires pour assurer le
+respect des dits droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs.
+
+
+ Article 7 - SERVICES ASSOCIES
+
+7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de
+prestations d'assistance technique ou de maintenance du Logiciel.
+
+Cependant le Concédant reste libre de proposer ce type de services. Les
+termes et conditions d'une telle assistance technique et/ou d'une telle
+maintenance seront alors déterminés dans un acte séparé. Ces actes de
+maintenance et/ou assistance technique n'engageront que la seule
+responsabilité du Concédant qui les propose.
+
+7.2 De même, tout Concédant est libre de proposer, sous sa seule
+responsabilité, à ses licenciés une garantie, qui n'engagera que lui,
+lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce,
+dans les conditions qu'il souhaite. Cette garantie et les modalités
+financières de son application feront l'objet d'un acte séparé entre le
+Concédant et le Licencié.
+
+
+ Article 8 - RESPONSABILITE
+
+8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la
+faculté, sous réserve de prouver la faute du Concédant concerné, de
+solliciter la réparation du préjudice direct qu'il subirait du fait du
+Logiciel et dont il apportera la preuve.
+
+8.2 La responsabilité du Concédant est limitée aux engagements pris en
+application du Contrat et ne saurait être engagée en raison notamment:
+(i) des dommages dus à l'inexécution, totale ou partielle, de ses
+obligations par le Licencié, (ii) des dommages directs ou indirects
+découlant de l'utilisation ou des performances du Logiciel subis par le
+Licencié et (iii) plus généralement d'un quelconque dommage indirect. En
+particulier, les Parties conviennent expressément que tout préjudice
+financier ou commercial (par exemple perte de données, perte de
+bénéfices, perte d'exploitation, perte de clientèle ou de commandes,
+manque à gagner, trouble commercial quelconque) ou toute action dirigée
+contre le Licencié par un tiers, constitue un dommage indirect et
+n'ouvre pas droit à réparation par le Concédant.
+
+
+ Article 9 - GARANTIE
+
+9.1 Le Licencié reconnaît que l'état actuel des connaissances
+scientifiques et techniques au moment de la mise en circulation du
+Logiciel ne permet pas d'en tester et d'en vérifier toutes les
+utilisations ni de détecter l'existence d'éventuels défauts. L'attention
+du Licencié a été attirée sur ce point sur les risques associés au
+chargement, à l'utilisation, la modification et/ou au développement et à
+la reproduction du Logiciel qui sont réservés à des utilisateurs avertis.
+
+Il relève de la responsabilité du Licencié de contrôler, par tous
+moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et
+de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
+
+9.2 Le Concédant déclare de bonne foi être en droit de concéder
+l'ensemble des droits attachés au Logiciel (comprenant notamment les
+droits visés à l'article 5).
+
+9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le
+Concédant sans autre garantie, expresse ou tacite, que celle prévue à
+l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale,
+son caractère sécurisé, innovant ou pertinent.
+
+En particulier, le Concédant ne garantit pas que le Logiciel est exempt
+d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
+avec l'équipement du Licencié et sa configuration logicielle ni qu'il
+remplira les besoins du Licencié.
+
+9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le
+Logiciel ne porte pas atteinte à un quelconque droit de propriété
+intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
+autre droit de propriété. Ainsi, le Concédant exclut toute garantie au
+profit du Licencié contre les actions en contrefaçon qui pourraient être
+diligentées au titre de l'utilisation, de la modification, et de la
+redistribution du Logiciel. Néanmoins, si de telles actions sont
+exercées contre le Licencié, le Concédant lui apportera son aide
+technique et juridique pour sa défense. Cette aide technique et
+juridique est déterminée au cas par cas entre le Concédant concerné et
+le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage
+toute responsabilité quant à l'utilisation de la dénomination du
+Logiciel par le Licencié. Aucune garantie n'est apportée quant à
+l'existence de droits antérieurs sur le nom du Logiciel et sur
+l'existence d'une marque.
+
+
+ Article 10 - RESILIATION
+
+10.1 En cas de manquement par le Licencié aux obligations mises à sa
+charge par le Contrat, le Concédant pourra résilier de plein droit le
+Contrat trente (30) jours après notification adressée au Licencié et
+restée sans effet.
+
+10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à
+utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
+licences qu'il aura concédées antérieurement à la résiliation du Contrat
+resteront valides sous réserve qu'elles aient été effectuées en
+conformité avec le Contrat.
+
+
+ Article 11 - DISPOSITIONS DIVERSES
+
+
+ 11.1 CAUSE EXTERIEURE
+
+Aucune des Parties ne sera responsable d'un retard ou d'une défaillance
+d'exécution du Contrat qui serait dû à un cas de force majeure, un cas
+fortuit ou une cause extérieure, telle que, notamment, le mauvais
+fonctionnement ou les interruptions du réseau électrique ou de
+télécommunication, la paralysie du réseau liée à une attaque
+informatique, l'intervention des autorités gouvernementales, les
+catastrophes naturelles, les dégâts des eaux, les tremblements de terre,
+le feu, les explosions, les grèves et les conflits sociaux, l'état de
+guerre...
+
+11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
+plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du
+Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
+intéressée à s'en prévaloir ultérieurement.
+
+11.3 Le Contrat annule et remplace toute convention antérieure, écrite
+ou orale, entre les Parties sur le même objet et constitue l'accord
+entier entre les Parties sur cet objet. Aucune addition ou modification
+aux termes du Contrat n'aura d'effet à l'égard des Parties à moins
+d'être faite par écrit et signée par leurs représentants dûment habilités.
+
+11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat
+s'avèrerait contraire à une loi ou à un texte applicable, existants ou
+futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les
+amendements nécessaires pour se conformer à cette loi ou à ce texte.
+Toutes les autres dispositions resteront en vigueur. De même, la
+nullité, pour quelque raison que ce soit, d'une des dispositions du
+Contrat ne saurait entraîner la nullité de l'ensemble du Contrat.
+
+
+ 11.5 LANGUE
+
+Le Contrat est rédigé en langue française et en langue anglaise, ces
+deux versions faisant également foi.
+
+
+ Article 12 - NOUVELLES VERSIONS DU CONTRAT
+
+12.1 Toute personne est autorisée à copier et distribuer des copies de
+ce Contrat.
+
+12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé
+et ne peut être modifié que par les auteurs de la licence, lesquels se
+réservent le droit de publier périodiquement des mises à jour ou de
+nouvelles versions du Contrat, qui posséderont chacune un numéro
+distinct. Ces versions ultérieures seront susceptibles de prendre en
+compte de nouvelles problématiques rencontrées par les logiciels libres.
+
+12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra
+faire l'objet d'une diffusion ultérieure que sous la même version du
+Contrat ou une version postérieure, sous réserve des dispositions de
+l'article 5.3.4.
+
+
+ Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
+
+13.1 Le Contrat est régi par la loi française. Les Parties conviennent
+de tenter de régler à l'amiable les différends ou litiges qui
+viendraient à se produire par suite ou à l'occasion du Contrat.
+
+13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter
+de leur survenance et sauf situation relevant d'une procédure d'urgence,
+les différends ou litiges seront portés par la Partie la plus diligente
+devant les Tribunaux compétents de Paris.
+
+
+Version 2.0 du 2006-09-05.
diff --git a/moeo/LICENSE b/moeo/LICENSE
new file mode 100644
index 000000000..b7f1e4658
--- /dev/null
+++ b/moeo/LICENSE
@@ -0,0 +1,1018 @@
+CeCILL FREE SOFTWARE LICENSE AGREEMENT
+
+ Notice
+
+This Agreement is a Free Software license agreement that is the result
+of discussions between its authors in order to ensure compliance with
+the two main principles guiding its drafting:
+
+ * firstly, compliance with the principles governing the distribution
+ of Free Software: access to source code, broad rights granted to
+ users,
+ * secondly, the election of a governing law, French law, with which
+ it is conformant, both as regards the law of torts and
+ intellectual property law, and the protection that it offers to
+ both authors and holders of the economic rights over software.
+
+The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
+license are:
+
+Commissariat à l'Energie Atomique - CEA, a public scientific, technical
+and industrial research establishment, having its principal place of
+business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific
+and technological establishment, having its principal place of business
+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, a public scientific and technological establishment, having its
+principal place of business at Domaine de Voluceau, Rocquencourt, BP
+105, 78153 Le Chesnay cedex, France.
+
+
+ Preamble
+
+The purpose of this Free Software license agreement is to grant users
+the right to modify and redistribute the software governed by this
+license within the framework of an open source distribution model.
+
+The exercising of these rights is conditional upon certain obligations
+for users so as to preserve this status for all subsequent redistributions.
+
+In consideration of access to the source code and the rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors only have limited liability.
+
+In this respect, the risks associated with loading, using, modifying
+and/or developing or reproducing the software by the user are brought to
+the user's attention, given its Free Software status, which may make it
+complicated to use, with the result that its use is reserved for
+developers and experienced professionals having in-depth computer
+knowledge. Users are therefore encouraged to load and test the
+suitability of the software as regards their requirements in conditions
+enabling the security of their systems and/or data to be ensured and,
+more generally, to use and operate it in the same conditions of
+security. This Agreement may be freely reproduced and published,
+provided it is not altered, and that no provisions are either added or
+removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of
+the economic rights decides to submit the use thereof to its provisions.
+
+
+ Article 1 - DEFINITIONS
+
+For the purpose of this Agreement, when the following expressions
+commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this license agreement, and its possible subsequent
+versions and annexes.
+
+Software: means the software in its Object Code and/or Source Code form
+and, where applicable, its documentation, "as is" when the Licensee
+accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and possibly its
+Object Code form and, where applicable, its documentation, "as is" when
+it is first distributed under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one
+Contribution.
+
+Source Code: means all the Software's instructions and program lines to
+which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of
+the Source Code.
+
+Holder: means the holder(s) of the economic rights over the Initial
+Software.
+
+Licensee: means the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any other individual or legal entity, who
+distributes the Software under the Agreement.
+
+Contribution: means any or all modifications, corrections, translations,
+adaptations and/or new functions integrated into the Software by any or
+all Contributors, as well as any or all Internal Modules.
+
+Module: means a set of sources files including their documentation that
+enables supplementary functions or services in addition to those offered
+by the Software.
+
+External Module: means any or all Modules, not derived from the
+Software, so that this Module and the Software run in separate address
+spaces, with one calling the other when they are run.
+
+Internal Module: means any or all Module, connected to the Software so
+that they both execute in the same address space.
+
+GNU GPL: means the GNU General Public License version 2 or any
+subsequent version, as published by the Free Software Foundation Inc.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+
+ Article 2 - PURPOSE
+
+The purpose of the Agreement is the grant by the Licensor to the
+Licensee of a non-exclusive, transferable and worldwide license for the
+Software as set forth in Article 5 hereinafter for the whole term of the
+protection granted by the rights over said Software.
+
+
+ Article 3 - ACCEPTANCE
+
+3.1 The Licensee shall be deemed as having accepted the terms and
+conditions of this Agreement upon the occurrence of the first of the
+following events:
+
+ * (i) loading the Software by any or all means, notably, by
+ downloading from a remote server, or by loading from a physical
+ medium;
+ * (ii) the first time the Licensee exercises any of the rights
+ granted hereunder.
+
+3.2 One copy of the Agreement, containing a notice relating to the
+characteristics of the Software, to the limited warranty, and to the
+fact that its use is restricted to experienced users has been provided
+to the Licensee prior to its acceptance as set forth in Article 3.1
+hereinabove, and the Licensee hereby acknowledges that it has read and
+understood it.
+
+
+ Article 4 - EFFECTIVE DATE AND TERM
+
+
+ 4.1 EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by
+the Licensee as set forth in Article 3.1.
+
+
+ 4.2 TERM
+
+The Agreement shall remain in force for the entire legal term of
+protection of the economic rights over the Software.
+
+
+ Article 5 - SCOPE OF RIGHTS GRANTED
+
+The Licensor hereby grants to the Licensee, who accepts, the following
+rights over the Software for any or all use, and for the term of the
+Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Besides, if the Licensor owns or comes to own one or more patents
+protecting all or part of the functions of the Software or of its
+components, the Licensor undertakes not to enforce the rights granted by
+these patents against successive Licensees using, exploiting or
+modifying the Software. If these patents are transferred, the Licensor
+undertakes to have the transferees subscribe to the obligations set
+forth in this paragraph.
+
+
+ 5.1 RIGHT OF USE
+
+The Licensee is authorized to use the Software, without any limitation
+as to its fields of application, with it being hereinafter specified
+that this comprises:
+
+ 1. permanent or temporary reproduction of all or part of the Software
+ by any or all means and in any or all form.
+
+ 2. loading, displaying, running, or storing the Software on any or
+ all medium.
+
+ 3. entitlement to observe, study or test its operation so as to
+ determine the ideas and principles behind any or all constituent
+ elements of said Software. This shall apply when the Licensee
+ carries out any or all loading, displaying, running, transmission
+ or storage operation as regards the Software, that it is entitled
+ to carry out hereunder.
+
+
+ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt,
+arrange, or make any or all modifications to the Software, and the right
+to reproduce the resulting software.
+
+The Licensee is authorized to make any or all Contributions to the
+Software provided that it includes an explicit notice that it is the
+author of said Contribution and indicates the date of the creation thereof.
+
+
+ 5.3 RIGHT OF DISTRIBUTION
+
+In particular, the right of distribution includes the right to publish,
+transmit and communicate the Software to the general public on any or
+all medium, and by any or all means, and the right to market, either in
+consideration of a fee, or free of charge, one or more copies of the
+Software by any means.
+
+The Licensee is further authorized to distribute copies of the modified
+or unmodified Software to third parties according to the terms and
+conditions set forth hereinafter.
+
+
+ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to distribute true copies of the Software in
+Source Code or Object Code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Object Code of the Software is
+redistributed, the Licensee allows future Licensees unhindered access to
+the full Source Code of the Software by indicating how to access it, it
+being understood that the additional cost of acquiring the Source Code
+shall not exceed the cost of transferring the data.
+
+
+ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
+
+When the Licensee makes a Contribution to the Software, the terms and
+conditions for the distribution of the resulting Modified Software
+become subject to all the provisions of this Agreement.
+
+The Licensee is authorized to distribute the Modified Software, in
+source code or object code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the object code of the Modified
+Software is redistributed, the Licensee allows future Licensees
+unhindered access to the full source code of the Modified Software by
+indicating how to access it, it being understood that the additional
+cost of acquiring the source code shall not exceed the cost of
+transferring the data.
+
+
+ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
+
+When the Licensee has developed an External Module, the terms and
+conditions of this Agreement do not apply to said External Module, that
+may be distributed under a separate license agreement.
+
+
+ 5.3.4 COMPATIBILITY WITH THE GNU GPL
+
+The Licensee can include a code that is subject to the provisions of one
+of the versions of the GNU GPL in the Modified or unmodified Software,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+The Licensee can include the Modified or unmodified Software in a code
+that is subject to the provisions of one of the versions of the GNU GPL,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+
+ Article 6 - INTELLECTUAL PROPERTY
+
+
+ 6.1 OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or
+all use of the Initial Software is subject to compliance with the terms
+and conditions under which the Holder has elected to distribute its work
+and no one shall be entitled to modify the terms and conditions for the
+distribution of said Initial Software.
+
+The Holder undertakes that the Initial Software will remain ruled at
+least by this Agreement, for the duration set forth in Article 4.2.
+
+
+ 6.2 OVER THE CONTRIBUTIONS
+
+The Licensee who develops a Contribution is the owner of the
+intellectual property rights over this Contribution as defined by
+applicable law.
+
+
+ 6.3 OVER THE EXTERNAL MODULES
+
+The Licensee who develops an External Module is the owner of the
+intellectual property rights over this External Module as defined by
+applicable law and is free to choose the type of agreement that shall
+govern its distribution.
+
+
+ 6.4 JOINT PROVISIONS
+
+The Licensee expressly undertakes:
+
+ 1. not to remove, or modify, in any manner, the intellectual property
+ notices attached to the Software;
+
+ 2. to reproduce said notices, in an identical manner, in the copies
+ of the Software modified or not.
+
+The Licensee undertakes not to directly or indirectly infringe the
+intellectual property rights of the Holder and/or Contributors on the
+Software and to take, where applicable, vis-à-vis its staff, any and all
+measures required to ensure respect of said intellectual property rights
+of the Holder and/or Contributors.
+
+
+ Article 7 - RELATED SERVICES
+
+7.1 Under no circumstances shall the Agreement oblige the Licensor to
+provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of services. The
+terms and conditions of such technical assistance, and/or such
+maintenance, shall be set forth in a separate instrument. Only the
+Licensor offering said maintenance and/or technical assistance services
+shall incur liability therefor.
+
+7.2 Similarly, any Licensor is entitled to offer to its licensees, under
+its sole responsibility, a warranty, that shall only be binding upon
+itself, for the redistribution of the Software and/or the Modified
+Software, under terms and conditions that it is free to decide. Said
+warranty, and the financial terms and conditions of its application,
+shall be subject of a separate instrument executed between the Licensor
+and the Licensee.
+
+
+ Article 8 - LIABILITY
+
+8.1 Subject to the provisions of Article 8.2, the Licensee shall be
+entitled to claim compensation for any direct loss it may have suffered
+from the Software as a result of a fault on the part of the relevant
+Licensor, subject to providing evidence thereof.
+
+8.2 The Licensor's liability is limited to the commitments made under
+this Agreement and shall not be incurred as a result of in particular:
+(i) loss due the Licensee's total or partial failure to fulfill its
+obligations, (ii) direct or consequential loss that is suffered by the
+Licensee due to the use or performance of the Software, and (iii) more
+generally, any consequential loss. In particular the Parties expressly
+agree that any or all pecuniary or business loss (i.e. loss of data,
+loss of profits, operating loss, loss of customers or orders,
+opportunity cost, any disturbance to business activities) or any or all
+legal proceedings instituted against the Licensee by a third party,
+shall constitute consequential loss and shall not provide entitlement to
+any or all compensation from the Licensor.
+
+
+ Article 9 - WARRANTY
+
+9.1 The Licensee acknowledges that the scientific and technical
+state-of-the-art when the Software was distributed did not enable all
+possible uses to be tested and verified, nor for the presence of
+possible defects to be detected. In this respect, the Licensee's
+attention has been drawn to the risks associated with loading, using,
+modifying and/or developing and reproducing the Software which are
+reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means,
+the suitability of the product for its requirements, its good working
+order, and for ensuring that it shall not cause damage to either persons
+or properties.
+
+9.2 The Licensor hereby represents, in good faith, that it is entitled
+to grant all the rights over the Software (including in particular the
+rights set forth in Article 5).
+
+9.3 The Licensee acknowledges that the Software is supplied "as is" by
+the Licensor without any other express or tacit warranty, other than
+that provided for in Article 9.2 and, in particular, without any warranty
+as to its commercial value, its secured, safe, innovative or relevant
+nature.
+
+Specifically, the Licensor does not warrant that the Software is free
+from any error, that it will operate without interruption, that it will
+be compatible with the Licensee's own equipment and software
+configuration, nor that it will meet the Licensee's requirements.
+
+9.4 The Licensor does not either expressly or tacitly warrant that the
+Software does not infringe any third party intellectual property right
+relating to a patent, software or any other property right. Therefore,
+the Licensor disclaims any and all liability towards the Licensee
+arising out of any or all proceedings for infringement that may be
+instituted in respect of the use, modification and redistribution of the
+Software. Nevertheless, should such proceedings be instituted against
+the Licensee, the Licensor shall provide it with technical and legal
+assistance for its defense. Such technical and legal assistance shall be
+decided on a case-by-case basis between the relevant Licensor and the
+Licensee pursuant to a memorandum of understanding. The Licensor
+disclaims any and all liability as regards the Licensee's use of the
+name of the Software. No warranty is given as regards the existence of
+prior rights over the name of the Software or as regards the existence
+of a trademark.
+
+
+ Article 10 - TERMINATION
+
+10.1 In the event of a breach by the Licensee of its obligations
+hereunder, the Licensor may automatically terminate this Agreement
+thirty (30) days after notice has been sent to the Licensee and has
+remained ineffective.
+
+10.2 A Licensee whose Agreement is terminated shall no longer be
+authorized to use, modify or distribute the Software. However, any
+licenses that it may have granted prior to termination of the Agreement
+shall remain valid subject to their having been granted in compliance
+with the terms and conditions hereof.
+
+
+ Article 11 - MISCELLANEOUS
+
+
+ 11.1 EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to
+perform the Agreement, that may be attributable to an event of force
+majeure, an act of God or an outside cause, such as defective
+functioning or interruptions of the electricity or telecommunications
+networks, network paralysis following a virus attack, intervention by
+government authorities, natural disasters, water damage, earthquakes,
+fire, explosions, strikes and labor unrest, war, etc.
+
+11.2 Any failure by either Party, on one or more occasions, to invoke
+one or more of the provisions hereof, shall under no circumstances be
+interpreted as being a waiver by the interested Party of its right to
+invoke said provision(s) subsequently.
+
+11.3 The Agreement cancels and replaces any or all previous agreements,
+whether written or oral, between the Parties and having the same
+purpose, and constitutes the entirety of the agreement between said
+Parties concerning said purpose. No supplement or modification to the
+terms and conditions hereof shall be effective as between the Parties
+unless it is made in writing and signed by their duly authorized
+representatives.
+
+11.4 In the event that one or more of the provisions hereof were to
+conflict with a current or future applicable act or legislative text,
+said act or legislative text shall prevail, and the Parties shall make
+the necessary amendments so as to comply with said act or legislative
+text. All other provisions shall remain effective. Similarly, invalidity
+of a provision of the Agreement, for any reason whatsoever, shall not
+cause the Agreement as a whole to be invalid.
+
+
+ 11.5 LANGUAGE
+
+The Agreement is drafted in both French and English and both versions
+are deemed authentic.
+
+
+ Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1 Any person is authorized to duplicate and distribute copies of this
+Agreement.
+
+12.2 So as to ensure coherence, the wording of this Agreement is
+protected and may only be modified by the authors of the License, who
+reserve the right to periodically publish updates or new versions of the
+Agreement, each with a separate number. These subsequent versions may
+address new issues encountered by Free Software.
+
+12.3 Any Software distributed under a given version of the Agreement may
+only be subsequently distributed under the same version of the Agreement
+or a subsequent version, subject to the provisions of Article 5.3.4.
+
+
+ Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1 The Agreement is governed by French law. The Parties agree to
+endeavor to seek an amicable solution to any disagreements or disputes
+that may arise during the performance of the Agreement.
+
+13.2 Failing an amicable solution within two (2) months as from their
+occurrence, and unless emergency proceedings are necessary, the
+disagreements or disputes shall be referred to the Paris Courts having
+jurisdiction, by the more diligent Party.
+
+
+Version 2.0 dated 2006-09-05.
+
+------------------------------------------------------------------------------
+
+CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL
+
+
+ Avertissement
+
+Ce contrat est une licence de logiciel libre issue d'une concertation
+entre ses auteurs afin que le respect de deux grands principes préside à
+sa rédaction:
+
+ * d'une part, le respect des principes de diffusion des logiciels
+ libres: accès au code source, droits étendus conférés aux
+ utilisateurs,
+ * d'autre part, la désignation d'un droit applicable, le droit
+ français, auquel elle est conforme, tant au regard du droit de la
+ responsabilité civile que du droit de la propriété intellectuelle
+ et de la protection qu'il offre aux auteurs et titulaires des
+ droits patrimoniaux sur un logiciel.
+
+Les auteurs de la licence CeCILL (pour Ce[a] C[nrs] I[nria] L[ogiciel]
+L[ibre]) sont:
+
+Commissariat à l'Energie Atomique - CEA, établissement public de
+recherche à caractère scientifique, technique et industriel, dont le
+siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris.
+
+Centre National de la Recherche Scientifique - CNRS, établissement
+public à caractère scientifique et technologique, dont le siège est
+situé 3 rue Michel-Ange, 75794 Paris cedex 16.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, établissement public à caractère scientifique et technologique,
+dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153
+Le Chesnay cedex.
+
+
+ Préambule
+
+Ce contrat est une licence de logiciel libre dont l'objectif est de
+conférer aux utilisateurs la liberté de modification et de
+redistribution du logiciel régi par cette licence dans le cadre d'un
+modèle de diffusion en logiciel libre.
+
+L'exercice de ces libertés est assorti de certains devoirs à la charge
+des utilisateurs afin de préserver ce statut au cours des
+redistributions ultérieures.
+
+L'accessibilité au code source et les droits de copie, de modification
+et de redistribution qui en découlent ont pour contrepartie de n'offrir
+aux utilisateurs qu'une garantie limitée et de ne faire peser sur
+l'auteur du logiciel, le titulaire des droits patrimoniaux et les
+concédants successifs qu'une responsabilité restreinte.
+
+A cet égard l'attention de l'utilisateur est attirée sur les risques
+associés au chargement, à l'utilisation, à la modification et/ou au
+développement et à la reproduction du logiciel par l'utilisateur étant
+donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+manipuler et qui le réserve donc à des développeurs ou des
+professionnels avertis possédant des connaissances informatiques
+approfondies. Les utilisateurs sont donc invités à charger et tester
+l'adéquation du logiciel à leurs besoins dans des conditions permettant
+d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus
+généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
+sécurité. Ce contrat peut être reproduit et diffusé librement, sous
+réserve de le conserver en l'état, sans ajout ni suppression de clauses.
+
+Ce contrat est susceptible de s'appliquer à tout logiciel dont le
+titulaire des droits patrimoniaux décide de soumettre l'exploitation aux
+dispositions qu'il contient.
+
+
+ Article 1 - DEFINITIONS
+
+Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une
+lettre capitale, auront la signification suivante:
+
+Contrat: désigne le présent contrat de licence, ses éventuelles versions
+postérieures et annexes.
+
+Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code
+Source et le cas échéant sa documentation, dans leur état au moment de
+l'acceptation du Contrat par le Licencié.
+
+Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et
+éventuellement de Code Objet et le cas échéant sa documentation, dans
+leur état au moment de leur première diffusion sous les termes du Contrat.
+
+Logiciel Modifié: désigne le Logiciel modifié par au moins une
+Contribution.
+
+Code Source: désigne l'ensemble des instructions et des lignes de
+programme du Logiciel et auquel l'accès est nécessaire en vue de
+modifier le Logiciel.
+
+Code Objet: désigne les fichiers binaires issus de la compilation du
+Code Source.
+
+Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur
+sur le Logiciel Initial.
+
+Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le
+Contrat.
+
+Contributeur: désigne le Licencié auteur d'au moins une Contribution.
+
+Concédant: désigne le Titulaire ou toute personne physique ou morale
+distribuant le Logiciel sous le Contrat.
+
+Contribution: désigne l'ensemble des modifications, corrections,
+traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans
+le Logiciel par tout Contributeur, ainsi que tout Module Interne.
+
+Module: désigne un ensemble de fichiers sources y compris leur
+documentation qui permet de réaliser des fonctionnalités ou services
+supplémentaires à ceux fournis par le Logiciel.
+
+Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce
+Module et le Logiciel s'exécutent dans des espaces d'adressage
+différents, l'un appelant l'autre au moment de leur exécution.
+
+Module Interne: désigne tout Module lié au Logiciel de telle sorte
+qu'ils s'exécutent dans le même espace d'adressage.
+
+GNU GPL: désigne la GNU General Public License dans sa version 2 ou
+toute version ultérieure, telle que publiée par Free Software Foundation
+Inc.
+
+Parties: désigne collectivement le Licencié et le Concédant.
+
+Ces termes s'entendent au singulier comme au pluriel.
+
+
+ Article 2 - OBJET
+
+Le Contrat a pour objet la concession par le Concédant au Licencié d'une
+licence non exclusive, cessible et mondiale du Logiciel telle que
+définie ci-après à l'article 5 pour toute la durée de protection des droits
+portant sur ce Logiciel.
+
+
+ Article 3 - ACCEPTATION
+
+3.1 L'acceptation par le Licencié des termes du Contrat est réputée
+acquise du fait du premier des faits suivants:
+
+ * (i) le chargement du Logiciel par tout moyen notamment par
+ téléchargement à partir d'un serveur distant ou par chargement à
+ partir d'un support physique;
+ * (ii) le premier exercice par le Licencié de l'un quelconque des
+ droits concédés par le Contrat.
+
+3.2 Un exemplaire du Contrat, contenant notamment un avertissement
+relatif aux spécificités du Logiciel, à la restriction de garantie et à
+la limitation à un usage par des utilisateurs expérimentés a été mis à
+disposition du Licencié préalablement à son acceptation telle que
+définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris
+connaissance.
+
+
+ Article 4 - ENTREE EN VIGUEUR ET DUREE
+
+
+ 4.1 ENTREE EN VIGUEUR
+
+Le Contrat entre en vigueur à la date de son acceptation par le Licencié
+telle que définie en 3.1.
+
+
+ 4.2 DUREE
+
+Le Contrat produira ses effets pendant toute la durée légale de
+protection des droits patrimoniaux portant sur le Logiciel.
+
+
+ Article 5 - ETENDUE DES DROITS CONCEDES
+
+Le Concédant concède au Licencié, qui accepte, les droits suivants sur
+le Logiciel pour toutes destinations et pour la durée du Contrat dans
+les conditions ci-après détaillées.
+
+Par ailleurs, si le Concédant détient ou venait à détenir un ou
+plusieurs brevets d'invention protégeant tout ou partie des
+fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas
+opposer les éventuels droits conférés par ces brevets aux Licenciés
+successifs qui utiliseraient, exploiteraient ou modifieraient le
+Logiciel. En cas de cession de ces brevets, le Concédant s'engage à
+faire reprendre les obligations du présent alinéa aux cessionnaires.
+
+
+ 5.1 DROIT D'UTILISATION
+
+Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant
+aux domaines d'application, étant ci-après précisé que cela comporte:
+
+ 1. la reproduction permanente ou provisoire du Logiciel en tout ou
+ partie par tout moyen et sous toute forme.
+
+ 2. le chargement, l'affichage, l'exécution, ou le stockage du
+ Logiciel sur tout support.
+
+ 3. la possibilité d'en observer, d'en étudier, ou d'en tester le
+ fonctionnement afin de déterminer les idées et principes qui sont
+ à la base de n'importe quel élément de ce Logiciel; et ceci,
+ lorsque le Licencié effectue toute opération de chargement,
+ d'affichage, d'exécution, de transmission ou de stockage du
+ Logiciel qu'il est en droit d'effectuer en vertu du Contrat.
+
+
+ 5.2 DROIT D'APPORTER DES CONTRIBUTIONS
+
+Le droit d'apporter des Contributions comporte le droit de traduire,
+d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel
+et le droit de reproduire le logiciel en résultant.
+
+Le Licencié est autorisé à apporter toute Contribution au Logiciel sous
+réserve de mentionner, de façon explicite, son nom en tant qu'auteur de
+cette Contribution et la date de création de celle-ci.
+
+
+ 5.3 DROIT DE DISTRIBUTION
+
+Le droit de distribution comporte notamment le droit de diffuser, de
+transmettre et de communiquer le Logiciel au public sur tout support et
+par tout moyen ainsi que le droit de mettre sur le marché à titre
+onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé.
+
+Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou
+non, à des tiers dans les conditions ci-après détaillées.
+
+
+ 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
+
+Le Licencié est autorisé à distribuer des copies conformes du Logiciel,
+sous forme de Code Source ou de Code Objet, à condition que cette
+distribution respecte les dispositions du Contrat dans leur totalité et
+soit accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le Code Objet du Logiciel est redistribué,
+le Licencié permette aux futurs Licenciés d'accéder facilement au Code
+Source complet du Logiciel en indiquant les modalités d'accès, étant
+entendu que le coût additionnel d'acquisition du Code Source ne devra
+pas excéder le simple coût de transfert des données.
+
+
+ 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
+
+Lorsque le Licencié apporte une Contribution au Logiciel, les conditions
+de distribution du Logiciel Modifié en résultant sont alors soumises à
+l'intégralité des dispositions du Contrat.
+
+Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de
+code source ou de code objet, à condition que cette distribution
+respecte les dispositions du Contrat dans leur totalité et soit
+accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le code objet du Logiciel Modifié est
+redistribué, le Licencié permette aux futurs Licenciés d'accéder
+facilement au code source complet du Logiciel Modifié en indiquant les
+modalités d'accès, étant entendu que le coût additionnel d'acquisition
+du code source ne devra pas excéder le simple coût de transfert des données.
+
+
+ 5.3.3 DISTRIBUTION DES MODULES EXTERNES
+
+Lorsque le Licencié a développé un Module Externe les conditions du
+Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué
+sous un contrat de licence différent.
+
+
+ 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
+
+Le Licencié peut inclure un code soumis aux dispositions d'une des
+versions de la licence GNU GPL dans le Logiciel modifié ou non et
+distribuer l'ensemble sous les conditions de la même version de la
+licence GNU GPL.
+
+Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis
+aux dispositions d'une des versions de la licence GNU GPL et distribuer
+l'ensemble sous les conditions de la même version de la licence GNU GPL.
+
+
+ Article 6 - PROPRIETE INTELLECTUELLE
+
+
+ 6.1 SUR LE LOGICIEL INITIAL
+
+Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel
+Initial. Toute utilisation du Logiciel Initial est soumise au respect
+des conditions dans lesquelles le Titulaire a choisi de diffuser son
+oeuvre et nul autre n'a la faculté de modifier les conditions de
+diffusion de ce Logiciel Initial.
+
+Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi
+par le Contrat et ce, pour la durée visée à l'article 4.2.
+
+
+ 6.2 SUR LES CONTRIBUTIONS
+
+Le Licencié qui a développé une Contribution est titulaire sur celle-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable.
+
+
+ 6.3 SUR LES MODULES EXTERNES
+
+Le Licencié qui a développé un Module Externe est titulaire sur celui-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable et reste libre du choix du contrat régissant
+sa diffusion.
+
+
+ 6.4 DISPOSITIONS COMMUNES
+
+Le Licencié s'engage expressément:
+
+ 1. à ne pas supprimer ou modifier de quelque manière que ce soit les
+ mentions de propriété intellectuelle apposées sur le Logiciel;
+
+ 2. à reproduire à l'identique lesdites mentions de propriété
+ intellectuelle sur les copies du Logiciel modifié ou non.
+
+Le Licencié s'engage à ne pas porter atteinte, directement ou
+indirectement, aux droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs sur le Logiciel et à prendre, le cas échéant, à
+l'égard de son personnel toutes les mesures nécessaires pour assurer le
+respect des dits droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs.
+
+
+ Article 7 - SERVICES ASSOCIES
+
+7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de
+prestations d'assistance technique ou de maintenance du Logiciel.
+
+Cependant le Concédant reste libre de proposer ce type de services. Les
+termes et conditions d'une telle assistance technique et/ou d'une telle
+maintenance seront alors déterminés dans un acte séparé. Ces actes de
+maintenance et/ou assistance technique n'engageront que la seule
+responsabilité du Concédant qui les propose.
+
+7.2 De même, tout Concédant est libre de proposer, sous sa seule
+responsabilité, à ses licenciés une garantie, qui n'engagera que lui,
+lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce,
+dans les conditions qu'il souhaite. Cette garantie et les modalités
+financières de son application feront l'objet d'un acte séparé entre le
+Concédant et le Licencié.
+
+
+ Article 8 - RESPONSABILITE
+
+8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la
+faculté, sous réserve de prouver la faute du Concédant concerné, de
+solliciter la réparation du préjudice direct qu'il subirait du fait du
+Logiciel et dont il apportera la preuve.
+
+8.2 La responsabilité du Concédant est limitée aux engagements pris en
+application du Contrat et ne saurait être engagée en raison notamment:
+(i) des dommages dus à l'inexécution, totale ou partielle, de ses
+obligations par le Licencié, (ii) des dommages directs ou indirects
+découlant de l'utilisation ou des performances du Logiciel subis par le
+Licencié et (iii) plus généralement d'un quelconque dommage indirect. En
+particulier, les Parties conviennent expressément que tout préjudice
+financier ou commercial (par exemple perte de données, perte de
+bénéfices, perte d'exploitation, perte de clientèle ou de commandes,
+manque à gagner, trouble commercial quelconque) ou toute action dirigée
+contre le Licencié par un tiers, constitue un dommage indirect et
+n'ouvre pas droit à réparation par le Concédant.
+
+
+ Article 9 - GARANTIE
+
+9.1 Le Licencié reconnaît que l'état actuel des connaissances
+scientifiques et techniques au moment de la mise en circulation du
+Logiciel ne permet pas d'en tester et d'en vérifier toutes les
+utilisations ni de détecter l'existence d'éventuels défauts. L'attention
+du Licencié a été attirée sur ce point sur les risques associés au
+chargement, à l'utilisation, la modification et/ou au développement et à
+la reproduction du Logiciel qui sont réservés à des utilisateurs avertis.
+
+Il relève de la responsabilité du Licencié de contrôler, par tous
+moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et
+de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
+
+9.2 Le Concédant déclare de bonne foi être en droit de concéder
+l'ensemble des droits attachés au Logiciel (comprenant notamment les
+droits visés à l'article 5).
+
+9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le
+Concédant sans autre garantie, expresse ou tacite, que celle prévue à
+l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale,
+son caractère sécurisé, innovant ou pertinent.
+
+En particulier, le Concédant ne garantit pas que le Logiciel est exempt
+d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
+avec l'équipement du Licencié et sa configuration logicielle ni qu'il
+remplira les besoins du Licencié.
+
+9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le
+Logiciel ne porte pas atteinte à un quelconque droit de propriété
+intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
+autre droit de propriété. Ainsi, le Concédant exclut toute garantie au
+profit du Licencié contre les actions en contrefaçon qui pourraient être
+diligentées au titre de l'utilisation, de la modification, et de la
+redistribution du Logiciel. Néanmoins, si de telles actions sont
+exercées contre le Licencié, le Concédant lui apportera son aide
+technique et juridique pour sa défense. Cette aide technique et
+juridique est déterminée au cas par cas entre le Concédant concerné et
+le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage
+toute responsabilité quant à l'utilisation de la dénomination du
+Logiciel par le Licencié. Aucune garantie n'est apportée quant à
+l'existence de droits antérieurs sur le nom du Logiciel et sur
+l'existence d'une marque.
+
+
+ Article 10 - RESILIATION
+
+10.1 En cas de manquement par le Licencié aux obligations mises à sa
+charge par le Contrat, le Concédant pourra résilier de plein droit le
+Contrat trente (30) jours après notification adressée au Licencié et
+restée sans effet.
+
+10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à
+utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
+licences qu'il aura concédées antérieurement à la résiliation du Contrat
+resteront valides sous réserve qu'elles aient été effectuées en
+conformité avec le Contrat.
+
+
+ Article 11 - DISPOSITIONS DIVERSES
+
+
+ 11.1 CAUSE EXTERIEURE
+
+Aucune des Parties ne sera responsable d'un retard ou d'une défaillance
+d'exécution du Contrat qui serait dû à un cas de force majeure, un cas
+fortuit ou une cause extérieure, telle que, notamment, le mauvais
+fonctionnement ou les interruptions du réseau électrique ou de
+télécommunication, la paralysie du réseau liée à une attaque
+informatique, l'intervention des autorités gouvernementales, les
+catastrophes naturelles, les dégâts des eaux, les tremblements de terre,
+le feu, les explosions, les grèves et les conflits sociaux, l'état de
+guerre...
+
+11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
+plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du
+Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
+intéressée à s'en prévaloir ultérieurement.
+
+11.3 Le Contrat annule et remplace toute convention antérieure, écrite
+ou orale, entre les Parties sur le même objet et constitue l'accord
+entier entre les Parties sur cet objet. Aucune addition ou modification
+aux termes du Contrat n'aura d'effet à l'égard des Parties à moins
+d'être faite par écrit et signée par leurs représentants dûment habilités.
+
+11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat
+s'avèrerait contraire à une loi ou à un texte applicable, existants ou
+futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les
+amendements nécessaires pour se conformer à cette loi ou à ce texte.
+Toutes les autres dispositions resteront en vigueur. De même, la
+nullité, pour quelque raison que ce soit, d'une des dispositions du
+Contrat ne saurait entraîner la nullité de l'ensemble du Contrat.
+
+
+ 11.5 LANGUE
+
+Le Contrat est rédigé en langue française et en langue anglaise, ces
+deux versions faisant également foi.
+
+
+ Article 12 - NOUVELLES VERSIONS DU CONTRAT
+
+12.1 Toute personne est autorisée à copier et distribuer des copies de
+ce Contrat.
+
+12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé
+et ne peut être modifié que par les auteurs de la licence, lesquels se
+réservent le droit de publier périodiquement des mises à jour ou de
+nouvelles versions du Contrat, qui posséderont chacune un numéro
+distinct. Ces versions ultérieures seront susceptibles de prendre en
+compte de nouvelles problématiques rencontrées par les logiciels libres.
+
+12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra
+faire l'objet d'une diffusion ultérieure que sous la même version du
+Contrat ou une version postérieure, sous réserve des dispositions de
+l'article 5.3.4.
+
+
+ Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
+
+13.1 Le Contrat est régi par la loi française. Les Parties conviennent
+de tenter de régler à l'amiable les différends ou litiges qui
+viendraient à se produire par suite ou à l'occasion du Contrat.
+
+13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter
+de leur survenance et sauf situation relevant d'une procédure d'urgence,
+les différends ou litiges seront portés par la Partie la plus diligente
+devant les Tribunaux compétents de Paris.
+
+
+Version 2.0 du 2006-09-05.
diff --git a/smp/LICENSE b/smp/LICENSE
new file mode 100644
index 000000000..b7f1e4658
--- /dev/null
+++ b/smp/LICENSE
@@ -0,0 +1,1018 @@
+CeCILL FREE SOFTWARE LICENSE AGREEMENT
+
+ Notice
+
+This Agreement is a Free Software license agreement that is the result
+of discussions between its authors in order to ensure compliance with
+the two main principles guiding its drafting:
+
+ * firstly, compliance with the principles governing the distribution
+ of Free Software: access to source code, broad rights granted to
+ users,
+ * secondly, the election of a governing law, French law, with which
+ it is conformant, both as regards the law of torts and
+ intellectual property law, and the protection that it offers to
+ both authors and holders of the economic rights over software.
+
+The authors of the CeCILL (for Ce[a] C[nrs] I[nria] L[ogiciel] L[ibre])
+license are:
+
+Commissariat à l'Energie Atomique - CEA, a public scientific, technical
+and industrial research establishment, having its principal place of
+business at 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris, France.
+
+Centre National de la Recherche Scientifique - CNRS, a public scientific
+and technological establishment, having its principal place of business
+at 3 rue Michel-Ange, 75794 Paris cedex 16, France.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, a public scientific and technological establishment, having its
+principal place of business at Domaine de Voluceau, Rocquencourt, BP
+105, 78153 Le Chesnay cedex, France.
+
+
+ Preamble
+
+The purpose of this Free Software license agreement is to grant users
+the right to modify and redistribute the software governed by this
+license within the framework of an open source distribution model.
+
+The exercising of these rights is conditional upon certain obligations
+for users so as to preserve this status for all subsequent redistributions.
+
+In consideration of access to the source code and the rights to copy,
+modify and redistribute granted by the license, users are provided only
+with a limited warranty and the software's author, the holder of the
+economic rights, and the successive licensors only have limited liability.
+
+In this respect, the risks associated with loading, using, modifying
+and/or developing or reproducing the software by the user are brought to
+the user's attention, given its Free Software status, which may make it
+complicated to use, with the result that its use is reserved for
+developers and experienced professionals having in-depth computer
+knowledge. Users are therefore encouraged to load and test the
+suitability of the software as regards their requirements in conditions
+enabling the security of their systems and/or data to be ensured and,
+more generally, to use and operate it in the same conditions of
+security. This Agreement may be freely reproduced and published,
+provided it is not altered, and that no provisions are either added or
+removed herefrom.
+
+This Agreement may apply to any or all software for which the holder of
+the economic rights decides to submit the use thereof to its provisions.
+
+
+ Article 1 - DEFINITIONS
+
+For the purpose of this Agreement, when the following expressions
+commence with a capital letter, they shall have the following meaning:
+
+Agreement: means this license agreement, and its possible subsequent
+versions and annexes.
+
+Software: means the software in its Object Code and/or Source Code form
+and, where applicable, its documentation, "as is" when the Licensee
+accepts the Agreement.
+
+Initial Software: means the Software in its Source Code and possibly its
+Object Code form and, where applicable, its documentation, "as is" when
+it is first distributed under the terms and conditions of the Agreement.
+
+Modified Software: means the Software modified by at least one
+Contribution.
+
+Source Code: means all the Software's instructions and program lines to
+which access is required so as to modify the Software.
+
+Object Code: means the binary files originating from the compilation of
+the Source Code.
+
+Holder: means the holder(s) of the economic rights over the Initial
+Software.
+
+Licensee: means the Software user(s) having accepted the Agreement.
+
+Contributor: means a Licensee having made at least one Contribution.
+
+Licensor: means the Holder, or any other individual or legal entity, who
+distributes the Software under the Agreement.
+
+Contribution: means any or all modifications, corrections, translations,
+adaptations and/or new functions integrated into the Software by any or
+all Contributors, as well as any or all Internal Modules.
+
+Module: means a set of sources files including their documentation that
+enables supplementary functions or services in addition to those offered
+by the Software.
+
+External Module: means any or all Modules, not derived from the
+Software, so that this Module and the Software run in separate address
+spaces, with one calling the other when they are run.
+
+Internal Module: means any or all Module, connected to the Software so
+that they both execute in the same address space.
+
+GNU GPL: means the GNU General Public License version 2 or any
+subsequent version, as published by the Free Software Foundation Inc.
+
+Parties: mean both the Licensee and the Licensor.
+
+These expressions may be used both in singular and plural form.
+
+
+ Article 2 - PURPOSE
+
+The purpose of the Agreement is the grant by the Licensor to the
+Licensee of a non-exclusive, transferable and worldwide license for the
+Software as set forth in Article 5 hereinafter for the whole term of the
+protection granted by the rights over said Software.
+
+
+ Article 3 - ACCEPTANCE
+
+3.1 The Licensee shall be deemed as having accepted the terms and
+conditions of this Agreement upon the occurrence of the first of the
+following events:
+
+ * (i) loading the Software by any or all means, notably, by
+ downloading from a remote server, or by loading from a physical
+ medium;
+ * (ii) the first time the Licensee exercises any of the rights
+ granted hereunder.
+
+3.2 One copy of the Agreement, containing a notice relating to the
+characteristics of the Software, to the limited warranty, and to the
+fact that its use is restricted to experienced users has been provided
+to the Licensee prior to its acceptance as set forth in Article 3.1
+hereinabove, and the Licensee hereby acknowledges that it has read and
+understood it.
+
+
+ Article 4 - EFFECTIVE DATE AND TERM
+
+
+ 4.1 EFFECTIVE DATE
+
+The Agreement shall become effective on the date when it is accepted by
+the Licensee as set forth in Article 3.1.
+
+
+ 4.2 TERM
+
+The Agreement shall remain in force for the entire legal term of
+protection of the economic rights over the Software.
+
+
+ Article 5 - SCOPE OF RIGHTS GRANTED
+
+The Licensor hereby grants to the Licensee, who accepts, the following
+rights over the Software for any or all use, and for the term of the
+Agreement, on the basis of the terms and conditions set forth hereinafter.
+
+Besides, if the Licensor owns or comes to own one or more patents
+protecting all or part of the functions of the Software or of its
+components, the Licensor undertakes not to enforce the rights granted by
+these patents against successive Licensees using, exploiting or
+modifying the Software. If these patents are transferred, the Licensor
+undertakes to have the transferees subscribe to the obligations set
+forth in this paragraph.
+
+
+ 5.1 RIGHT OF USE
+
+The Licensee is authorized to use the Software, without any limitation
+as to its fields of application, with it being hereinafter specified
+that this comprises:
+
+ 1. permanent or temporary reproduction of all or part of the Software
+ by any or all means and in any or all form.
+
+ 2. loading, displaying, running, or storing the Software on any or
+ all medium.
+
+ 3. entitlement to observe, study or test its operation so as to
+ determine the ideas and principles behind any or all constituent
+ elements of said Software. This shall apply when the Licensee
+ carries out any or all loading, displaying, running, transmission
+ or storage operation as regards the Software, that it is entitled
+ to carry out hereunder.
+
+
+ 5.2 ENTITLEMENT TO MAKE CONTRIBUTIONS
+
+The right to make Contributions includes the right to translate, adapt,
+arrange, or make any or all modifications to the Software, and the right
+to reproduce the resulting software.
+
+The Licensee is authorized to make any or all Contributions to the
+Software provided that it includes an explicit notice that it is the
+author of said Contribution and indicates the date of the creation thereof.
+
+
+ 5.3 RIGHT OF DISTRIBUTION
+
+In particular, the right of distribution includes the right to publish,
+transmit and communicate the Software to the general public on any or
+all medium, and by any or all means, and the right to market, either in
+consideration of a fee, or free of charge, one or more copies of the
+Software by any means.
+
+The Licensee is further authorized to distribute copies of the modified
+or unmodified Software to third parties according to the terms and
+conditions set forth hereinafter.
+
+
+ 5.3.1 DISTRIBUTION OF SOFTWARE WITHOUT MODIFICATION
+
+The Licensee is authorized to distribute true copies of the Software in
+Source Code or Object Code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the Object Code of the Software is
+redistributed, the Licensee allows future Licensees unhindered access to
+the full Source Code of the Software by indicating how to access it, it
+being understood that the additional cost of acquiring the Source Code
+shall not exceed the cost of transferring the data.
+
+
+ 5.3.2 DISTRIBUTION OF MODIFIED SOFTWARE
+
+When the Licensee makes a Contribution to the Software, the terms and
+conditions for the distribution of the resulting Modified Software
+become subject to all the provisions of this Agreement.
+
+The Licensee is authorized to distribute the Modified Software, in
+source code or object code form, provided that said distribution
+complies with all the provisions of the Agreement and is accompanied by:
+
+ 1. a copy of the Agreement,
+
+ 2. a notice relating to the limitation of both the Licensor's
+ warranty and liability as set forth in Articles 8 and 9,
+
+and that, in the event that only the object code of the Modified
+Software is redistributed, the Licensee allows future Licensees
+unhindered access to the full source code of the Modified Software by
+indicating how to access it, it being understood that the additional
+cost of acquiring the source code shall not exceed the cost of
+transferring the data.
+
+
+ 5.3.3 DISTRIBUTION OF EXTERNAL MODULES
+
+When the Licensee has developed an External Module, the terms and
+conditions of this Agreement do not apply to said External Module, that
+may be distributed under a separate license agreement.
+
+
+ 5.3.4 COMPATIBILITY WITH THE GNU GPL
+
+The Licensee can include a code that is subject to the provisions of one
+of the versions of the GNU GPL in the Modified or unmodified Software,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+The Licensee can include the Modified or unmodified Software in a code
+that is subject to the provisions of one of the versions of the GNU GPL,
+and distribute that entire code under the terms of the same version of
+the GNU GPL.
+
+
+ Article 6 - INTELLECTUAL PROPERTY
+
+
+ 6.1 OVER THE INITIAL SOFTWARE
+
+The Holder owns the economic rights over the Initial Software. Any or
+all use of the Initial Software is subject to compliance with the terms
+and conditions under which the Holder has elected to distribute its work
+and no one shall be entitled to modify the terms and conditions for the
+distribution of said Initial Software.
+
+The Holder undertakes that the Initial Software will remain ruled at
+least by this Agreement, for the duration set forth in Article 4.2.
+
+
+ 6.2 OVER THE CONTRIBUTIONS
+
+The Licensee who develops a Contribution is the owner of the
+intellectual property rights over this Contribution as defined by
+applicable law.
+
+
+ 6.3 OVER THE EXTERNAL MODULES
+
+The Licensee who develops an External Module is the owner of the
+intellectual property rights over this External Module as defined by
+applicable law and is free to choose the type of agreement that shall
+govern its distribution.
+
+
+ 6.4 JOINT PROVISIONS
+
+The Licensee expressly undertakes:
+
+ 1. not to remove, or modify, in any manner, the intellectual property
+ notices attached to the Software;
+
+ 2. to reproduce said notices, in an identical manner, in the copies
+ of the Software modified or not.
+
+The Licensee undertakes not to directly or indirectly infringe the
+intellectual property rights of the Holder and/or Contributors on the
+Software and to take, where applicable, vis-à-vis its staff, any and all
+measures required to ensure respect of said intellectual property rights
+of the Holder and/or Contributors.
+
+
+ Article 7 - RELATED SERVICES
+
+7.1 Under no circumstances shall the Agreement oblige the Licensor to
+provide technical assistance or maintenance services for the Software.
+
+However, the Licensor is entitled to offer this type of services. The
+terms and conditions of such technical assistance, and/or such
+maintenance, shall be set forth in a separate instrument. Only the
+Licensor offering said maintenance and/or technical assistance services
+shall incur liability therefor.
+
+7.2 Similarly, any Licensor is entitled to offer to its licensees, under
+its sole responsibility, a warranty, that shall only be binding upon
+itself, for the redistribution of the Software and/or the Modified
+Software, under terms and conditions that it is free to decide. Said
+warranty, and the financial terms and conditions of its application,
+shall be subject of a separate instrument executed between the Licensor
+and the Licensee.
+
+
+ Article 8 - LIABILITY
+
+8.1 Subject to the provisions of Article 8.2, the Licensee shall be
+entitled to claim compensation for any direct loss it may have suffered
+from the Software as a result of a fault on the part of the relevant
+Licensor, subject to providing evidence thereof.
+
+8.2 The Licensor's liability is limited to the commitments made under
+this Agreement and shall not be incurred as a result of in particular:
+(i) loss due the Licensee's total or partial failure to fulfill its
+obligations, (ii) direct or consequential loss that is suffered by the
+Licensee due to the use or performance of the Software, and (iii) more
+generally, any consequential loss. In particular the Parties expressly
+agree that any or all pecuniary or business loss (i.e. loss of data,
+loss of profits, operating loss, loss of customers or orders,
+opportunity cost, any disturbance to business activities) or any or all
+legal proceedings instituted against the Licensee by a third party,
+shall constitute consequential loss and shall not provide entitlement to
+any or all compensation from the Licensor.
+
+
+ Article 9 - WARRANTY
+
+9.1 The Licensee acknowledges that the scientific and technical
+state-of-the-art when the Software was distributed did not enable all
+possible uses to be tested and verified, nor for the presence of
+possible defects to be detected. In this respect, the Licensee's
+attention has been drawn to the risks associated with loading, using,
+modifying and/or developing and reproducing the Software which are
+reserved for experienced users.
+
+The Licensee shall be responsible for verifying, by any or all means,
+the suitability of the product for its requirements, its good working
+order, and for ensuring that it shall not cause damage to either persons
+or properties.
+
+9.2 The Licensor hereby represents, in good faith, that it is entitled
+to grant all the rights over the Software (including in particular the
+rights set forth in Article 5).
+
+9.3 The Licensee acknowledges that the Software is supplied "as is" by
+the Licensor without any other express or tacit warranty, other than
+that provided for in Article 9.2 and, in particular, without any warranty
+as to its commercial value, its secured, safe, innovative or relevant
+nature.
+
+Specifically, the Licensor does not warrant that the Software is free
+from any error, that it will operate without interruption, that it will
+be compatible with the Licensee's own equipment and software
+configuration, nor that it will meet the Licensee's requirements.
+
+9.4 The Licensor does not either expressly or tacitly warrant that the
+Software does not infringe any third party intellectual property right
+relating to a patent, software or any other property right. Therefore,
+the Licensor disclaims any and all liability towards the Licensee
+arising out of any or all proceedings for infringement that may be
+instituted in respect of the use, modification and redistribution of the
+Software. Nevertheless, should such proceedings be instituted against
+the Licensee, the Licensor shall provide it with technical and legal
+assistance for its defense. Such technical and legal assistance shall be
+decided on a case-by-case basis between the relevant Licensor and the
+Licensee pursuant to a memorandum of understanding. The Licensor
+disclaims any and all liability as regards the Licensee's use of the
+name of the Software. No warranty is given as regards the existence of
+prior rights over the name of the Software or as regards the existence
+of a trademark.
+
+
+ Article 10 - TERMINATION
+
+10.1 In the event of a breach by the Licensee of its obligations
+hereunder, the Licensor may automatically terminate this Agreement
+thirty (30) days after notice has been sent to the Licensee and has
+remained ineffective.
+
+10.2 A Licensee whose Agreement is terminated shall no longer be
+authorized to use, modify or distribute the Software. However, any
+licenses that it may have granted prior to termination of the Agreement
+shall remain valid subject to their having been granted in compliance
+with the terms and conditions hereof.
+
+
+ Article 11 - MISCELLANEOUS
+
+
+ 11.1 EXCUSABLE EVENTS
+
+Neither Party shall be liable for any or all delay, or failure to
+perform the Agreement, that may be attributable to an event of force
+majeure, an act of God or an outside cause, such as defective
+functioning or interruptions of the electricity or telecommunications
+networks, network paralysis following a virus attack, intervention by
+government authorities, natural disasters, water damage, earthquakes,
+fire, explosions, strikes and labor unrest, war, etc.
+
+11.2 Any failure by either Party, on one or more occasions, to invoke
+one or more of the provisions hereof, shall under no circumstances be
+interpreted as being a waiver by the interested Party of its right to
+invoke said provision(s) subsequently.
+
+11.3 The Agreement cancels and replaces any or all previous agreements,
+whether written or oral, between the Parties and having the same
+purpose, and constitutes the entirety of the agreement between said
+Parties concerning said purpose. No supplement or modification to the
+terms and conditions hereof shall be effective as between the Parties
+unless it is made in writing and signed by their duly authorized
+representatives.
+
+11.4 In the event that one or more of the provisions hereof were to
+conflict with a current or future applicable act or legislative text,
+said act or legislative text shall prevail, and the Parties shall make
+the necessary amendments so as to comply with said act or legislative
+text. All other provisions shall remain effective. Similarly, invalidity
+of a provision of the Agreement, for any reason whatsoever, shall not
+cause the Agreement as a whole to be invalid.
+
+
+ 11.5 LANGUAGE
+
+The Agreement is drafted in both French and English and both versions
+are deemed authentic.
+
+
+ Article 12 - NEW VERSIONS OF THE AGREEMENT
+
+12.1 Any person is authorized to duplicate and distribute copies of this
+Agreement.
+
+12.2 So as to ensure coherence, the wording of this Agreement is
+protected and may only be modified by the authors of the License, who
+reserve the right to periodically publish updates or new versions of the
+Agreement, each with a separate number. These subsequent versions may
+address new issues encountered by Free Software.
+
+12.3 Any Software distributed under a given version of the Agreement may
+only be subsequently distributed under the same version of the Agreement
+or a subsequent version, subject to the provisions of Article 5.3.4.
+
+
+ Article 13 - GOVERNING LAW AND JURISDICTION
+
+13.1 The Agreement is governed by French law. The Parties agree to
+endeavor to seek an amicable solution to any disagreements or disputes
+that may arise during the performance of the Agreement.
+
+13.2 Failing an amicable solution within two (2) months as from their
+occurrence, and unless emergency proceedings are necessary, the
+disagreements or disputes shall be referred to the Paris Courts having
+jurisdiction, by the more diligent Party.
+
+
+Version 2.0 dated 2006-09-05.
+
+------------------------------------------------------------------------------
+
+CONTRAT DE LICENCE DE LOGICIEL LIBRE CeCILL
+
+
+ Avertissement
+
+Ce contrat est une licence de logiciel libre issue d'une concertation
+entre ses auteurs afin que le respect de deux grands principes préside à
+sa rédaction:
+
+ * d'une part, le respect des principes de diffusion des logiciels
+ libres: accès au code source, droits étendus conférés aux
+ utilisateurs,
+ * d'autre part, la désignation d'un droit applicable, le droit
+ français, auquel elle est conforme, tant au regard du droit de la
+ responsabilité civile que du droit de la propriété intellectuelle
+ et de la protection qu'il offre aux auteurs et titulaires des
+ droits patrimoniaux sur un logiciel.
+
+Les auteurs de la licence CeCILL (pour Ce[a] C[nrs] I[nria] L[ogiciel]
+L[ibre]) sont:
+
+Commissariat à l'Energie Atomique - CEA, établissement public de
+recherche à caractère scientifique, technique et industriel, dont le
+siège est situé 25 rue Leblanc, immeuble Le Ponant D, 75015 Paris.
+
+Centre National de la Recherche Scientifique - CNRS, établissement
+public à caractère scientifique et technologique, dont le siège est
+situé 3 rue Michel-Ange, 75794 Paris cedex 16.
+
+Institut National de Recherche en Informatique et en Automatique -
+INRIA, établissement public à caractère scientifique et technologique,
+dont le siège est situé Domaine de Voluceau, Rocquencourt, BP 105, 78153
+Le Chesnay cedex.
+
+
+ Préambule
+
+Ce contrat est une licence de logiciel libre dont l'objectif est de
+conférer aux utilisateurs la liberté de modification et de
+redistribution du logiciel régi par cette licence dans le cadre d'un
+modèle de diffusion en logiciel libre.
+
+L'exercice de ces libertés est assorti de certains devoirs à la charge
+des utilisateurs afin de préserver ce statut au cours des
+redistributions ultérieures.
+
+L'accessibilité au code source et les droits de copie, de modification
+et de redistribution qui en découlent ont pour contrepartie de n'offrir
+aux utilisateurs qu'une garantie limitée et de ne faire peser sur
+l'auteur du logiciel, le titulaire des droits patrimoniaux et les
+concédants successifs qu'une responsabilité restreinte.
+
+A cet égard l'attention de l'utilisateur est attirée sur les risques
+associés au chargement, à l'utilisation, à la modification et/ou au
+développement et à la reproduction du logiciel par l'utilisateur étant
+donné sa spécificité de logiciel libre, qui peut le rendre complexe à
+manipuler et qui le réserve donc à des développeurs ou des
+professionnels avertis possédant des connaissances informatiques
+approfondies. Les utilisateurs sont donc invités à charger et tester
+l'adéquation du logiciel à leurs besoins dans des conditions permettant
+d'assurer la sécurité de leurs systèmes et/ou de leurs données et, plus
+généralement, à l'utiliser et l'exploiter dans les mêmes conditions de
+sécurité. Ce contrat peut être reproduit et diffusé librement, sous
+réserve de le conserver en l'état, sans ajout ni suppression de clauses.
+
+Ce contrat est susceptible de s'appliquer à tout logiciel dont le
+titulaire des droits patrimoniaux décide de soumettre l'exploitation aux
+dispositions qu'il contient.
+
+
+ Article 1 - DEFINITIONS
+
+Dans ce contrat, les termes suivants, lorsqu'ils seront écrits avec une
+lettre capitale, auront la signification suivante:
+
+Contrat: désigne le présent contrat de licence, ses éventuelles versions
+postérieures et annexes.
+
+Logiciel: désigne le logiciel sous sa forme de Code Objet et/ou de Code
+Source et le cas échéant sa documentation, dans leur état au moment de
+l'acceptation du Contrat par le Licencié.
+
+Logiciel Initial: désigne le Logiciel sous sa forme de Code Source et
+éventuellement de Code Objet et le cas échéant sa documentation, dans
+leur état au moment de leur première diffusion sous les termes du Contrat.
+
+Logiciel Modifié: désigne le Logiciel modifié par au moins une
+Contribution.
+
+Code Source: désigne l'ensemble des instructions et des lignes de
+programme du Logiciel et auquel l'accès est nécessaire en vue de
+modifier le Logiciel.
+
+Code Objet: désigne les fichiers binaires issus de la compilation du
+Code Source.
+
+Titulaire: désigne le ou les détenteurs des droits patrimoniaux d'auteur
+sur le Logiciel Initial.
+
+Licencié: désigne le ou les utilisateurs du Logiciel ayant accepté le
+Contrat.
+
+Contributeur: désigne le Licencié auteur d'au moins une Contribution.
+
+Concédant: désigne le Titulaire ou toute personne physique ou morale
+distribuant le Logiciel sous le Contrat.
+
+Contribution: désigne l'ensemble des modifications, corrections,
+traductions, adaptations et/ou nouvelles fonctionnalités intégrées dans
+le Logiciel par tout Contributeur, ainsi que tout Module Interne.
+
+Module: désigne un ensemble de fichiers sources y compris leur
+documentation qui permet de réaliser des fonctionnalités ou services
+supplémentaires à ceux fournis par le Logiciel.
+
+Module Externe: désigne tout Module, non dérivé du Logiciel, tel que ce
+Module et le Logiciel s'exécutent dans des espaces d'adressage
+différents, l'un appelant l'autre au moment de leur exécution.
+
+Module Interne: désigne tout Module lié au Logiciel de telle sorte
+qu'ils s'exécutent dans le même espace d'adressage.
+
+GNU GPL: désigne la GNU General Public License dans sa version 2 ou
+toute version ultérieure, telle que publiée par Free Software Foundation
+Inc.
+
+Parties: désigne collectivement le Licencié et le Concédant.
+
+Ces termes s'entendent au singulier comme au pluriel.
+
+
+ Article 2 - OBJET
+
+Le Contrat a pour objet la concession par le Concédant au Licencié d'une
+licence non exclusive, cessible et mondiale du Logiciel telle que
+définie ci-après à l'article 5 pour toute la durée de protection des droits
+portant sur ce Logiciel.
+
+
+ Article 3 - ACCEPTATION
+
+3.1 L'acceptation par le Licencié des termes du Contrat est réputée
+acquise du fait du premier des faits suivants:
+
+ * (i) le chargement du Logiciel par tout moyen notamment par
+ téléchargement à partir d'un serveur distant ou par chargement à
+ partir d'un support physique;
+ * (ii) le premier exercice par le Licencié de l'un quelconque des
+ droits concédés par le Contrat.
+
+3.2 Un exemplaire du Contrat, contenant notamment un avertissement
+relatif aux spécificités du Logiciel, à la restriction de garantie et à
+la limitation à un usage par des utilisateurs expérimentés a été mis à
+disposition du Licencié préalablement à son acceptation telle que
+définie à l'article 3.1 ci dessus et le Licencié reconnaît en avoir pris
+connaissance.
+
+
+ Article 4 - ENTREE EN VIGUEUR ET DUREE
+
+
+ 4.1 ENTREE EN VIGUEUR
+
+Le Contrat entre en vigueur à la date de son acceptation par le Licencié
+telle que définie en 3.1.
+
+
+ 4.2 DUREE
+
+Le Contrat produira ses effets pendant toute la durée légale de
+protection des droits patrimoniaux portant sur le Logiciel.
+
+
+ Article 5 - ETENDUE DES DROITS CONCEDES
+
+Le Concédant concède au Licencié, qui accepte, les droits suivants sur
+le Logiciel pour toutes destinations et pour la durée du Contrat dans
+les conditions ci-après détaillées.
+
+Par ailleurs, si le Concédant détient ou venait à détenir un ou
+plusieurs brevets d'invention protégeant tout ou partie des
+fonctionnalités du Logiciel ou de ses composants, il s'engage à ne pas
+opposer les éventuels droits conférés par ces brevets aux Licenciés
+successifs qui utiliseraient, exploiteraient ou modifieraient le
+Logiciel. En cas de cession de ces brevets, le Concédant s'engage à
+faire reprendre les obligations du présent alinéa aux cessionnaires.
+
+
+ 5.1 DROIT D'UTILISATION
+
+Le Licencié est autorisé à utiliser le Logiciel, sans restriction quant
+aux domaines d'application, étant ci-après précisé que cela comporte:
+
+ 1. la reproduction permanente ou provisoire du Logiciel en tout ou
+ partie par tout moyen et sous toute forme.
+
+ 2. le chargement, l'affichage, l'exécution, ou le stockage du
+ Logiciel sur tout support.
+
+ 3. la possibilité d'en observer, d'en étudier, ou d'en tester le
+ fonctionnement afin de déterminer les idées et principes qui sont
+ à la base de n'importe quel élément de ce Logiciel; et ceci,
+ lorsque le Licencié effectue toute opération de chargement,
+ d'affichage, d'exécution, de transmission ou de stockage du
+ Logiciel qu'il est en droit d'effectuer en vertu du Contrat.
+
+
+ 5.2 DROIT D'APPORTER DES CONTRIBUTIONS
+
+Le droit d'apporter des Contributions comporte le droit de traduire,
+d'adapter, d'arranger ou d'apporter toute autre modification au Logiciel
+et le droit de reproduire le logiciel en résultant.
+
+Le Licencié est autorisé à apporter toute Contribution au Logiciel sous
+réserve de mentionner, de façon explicite, son nom en tant qu'auteur de
+cette Contribution et la date de création de celle-ci.
+
+
+ 5.3 DROIT DE DISTRIBUTION
+
+Le droit de distribution comporte notamment le droit de diffuser, de
+transmettre et de communiquer le Logiciel au public sur tout support et
+par tout moyen ainsi que le droit de mettre sur le marché à titre
+onéreux ou gratuit, un ou des exemplaires du Logiciel par tout procédé.
+
+Le Licencié est autorisé à distribuer des copies du Logiciel, modifié ou
+non, à des tiers dans les conditions ci-après détaillées.
+
+
+ 5.3.1 DISTRIBUTION DU LOGICIEL SANS MODIFICATION
+
+Le Licencié est autorisé à distribuer des copies conformes du Logiciel,
+sous forme de Code Source ou de Code Objet, à condition que cette
+distribution respecte les dispositions du Contrat dans leur totalité et
+soit accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le Code Objet du Logiciel est redistribué,
+le Licencié permette aux futurs Licenciés d'accéder facilement au Code
+Source complet du Logiciel en indiquant les modalités d'accès, étant
+entendu que le coût additionnel d'acquisition du Code Source ne devra
+pas excéder le simple coût de transfert des données.
+
+
+ 5.3.2 DISTRIBUTION DU LOGICIEL MODIFIE
+
+Lorsque le Licencié apporte une Contribution au Logiciel, les conditions
+de distribution du Logiciel Modifié en résultant sont alors soumises à
+l'intégralité des dispositions du Contrat.
+
+Le Licencié est autorisé à distribuer le Logiciel Modifié, sous forme de
+code source ou de code objet, à condition que cette distribution
+respecte les dispositions du Contrat dans leur totalité et soit
+accompagnée:
+
+ 1. d'un exemplaire du Contrat,
+
+ 2. d'un avertissement relatif à la restriction de garantie et de
+ responsabilité du Concédant telle que prévue aux articles 8
+ et 9,
+
+et que, dans le cas où seul le code objet du Logiciel Modifié est
+redistribué, le Licencié permette aux futurs Licenciés d'accéder
+facilement au code source complet du Logiciel Modifié en indiquant les
+modalités d'accès, étant entendu que le coût additionnel d'acquisition
+du code source ne devra pas excéder le simple coût de transfert des données.
+
+
+ 5.3.3 DISTRIBUTION DES MODULES EXTERNES
+
+Lorsque le Licencié a développé un Module Externe les conditions du
+Contrat ne s'appliquent pas à ce Module Externe, qui peut être distribué
+sous un contrat de licence différent.
+
+
+ 5.3.4 COMPATIBILITE AVEC LA LICENCE GNU GPL
+
+Le Licencié peut inclure un code soumis aux dispositions d'une des
+versions de la licence GNU GPL dans le Logiciel modifié ou non et
+distribuer l'ensemble sous les conditions de la même version de la
+licence GNU GPL.
+
+Le Licencié peut inclure le Logiciel modifié ou non dans un code soumis
+aux dispositions d'une des versions de la licence GNU GPL et distribuer
+l'ensemble sous les conditions de la même version de la licence GNU GPL.
+
+
+ Article 6 - PROPRIETE INTELLECTUELLE
+
+
+ 6.1 SUR LE LOGICIEL INITIAL
+
+Le Titulaire est détenteur des droits patrimoniaux sur le Logiciel
+Initial. Toute utilisation du Logiciel Initial est soumise au respect
+des conditions dans lesquelles le Titulaire a choisi de diffuser son
+oeuvre et nul autre n'a la faculté de modifier les conditions de
+diffusion de ce Logiciel Initial.
+
+Le Titulaire s'engage à ce que le Logiciel Initial reste au moins régi
+par le Contrat et ce, pour la durée visée à l'article 4.2.
+
+
+ 6.2 SUR LES CONTRIBUTIONS
+
+Le Licencié qui a développé une Contribution est titulaire sur celle-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable.
+
+
+ 6.3 SUR LES MODULES EXTERNES
+
+Le Licencié qui a développé un Module Externe est titulaire sur celui-ci
+des droits de propriété intellectuelle dans les conditions définies par
+la législation applicable et reste libre du choix du contrat régissant
+sa diffusion.
+
+
+ 6.4 DISPOSITIONS COMMUNES
+
+Le Licencié s'engage expressément:
+
+ 1. à ne pas supprimer ou modifier de quelque manière que ce soit les
+ mentions de propriété intellectuelle apposées sur le Logiciel;
+
+ 2. à reproduire à l'identique lesdites mentions de propriété
+ intellectuelle sur les copies du Logiciel modifié ou non.
+
+Le Licencié s'engage à ne pas porter atteinte, directement ou
+indirectement, aux droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs sur le Logiciel et à prendre, le cas échéant, à
+l'égard de son personnel toutes les mesures nécessaires pour assurer le
+respect des dits droits de propriété intellectuelle du Titulaire et/ou
+des Contributeurs.
+
+
+ Article 7 - SERVICES ASSOCIES
+
+7.1 Le Contrat n'oblige en aucun cas le Concédant à la réalisation de
+prestations d'assistance technique ou de maintenance du Logiciel.
+
+Cependant le Concédant reste libre de proposer ce type de services. Les
+termes et conditions d'une telle assistance technique et/ou d'une telle
+maintenance seront alors déterminés dans un acte séparé. Ces actes de
+maintenance et/ou assistance technique n'engageront que la seule
+responsabilité du Concédant qui les propose.
+
+7.2 De même, tout Concédant est libre de proposer, sous sa seule
+responsabilité, à ses licenciés une garantie, qui n'engagera que lui,
+lors de la redistribution du Logiciel et/ou du Logiciel Modifié et ce,
+dans les conditions qu'il souhaite. Cette garantie et les modalités
+financières de son application feront l'objet d'un acte séparé entre le
+Concédant et le Licencié.
+
+
+ Article 8 - RESPONSABILITE
+
+8.1 Sous réserve des dispositions de l'article 8.2, le Licencié a la
+faculté, sous réserve de prouver la faute du Concédant concerné, de
+solliciter la réparation du préjudice direct qu'il subirait du fait du
+Logiciel et dont il apportera la preuve.
+
+8.2 La responsabilité du Concédant est limitée aux engagements pris en
+application du Contrat et ne saurait être engagée en raison notamment:
+(i) des dommages dus à l'inexécution, totale ou partielle, de ses
+obligations par le Licencié, (ii) des dommages directs ou indirects
+découlant de l'utilisation ou des performances du Logiciel subis par le
+Licencié et (iii) plus généralement d'un quelconque dommage indirect. En
+particulier, les Parties conviennent expressément que tout préjudice
+financier ou commercial (par exemple perte de données, perte de
+bénéfices, perte d'exploitation, perte de clientèle ou de commandes,
+manque à gagner, trouble commercial quelconque) ou toute action dirigée
+contre le Licencié par un tiers, constitue un dommage indirect et
+n'ouvre pas droit à réparation par le Concédant.
+
+
+ Article 9 - GARANTIE
+
+9.1 Le Licencié reconnaît que l'état actuel des connaissances
+scientifiques et techniques au moment de la mise en circulation du
+Logiciel ne permet pas d'en tester et d'en vérifier toutes les
+utilisations ni de détecter l'existence d'éventuels défauts. L'attention
+du Licencié a été attirée sur ce point sur les risques associés au
+chargement, à l'utilisation, la modification et/ou au développement et à
+la reproduction du Logiciel qui sont réservés à des utilisateurs avertis.
+
+Il relève de la responsabilité du Licencié de contrôler, par tous
+moyens, l'adéquation du produit à ses besoins, son bon fonctionnement et
+de s'assurer qu'il ne causera pas de dommages aux personnes et aux biens.
+
+9.2 Le Concédant déclare de bonne foi être en droit de concéder
+l'ensemble des droits attachés au Logiciel (comprenant notamment les
+droits visés à l'article 5).
+
+9.3 Le Licencié reconnaît que le Logiciel est fourni "en l'état" par le
+Concédant sans autre garantie, expresse ou tacite, que celle prévue à
+l'article 9.2 et notamment sans aucune garantie sur sa valeur commerciale,
+son caractère sécurisé, innovant ou pertinent.
+
+En particulier, le Concédant ne garantit pas que le Logiciel est exempt
+d'erreur, qu'il fonctionnera sans interruption, qu'il sera compatible
+avec l'équipement du Licencié et sa configuration logicielle ni qu'il
+remplira les besoins du Licencié.
+
+9.4 Le Concédant ne garantit pas, de manière expresse ou tacite, que le
+Logiciel ne porte pas atteinte à un quelconque droit de propriété
+intellectuelle d'un tiers portant sur un brevet, un logiciel ou sur tout
+autre droit de propriété. Ainsi, le Concédant exclut toute garantie au
+profit du Licencié contre les actions en contrefaçon qui pourraient être
+diligentées au titre de l'utilisation, de la modification, et de la
+redistribution du Logiciel. Néanmoins, si de telles actions sont
+exercées contre le Licencié, le Concédant lui apportera son aide
+technique et juridique pour sa défense. Cette aide technique et
+juridique est déterminée au cas par cas entre le Concédant concerné et
+le Licencié dans le cadre d'un protocole d'accord. Le Concédant dégage
+toute responsabilité quant à l'utilisation de la dénomination du
+Logiciel par le Licencié. Aucune garantie n'est apportée quant à
+l'existence de droits antérieurs sur le nom du Logiciel et sur
+l'existence d'une marque.
+
+
+ Article 10 - RESILIATION
+
+10.1 En cas de manquement par le Licencié aux obligations mises à sa
+charge par le Contrat, le Concédant pourra résilier de plein droit le
+Contrat trente (30) jours après notification adressée au Licencié et
+restée sans effet.
+
+10.2 Le Licencié dont le Contrat est résilié n'est plus autorisé à
+utiliser, modifier ou distribuer le Logiciel. Cependant, toutes les
+licences qu'il aura concédées antérieurement à la résiliation du Contrat
+resteront valides sous réserve qu'elles aient été effectuées en
+conformité avec le Contrat.
+
+
+ Article 11 - DISPOSITIONS DIVERSES
+
+
+ 11.1 CAUSE EXTERIEURE
+
+Aucune des Parties ne sera responsable d'un retard ou d'une défaillance
+d'exécution du Contrat qui serait dû à un cas de force majeure, un cas
+fortuit ou une cause extérieure, telle que, notamment, le mauvais
+fonctionnement ou les interruptions du réseau électrique ou de
+télécommunication, la paralysie du réseau liée à une attaque
+informatique, l'intervention des autorités gouvernementales, les
+catastrophes naturelles, les dégâts des eaux, les tremblements de terre,
+le feu, les explosions, les grèves et les conflits sociaux, l'état de
+guerre...
+
+11.2 Le fait, par l'une ou l'autre des Parties, d'omettre en une ou
+plusieurs occasions de se prévaloir d'une ou plusieurs dispositions du
+Contrat, ne pourra en aucun cas impliquer renonciation par la Partie
+intéressée à s'en prévaloir ultérieurement.
+
+11.3 Le Contrat annule et remplace toute convention antérieure, écrite
+ou orale, entre les Parties sur le même objet et constitue l'accord
+entier entre les Parties sur cet objet. Aucune addition ou modification
+aux termes du Contrat n'aura d'effet à l'égard des Parties à moins
+d'être faite par écrit et signée par leurs représentants dûment habilités.
+
+11.4 Dans l'hypothèse où une ou plusieurs des dispositions du Contrat
+s'avèrerait contraire à une loi ou à un texte applicable, existants ou
+futurs, cette loi ou ce texte prévaudrait, et les Parties feraient les
+amendements nécessaires pour se conformer à cette loi ou à ce texte.
+Toutes les autres dispositions resteront en vigueur. De même, la
+nullité, pour quelque raison que ce soit, d'une des dispositions du
+Contrat ne saurait entraîner la nullité de l'ensemble du Contrat.
+
+
+ 11.5 LANGUE
+
+Le Contrat est rédigé en langue française et en langue anglaise, ces
+deux versions faisant également foi.
+
+
+ Article 12 - NOUVELLES VERSIONS DU CONTRAT
+
+12.1 Toute personne est autorisée à copier et distribuer des copies de
+ce Contrat.
+
+12.2 Afin d'en préserver la cohérence, le texte du Contrat est protégé
+et ne peut être modifié que par les auteurs de la licence, lesquels se
+réservent le droit de publier périodiquement des mises à jour ou de
+nouvelles versions du Contrat, qui posséderont chacune un numéro
+distinct. Ces versions ultérieures seront susceptibles de prendre en
+compte de nouvelles problématiques rencontrées par les logiciels libres.
+
+12.3 Tout Logiciel diffusé sous une version donnée du Contrat ne pourra
+faire l'objet d'une diffusion ultérieure que sous la même version du
+Contrat ou une version postérieure, sous réserve des dispositions de
+l'article 5.3.4.
+
+
+ Article 13 - LOI APPLICABLE ET COMPETENCE TERRITORIALE
+
+13.1 Le Contrat est régi par la loi française. Les Parties conviennent
+de tenter de régler à l'amiable les différends ou litiges qui
+viendraient à se produire par suite ou à l'occasion du Contrat.
+
+13.2 A défaut d'accord amiable dans un délai de deux (2) mois à compter
+de leur survenance et sauf situation relevant d'une procédure d'urgence,
+les différends ou litiges seront portés par la Partie la plus diligente
+devant les Tribunaux compétents de Paris.
+
+
+Version 2.0 du 2006-09-05.
From 104d5dc71787f27dc092a91025429a0c35d6f5ef Mon Sep 17 00:00:00 2001
From: nojhan
Date: Wed, 3 Nov 2021 16:56:23 +0100
Subject: [PATCH 017/113] fix signal management on MacOS
---
eo/src/eoSIGContinue.h | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/eo/src/eoSIGContinue.h b/eo/src/eoSIGContinue.h
index a84440c72..727c74a01 100644
--- a/eo/src/eoSIGContinue.h
+++ b/eo/src/eoSIGContinue.h
@@ -32,7 +32,7 @@
#ifndef eoSIGContinue_h
#define eoSIGContinue_h
-#include
+#include
#include "eoContinue.h"
/** @addtogroup Continuators
@@ -51,6 +51,11 @@ template< class EOT>
class eoSIGContinue: public eoContinue
{
public:
+
+#ifdef __APPLE__ // FIXME there should be a way to be more portable here
+ using sighandler_t = void (*)(int);
+#endif
+
/// Ctor : installs the signal handler
eoSIGContinue(int sig, sighandler_t fct)
: _sig(sig), _fct(fct)
From 00c6a8c4546efef5eb9787ccece81a7da82c06d0 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Wed, 10 Nov 2021 09:37:21 +0100
Subject: [PATCH 018/113] change the chat address
---
docs/index.html | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/docs/index.html b/docs/index.html
index e93e5ee19..640d14813 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -30,7 +30,7 @@
Alternatively, you can join us on the official chatroom. You can try our webchat interface, or if you already use IRC, you can directly connect to the irc.freenode.org/#paradiseo multi-user chatroom with your favorite client.
+
Alternatively, you can join us on the official chatroom. You can try the online webchat app, or if you already use Element.io, you can directly connect to the #paradiseo:matrix.org multi-user chatroom with your favorite client.
From 62d3b2f68fdd66b742fc3518c430ebd950c04850 Mon Sep 17 00:00:00 2001
From: Johann Dreo <75248710+jdreo@users.noreply.github.com>
Date: Sat, 11 Dec 2021 18:14:16 +0100
Subject: [PATCH 019/113] Add a Github action
---
.github/workflows/build_ubuntu_debug.yml | 45 ++++++++++++++++++++++++
1 file changed, 45 insertions(+)
create mode 100644 .github/workflows/build_ubuntu_debug.yml
diff --git a/.github/workflows/build_ubuntu_debug.yml b/.github/workflows/build_ubuntu_debug.yml
new file mode 100644
index 000000000..2b2c27835
--- /dev/null
+++ b/.github/workflows/build_ubuntu_debug.yml
@@ -0,0 +1,45 @@
+name: Build_Ubuntu_Debug
+
+on:
+ push:
+ branches: [ master ]
+ pull_request:
+ branches: [ master ]
+
+env:
+ # Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
+ BUILD_TYPE: Debug
+
+jobs:
+ build:
+ # The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
+ # You can convert this to a matrix build if you need cross-platform coverage.
+ # See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
+ runs-on: ubuntu-latest
+ strategy:
+ matrix:
+ compiler: [g++-10, g++-9, g++-8, g++-7, clang-6, clang-7, clang-8, clang-9, clang-10, clang-11, clang-12]
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - name: Install Dependencies
+ shell: bash
+ run: |
+ sudo apt-get install libeigen3-dev
+
+ - name: Configure
+ # Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
+ # See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
+ run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -EDO=ON -EDO_USE_LIB=Eigen3 -DENABLE_CMAKE_EXAMPLE=ON -DENABLE_CMAKE_TESTING=ON
+
+ - name: Build
+ # Build your program with the given configuration
+ run: cmake --build ${{github.workspace}}/build --config ${{env.BUILD_TYPE}}
+
+ - name: Test
+ working-directory: ${{github.workspace}}/build
+ # Execute tests defined by the CMake configuration.
+ # See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
+ run: ctest -C ${{env.BUILD_TYPE}}
+
From 069a05edc9ae8cce8d6eb3936c97291b4b4535d3 Mon Sep 17 00:00:00 2001
From: Johann Dreo <75248710+jdreo@users.noreply.github.com>
Date: Sat, 11 Dec 2021 18:25:53 +0100
Subject: [PATCH 020/113] Fix ubuntu debug action
---
.github/workflows/build_ubuntu_debug.yml | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/.github/workflows/build_ubuntu_debug.yml b/.github/workflows/build_ubuntu_debug.yml
index 2b2c27835..b2fa74830 100644
--- a/.github/workflows/build_ubuntu_debug.yml
+++ b/.github/workflows/build_ubuntu_debug.yml
@@ -1,4 +1,4 @@
-name: Build_Ubuntu_Debug
+name: Build Debug (Ubuntu)
on:
push:
@@ -31,7 +31,7 @@ jobs:
- name: Configure
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
- run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -EDO=ON -EDO_USE_LIB=Eigen3 -DENABLE_CMAKE_EXAMPLE=ON -DENABLE_CMAKE_TESTING=ON
+ run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DEDO=ON -DEDO_USE_LIB=Eigen3 -DENABLE_CMAKE_EXAMPLE=ON -DENABLE_CMAKE_TESTING=ON
- name: Build
# Build your program with the given configuration
From 75fd06abc1ab77a8dc9a9a592863dcf378634a4f Mon Sep 17 00:00:00 2001
From: Johann Dreo <75248710+jdreo@users.noreply.github.com>
Date: Sat, 11 Dec 2021 21:25:17 +0100
Subject: [PATCH 021/113] fix missing dep in action
---
.github/workflows/build_ubuntu_debug.yml | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/.github/workflows/build_ubuntu_debug.yml b/.github/workflows/build_ubuntu_debug.yml
index b2fa74830..d6d5cad4b 100644
--- a/.github/workflows/build_ubuntu_debug.yml
+++ b/.github/workflows/build_ubuntu_debug.yml
@@ -26,7 +26,7 @@ jobs:
- name: Install Dependencies
shell: bash
run: |
- sudo apt-get install libeigen3-dev
+ sudo apt-get install libeigen3-dev libboost-dev
- name: Configure
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
From 00b66afcaac84b20c61df9b51c1c080e4eb76e21 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Tue, 4 Jan 2022 11:03:53 +0100
Subject: [PATCH 022/113] fix a missing update in fastga.sindef
---
eo/contrib/irace/fastga.sindef | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/eo/contrib/irace/fastga.sindef b/eo/contrib/irace/fastga.sindef
index 86fa3e7cd..b27155ecf 100644
--- a/eo/contrib/irace/fastga.sindef
+++ b/eo/contrib/irace/fastga.sindef
@@ -1,9 +1,10 @@
-Bootstrap: library
+https://github.com/drbild/json2yaml.gitBootstrap: library
From: ubuntu:20.04
%post
# Dependencies
+ apt -y update
apt -y install software-properties-common
add-apt-repository universe
apt -y update
From a96db239c465c5de432db2376b375f50fe2cf8c2 Mon Sep 17 00:00:00 2001
From: nojhan
Date: Tue, 4 Jan 2022 11:04:11 +0100
Subject: [PATCH 023/113] update the doc index
- get rid of several INRIA's gforge links
- update the last reference
---
docs/index.html | 70 ++++++++++++++++++++++++++++++++-----------------
1 file changed, 46 insertions(+), 24 deletions(-)
diff --git a/docs/index.html b/docs/index.html
index 640d14813..f64f8b94a 100644
--- a/docs/index.html
+++ b/docs/index.html
@@ -28,8 +28,8 @@
If you used Paradiseo in a study, please cite the publication above:
+
+ @inproceedings{Dreo-al_2021_Paradiseo,
+ author = {Dreo, Johann and Liefooghe, Arnaud and Verel, S\'{e}bastien and Schoenauer, Marc and Merelo, Juan J. and Quemy, Alexandre and Bouvier, Benjamin and Gmys, Jan},
+ title = {Paradiseo: From a Modular Framework for Evolutionary Computation to the Automated Design of Metaheuristics: 22 Years of Paradiseo},
+ year = {2021},
+ isbn = {9781450383516},
+ publisher = {Association for Computing Machinery},
+ address = {New York, NY, USA},
+ url = {https://doi.org/10.1145/3449726.3463276},
+ booktitle = {Proceedings of the Genetic and Evolutionary Computation Conference Companion},
+ pages = {1522–1530},
+ numpages = {9}
+ }
+
+
+
-
-
-
-
-
}
+ -->
+
+
The core EO module is described in the following scientific article:
+
You can obtain the latest stable and beta version directly via the official Git repository:
- git clone git://scm.gforge.inria.fr/paradiseo/paradiseo.git.
+
You can obtain the latest stable and beta version directly via the Git repository:
+ git clone https://github.com/jdreo/paradiseo.git.
The release are on the "master" branch.
Or you can use (at your own risks) the development repositories of the developers: