title: Python flaml autoML doesn't pick up the monotone and interaction constraints
body: <p>In Python, I have trained a flaml autoML (at the moment I am only interested in training an XGBoost for a classification problem for which the binary target is called <code>y_train</code> and the set of predictive features is called <code>X_train</code>) by using this code:</p>
  <pre><code>from flaml import AutoML
  
  automl = AutoML()
  
  automl.fit(
      X_train,
      y_train,
      estimator_list=[&quot;xgboost&quot;],
      task=&quot;classification&quot;,
      metric=&quot;roc_auc&quot;,
      eval_method=&quot;cv&quot;,
      n_splits=3,
      time_budget=30,
      sample=True,
      append_log=True,
      log_type=&quot;all&quot;,
      model_history=True,
      log_training_metric=True,
      verbose=3,
      seed=1234,
      early_stop=True
  )
  </code></pre>
  <p>Then, I have checked some model details and calculated the Gini with this code:</p>
  <pre><code>from sklearn.metrics import confusion_matrix, precision_recall_curve, roc_curve, auc, log_loss
  
  print(&quot;Best estimator: &quot;,automl.best_estimator)
  print(&quot;Best HP: &quot;,automl.best_model_for_estimator)
  
  predProba = automl.predict_proba(X_train)
  
  probability = []
  
  for i in range(len(predProba)):
                  probability.append(0)
                  probability[i] = predProba[i][1]
  
  
  [fpr, tpr, thr] = roc_curve(y_train, probability)
  Gini = round((auc(fpr, tpr)-0.5)*200,1)
  print(&quot;autoML Gini: &quot;,str(Gini))
  </code></pre>
  <p>The Gini is 39.7.</p>
  <p>So far, so good.</p>
  <p>Then, I wanted to insert some constraints into the algorithm. The constraints are:</p>
  <ul>
  <li><p>monotone constraints:</p>
  <p>monotone_constraints='(1, -1, 1, 1, -1, 1, 1, -1, -1, 1, -1)'</p>
  </li>
  <li><p>interaction constraints:</p>
  <p>interaction_constraints=[]</p>
  </li>
  </ul>
  <p>So, here is the code I have used to insert the constraints in the autoML:</p>
  <pre><code>custom_hp = {
      &quot;monotone_constraints&quot; : '(1, -1, 1, 1, -1, 1, 1, -1, -1, 1, -1)',
      &quot;interaction_constraints&quot; : []
  }
     
  automl = AutoML(**custom_hp)
  
  automl.fit(
      X_train,
      y_train,
      estimator_list=[&quot;xgboost&quot;],#&quot;lgbm&quot;,
      task=&quot;classification&quot;,
      metric=&quot;roc_auc&quot;,
      eval_method=&quot;cv&quot;,
      n_splits=3,
      time_budget=30,
      sample=True,
      append_log=True,
      log_type=&quot;all&quot;,
      model_history=True,
      log_training_metric=True,
      verbose=3,
      seed=1234,
      early_stop=True
  )
  </code></pre>
  <p>I have then checked that that constraints were actually picked up by the autoML:</p>
  <pre><code>print(&quot;Best HP: &quot;,automl.best_model_for_estimator)
  </code></pre>
  <p>And it looks like it has:</p>
  <pre><code>Best HP:  &lt;bound method AutoML.best_model_for_estimator of AutoML(append_log=False, 
  auto_augment=True, custom_hp={}, early_stop=False,
         ensemble=False, estimator_list='auto', eval_method='auto',
         fit_kwargs_by_estimator={}, hpo_method='auto',
         **interaction_constraints=[]**, keep_search_state=False,
         learner_selector='sample', log_file_name='', log_training_metric=False,
         log_type='better', max_iter=None, mem_thres=4294967296, metric='auto',
         metric_constraints=[], min_sample_size=10000, model_history=False,
         **monotone_constraints='(1, -1, 1, 1, -1, 1, 1, -1, -1, 1, -1)'**,
         n_concurrent_trials=1, n_jobs=-1, n_splits=5, pred_time_limit=inf,
         retrain_full=True, sample=True, split_ratio=0.1, split_type='auto', ...)&gt;
  </code></pre>
  <p>However, when I calculate the Gini, it is the same as per the model without constraints:</p>
  <pre><code>predProba = automl.predict_proba(X_train)
  
  probability = []
  
  for i in range(len(predProba)):
                  probability.append(0)
                  probability[i] = predProba[i][1]
  
  
  [fpr, tpr, thr] = roc_curve(y_train, probability)
  Gini = round((auc(fpr, tpr)-0.5)*200,1)
  print(&quot;autoML Gini: &quot;,str(Gini))
  </code></pre>
  <p>The Gini is: 39.7</p>
  <p><strong>Question.</strong> Has anyone experienced this before? How is it possible that whilst the autoML details show that the constraints have been picked up by the autoML and the Gini doesn't change?</p>
  <p>I have trained the XGBoost outside of the autoML process to verify that the Gini would change based on whether the constraints were applied or not. And the Gini actually changes, so I'd expect the same results from the autoML.</p>
  <p>Can anyone help me please?</p>