/*! \file SelM.cpp
\brief approximation model based selection
\author Aimin ZHOU
\author Department of Computer Science,
\author University of Essex,
\author Colchester, CO4 3SQ, U.K
\author azhou@essex.ac.uk
\date Mar.17 2008 create
\date Jun.22 2008 redesign
\date Jul.08 2008 adaptive change the extensions
*/
#include <cmath>
#include <algorithm>
#include <fstream>
#include <vector>
#include <list>
#include <float.h>
#include "emo/Sel.h"
//#define AZ_TMP_OUT 1
#define ZA_AMS_SINGLE 1 // AMS for maintaining diversity in the objective space
//#define ZA_AMS_DUAL_A 1 // AMS for maintaining diversity in two spaces, a penalty is added to subproblem objective
//#define ZA_AMS_DUAL_B 1 // AMS for maintaining diversity in two spaces, MaxiMin selection is used to maintain diversity in the decision space
namespace az
{
namespace mea
{
namespace sel
{
double W2D[2][1000]={
{1.00e+000,0.00e+000,5.00e-001,2.50e-001,7.50e-001,3.75e-001,8.75e-001,1.25e-001,6.25e-001,1.87e-001,3.12e-001,4.37e-001,6.87e-001,8.12e-001,9.37e-001,5.62e-001,6.23e-002,4.06e-001,1.56e-001,2.19e-001,9.36e-002,3.44e-001,4.69e-001,5.94e-001,6.56e-001,7.19e-001,7.81e-001,8.44e-001,9.06e-001,9.69e-001,2.81e-001,5.31e-001,3.13e-002,2.66e-001,3.28e-001,3.91e-001,4.53e-001,5.16e-001,5.47e-001,5.78e-001,6.09e-001,6.40e-001,6.72e-001,7.03e-001,7.34e-001,7.65e-001,7.97e-001,8.28e-001,8.59e-001,8.90e-001,9.22e-001,9.53e-001,9.84e-001,7.81e-002,1.40e-001,1.72e-001,1.55e-002,4.68e-002,1.09e-001,2.03e-001,2.34e-001,3.59e-001,4.22e-001,4.84e-001,2.97e-001,3.20e-001,4.30e-001,1.95e-001,2.26e-001,2.58e-001,3.04e-001,3.36e-001,3.67e-001,3.83e-001,4.61e-001,5.08e-001,5.23e-001,5.39e-001,5.55e-001,5.70e-001,5.86e-001,6.01e-001,6.17e-001,6.33e-001,6.48e-001,6.64e-001,6.79e-001,6.95e-001,7.11e-001,7.26e-001,7.42e-001,7.58e-001,7.73e-001,7.89e-001,8.04e-001,8.20e-001,8.36e-001,8.51e-001,8.67e-001,8.83e-001,8.98e-001,9.14e-001,9.30e-001,9.45e-001,9.61e-001,9.77e-001,9.92e-001,8.58e-002,2.35e-002,7.77e-003,3.90e-002,5.46e-002,7.03e-002,1.01e-001,1.17e-001,1.33e-001,1.48e-001,1.64e-001,1.79e-001,2.11e-001,2.42e-001,4.14e-001,4.45e-001,4.77e-001,4.92e-001,2.73e-001,3.98e-001,2.89e-001,3.51e-001,6.83e-001,8.09e-001,9.34e-001,2.62e-001,2.77e-001,3.16e-001,3.55e-001,3.95e-001,4.34e-001,1.83e-001,6.64e-002,1.29e-001,1.44e-001,1.52e-001,1.60e-001,1.68e-001,1.76e-001,1.91e-001,1.99e-001,2.07e-001,2.15e-001,2.23e-001,2.30e-001,2.38e-001,2.46e-001,2.54e-001,2.70e-001,2.93e-001,3.01e-001,3.09e-001,3.24e-001,3.32e-001,3.40e-001,3.63e-001,3.71e-001,3.79e-001,3.87e-001,4.02e-001,4.18e-001,4.26e-001,4.41e-001,4.57e-001,4.65e-001,4.80e-001,4.96e-001,4.29e-002,1.17e-002,3.88e-003,1.94e-002,2.74e-002,3.51e-002,5.07e-002,5.84e-002,7.42e-002,8.19e-002,8.97e-002,9.75e-002,1.05e-001,1.13e-001,1.21e-001,1.37e-001,2.85e-001,3.48e-001,4.10e-001,4.49e-001,4.73e-001,4.88e-001,5.04e-001,5.12e-001,5.19e-001,5.27e-001,5.35e-001,5.43e-001,5.51e-001,5.58e-001,5.66e-001,5.74e-001,5.82e-001,5.90e-001,5.97e-001,6.05e-001,6.13e-001,6.21e-001,6.29e-001,6.37e-001,6.44e-001,6.52e-001,6.60e-001,6.68e-001,6.76e-001,6.91e-001,6.99e-001,7.07e-001,7.15e-001,7.23e-001,7.30e-001,7.38e-001,7.46e-001,7.54e-001,7.62e-001,7.69e-001,7.77e-001,7.85e-001,7.93e-001,8.01e-001,8.16e-001,8.24e-001,8.32e-001,8.40e-001,8.48e-001,8.55e-001,8.63e-001,8.71e-001,8.79e-001,8.87e-001,8.94e-001,9.02e-001,9.10e-001,9.18e-001,9.26e-001,9.41e-001,9.49e-001,9.57e-001,9.65e-001,9.73e-001,9.80e-001,9.88e-001,9.96e-001,2.64e-001,3.89e-001,4.28e-001,2.56e-001,2.75e-001,2.95e-001,3.14e-001,3.34e-001,4.16e-001,4.36e-001,4.43e-001,4.55e-001,4.67e-001,4.75e-001,4.83e-001,4.86e-001,4.94e-001,4.49e-002,6.04e-002,6.83e-002,8.00e-002,9.17e-002,1.07e-001,1.15e-001,1.27e-001,1.31e-001,1.38e-001,1.42e-001,1.50e-001,1.54e-001,1.58e-001,1.62e-001,1.70e-001,1.74e-001,1.77e-001,1.81e-001,1.89e-001,1.93e-001,1.97e-001,2.01e-001,2.09e-001,2.13e-001,2.17e-001,2.21e-001,2.24e-001,2.29e-001,2.32e-001,2.36e-001,2.40e-001,2.44e-001,2.48e-001,2.14e-002,2.54e-002,1.94e-003,5.83e-003,9.71e-003,1.36e-002,1.75e-002,2.93e-002,3.32e-002,3.71e-002,4.10e-002,4.87e-002,5.26e-002,5.65e-002,6.43e-002,7.22e-002,7.61e-002,8.39e-002,8.78e-002,9.55e-002,9.94e-002,1.03e-001,1.11e-001,1.19e-001,1.23e-001,1.35e-001,1.46e-001,1.66e-001,1.85e-001,2.05e-001,2.52e-001,2.60e-001,2.68e-001,2.71e-001,2.79e-001,2.87e-001,2.99e-001,3.06e-001,3.18e-001,3.26e-001,3.38e-001,3.46e-001,3.53e-001,3.57e-001,3.65e-001,3.73e-001,3.77e-001,3.85e-001,3.93e-001,3.97e-001,4.04e-001,4.12e-001,4.24e-001,4.32e-001,4.51e-001,4.63e-001,4.71e-001,4.78e-001,4.90e-001,4.98e-001,5.02e-001,5.06e-001,5.10e-001,5.14e-001,5.17e-001,5.21e-001,5.25e-001,5.29e-001,5.33e-001,5.37e-001,5.41e-001,5.45e-001,5.49e-001,5.53e-001,5.57e-001,5.60e-001,5.64e-001,5.68e-001,5.72e-001,5.76e-001,5.80e-001,5.84e-001,5.88e-001,5.92e-001,5.96e-001,5.99e-001,6.03e-001,6.07e-001,6.11e-001,6.15e-001,6.19e-001,6.23e-001,6.27e-001,6.31e-001,6.35e-001,6.38e-001,6.42e-001,6.46e-001,6.50e-001,6.54e-001,6.58e-001,6.62e-001,6.66e-001,6.70e-001,6.74e-001,6.77e-001,6.81e-001,6.85e-001,6.89e-001,6.93e-001,6.97e-001,7.01e-001,7.05e-001,7.09e-001,7.13e-001,7.17e-001,7.21e-001,7.24e-001,7.28e-001,7.32e-001,7.36e-001,7.40e-001,7.44e-001,7.48e-001,7.52e-001,7.56e-001,7.60e-001,7.63e-001,7.67e-001,7.71e-001,7.75e-001,7.79e-001,7.83e-001,7.87e-001,7.91e-001,7.95e-001,7.99e-001,8.03e-001,8.06e-001,8.10e-001,8.14e-001,8.18e-001,8.22e-001,8.26e-001,8.30e-001,8.34e-001,8.38e-001,8.42e-001,8.46e-001,8.50e-001,8.53e-001,8.57e-001,8.61e-001,8.65e-001,8.69e-001,8.73e-001,8.77e-001,8.81e-001,8.85e-001,8.89e-001,8.92e-001,8.96e-001,9.00e-001,9.04e-001,9.08e-001,9.12e-001,9.16e-001,9.20e-001,9.24e-001,9.28e-001,9.31e-001,9.36e-001,9.39e-001,9.43e-001,9.47e-001,9.51e-001,9.55e-001,9.59e-001,9.63e-001,9.67e-001,9.71e-001,9.75e-001,9.78e-001,9.82e-001,9.86e-001,9.90e-001,9.94e-001,9.98e-001,2.83e-001,2.91e-001,3.03e-001,3.10e-001,3.22e-001,3.30e-001,3.42e-001,3.50e-001,3.61e-001,3.69e-001,3.81e-001,4.00e-001,4.08e-001,4.20e-001,4.39e-001,4.47e-001,4.59e-001,5.05e-001,5.15e-001,5.22e-001,5.24e-001,5.34e-001,5.44e-001,5.52e-001,5.61e-001,5.69e-001,5.71e-001,5.81e-001,5.91e-001,6.00e-001,6.08e-001,6.10e-001,6.20e-001,6.30e-001,6.37e-001,6.47e-001,6.55e-001,6.57e-001,6.67e-001,6.77e-001,6.82e-001,6.86e-001,6.94e-001,6.96e-001,7.06e-001,7.16e-001,7.25e-001,7.33e-001,7.35e-001,7.45e-001,7.55e-001,7.64e-001,7.72e-001,7.80e-001,7.84e-001,7.92e-001,8.02e-001,8.07e-001,8.11e-001,8.19e-001,8.23e-001,8.31e-001,8.41e-001,8.50e-001,8.58e-001,8.60e-001,8.70e-001,8.80e-001,8.90e-001,8.97e-001,9.05e-001,9.09e-001,9.17e-001,9.27e-001,9.32e-001,9.37e-001,9.44e-001,9.48e-001,9.56e-001,9.66e-001,9.76e-001,9.83e-001,9.85e-001,9.95e-001,3.42e-002,5.36e-002,6.54e-002,7.32e-002,8.10e-002,9.07e-002,9.84e-002,1.08e-001,1.16e-001,1.20e-001,4.85e-003,1.46e-002,2.23e-002,2.45e-002,4.39e-002,6.14e-002,1.28e-001,1.37e-001,1.47e-001,1.55e-001,1.57e-001,1.67e-001,1.77e-001,1.82e-001,1.86e-001,1.94e-001,1.96e-001,2.06e-001,2.16e-001,2.25e-001,2.28e-001,2.35e-001,2.45e-001,2.55e-001,2.61e-001,2.65e-001,2.74e-001,2.80e-001,2.84e-001,2.90e-001,2.94e-001,3.00e-001,3.03e-001,3.08e-001,3.10e-001,3.13e-001,3.19e-001,3.23e-001,3.27e-001,3.29e-001,3.33e-001,3.39e-001,3.43e-001,3.49e-001,3.52e-001,3.58e-001,3.62e-001,3.66e-001,3.68e-001,3.72e-001,3.78e-001,3.82e-001,3.88e-001,3.92e-001,3.97e-001,4.01e-001,4.07e-001,4.11e-001,4.17e-001,4.21e-001,4.27e-001,4.31e-001,4.37e-001,4.40e-001,4.42e-001,4.46e-001,4.50e-001,4.56e-001,4.60e-001,4.66e-001,4.76e-001,4.81e-001,4.85e-001,4.95e-001,1.43e-001,1.49e-001,1.53e-001,1.63e-001,1.69e-001,1.73e-001,1.75e-001,1.78e-001,1.80e-001,1.88e-001,1.92e-001,2.02e-001,2.08e-001,2.12e-001,2.14e-001,2.18e-001,2.20e-001,2.22e-001,2.23e-001,2.31e-001,2.33e-001,2.37e-001,2.39e-001,2.41e-001,2.43e-001,2.47e-001,2.49e-001,1.65e-002,3.81e-002,4.00e-002,4.19e-002,4.58e-002,5.94e-002,6.74e-002,6.93e-002,7.13e-002,7.51e-002,7.90e-002,8.49e-002,8.68e-002,8.87e-002,9.26e-002,9.6