From 54384f7ddcbd63e09271ddbd25fe8d0334e4dfac Mon Sep 17 00:00:00 2001
From: Thomas <purcell@fhi-berlin.mpg.de>
Date: Wed, 2 Jun 2021 14:44:19 +0200
Subject: [PATCH] Fix paramter initialization

For sign_alpha=-1 old initialization fails
---
 .../allowed_operator_nodes/log/parameterized_log.cpp          | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/parameterized_log.cpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/parameterized_log.cpp
index a0febd37..b3deff63 100644
--- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/parameterized_log.cpp
+++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/parameterized_log.cpp
@@ -267,13 +267,13 @@ void LogParamNode::initialize_params(double* params, const int depth) const
     if(depth >= nlopt_wrapper::MAX_PARAM_DEPTH)
     {
         val_ptr = _feats[0]->value_ptr();
-        params[1] = std::max(0.0, -1.0 * (*std::min_element(val_ptr, val_ptr + _n_samp)) + 1e-10);
+        params[1] = std::max(0.0, -1.0 * _sign_alpha * (*std::min_element(val_ptr, val_ptr + _n_samp, [this](double x1, double x2){return x1 * _sign_alpha < x2 * _sign_alpha;})) + 1e-10);
         return;
     }
     _feats[0]->initialize_params(params + 2, depth + 1);
 
     val_ptr = _feats[0]->value_ptr(params + 2);
-    params[1] = std::max(0.0, -1.0 * (*std::min_element(val_ptr, val_ptr + _n_samp)) + 1e-10);
+    params[1] = std::max(0.0, -1.0 * _sign_alpha * (*std::min_element(val_ptr, val_ptr + _n_samp, [this](double x1, double x2){return x1 * _sign_alpha < x2 * _sign_alpha;})) + 1e-10);
 }
 
 void LogParamNode::update_postfix(std::string& cur_expr, const bool add_params) const
-- 
GitLab