diff --git a/src/libaevol/io/IOJson.cpp b/src/libaevol/io/IOJson.cpp
index e377919d24320dd8f8a0ad4f3afaf8e1d1022480..cc4f894e7bc9b560c285e88d5465ba3cab699fff 100644
--- a/src/libaevol/io/IOJson.cpp
+++ b/src/libaevol/io/IOJson.cpp
@@ -285,7 +285,7 @@ IOJson::IOJson(const std::string & filename) {
   }
   setEnvAddGaussian(env_gaussian_tmp);
   //setMaxTriangleWidth(input_file_["param_in"]["max_triangle_width"]);
-  setMaxTriangleWidth(0.1);
+  setMaxTriangleWidth(input_file_["param_in"]["constraints"]["max_triangle_width"]);
 
   setBackupStep(input_file_["param_in"]["output"]["backup_step"]);
   setRecordTree(input_file_["param_in"]["output"].value("record_tree", false));
@@ -299,8 +299,7 @@ IOJson::IOJson(const std::string & filename) {
     bool allow_plasmids = indiv.value("allow_plasmids",allow_plasmids_);
     uint32_t id = indiv.value("id", 0);
     int minimum_size = indiv.value("min_genome_length", min_genome_length_);
-    //double max_triangle_width = indiv.value("max_triangle_width", max_triangle_width_);
-    double max_triangle_width = 0.1;
+    //double max_triangle_width = input_file_["param_in"]["constraints"]["max_triangle_width"];
     int age  = indiv.value("generation", 0);
     //int age  = indiv.value("generation", 0);
     std::string strain_name = indiv.value("strain_name", strain_name_);
@@ -318,7 +317,7 @@ IOJson::IOJson(const std::string & filename) {
     mut_param->set_inversion_rate(indiv.value("inversion_rate",inversion_rate_));
     mut_param->set_point_mutation_rate(indiv.value("point_mutation_rate",point_mutation_rate_));
     mut_param->set_max_indel_size(indiv.value("max_indel_size",max_indel_size_));
-    Individual *individual = new Individual(new ExpManager(), mut_prng_ptr, stoch_prng_ptr, mut_params_ptr, max_triangle_width,
+    Individual *individual = new Individual(new ExpManager(), mut_prng_ptr, stoch_prng_ptr, mut_params_ptr, max_triangle_width_,
                           minimum_size, max_size, allow_plasmids, id, strain_name.c_str(), age);
     auto *expSetup = new ExpSetup(nullptr);
     FuzzyFactory::fuzzyFactory = new FuzzyFactory(expSetup);
@@ -595,9 +594,10 @@ IOJson::IOJson(ExpManager * exp_m) {
 
   setFuzzyFlavor(exp_s->get_fuzzy_flavor());
 
-  //------------------------------------------------------------------ Parameter for SIMD
+  //------------------------------------------------------------------ Constraints
   setMinGenomeLength(exp_s->min_genome_length());
   setMaxGenomeLength(exp_s->max_genome_length());
+  setMaxTriangleWidth(world->indiv_by_id(0)->w_max());
 
   //------------------------------------------------------------------ Alignements
   setDeletionProportion(param_mut->deletion_proportion());
@@ -650,7 +650,7 @@ IOJson::IOJson(ExpManager * exp_m) {
   setAllowPlasmids(exp_m->best_indiv()->allow_plasmids());
 
   setSeed(world->prng()->initial_seed());
-
+  
   json_file_["indivs"];
 
 }
@@ -1267,8 +1267,8 @@ void IOJson::setEnvAddGaussian(const list<Gaussian> &envAddGaussian) {
 
 double IOJson::getMaxTriangleWidth() const { return max_triangle_width_; }
 void IOJson::setMaxTriangleWidth(double maxTriangleWidth) {
-  max_triangle_width_                          = maxTriangleWidth;
-  json_file_["param_in"]["max_triangle_width"] = maxTriangleWidth;
+  max_triangle_width_                                         = maxTriangleWidth;
+  json_file_["param_in"]["constraints"]["max_triangle_width"] = maxTriangleWidth;
 }
 
 int IOJson::getBackupStep() const { return backup_step_; }