From e36e34b7bc88f080c99c090882911617dfc560dc Mon Sep 17 00:00:00 2001 From: Thomas <purcell@fhi-berlin.mpg.de> Date: Wed, 2 Jun 2021 18:22:24 +0200 Subject: [PATCH] Fix Log expr actually uses correct fmt format --- .../allowed_operator_nodes/log/log.hpp | 9 ++++++--- .../log/parameterized_log.cpp | 15 ++++++++++++--- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/log.hpp b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/log.hpp index bbaae798..13c040d5 100644 --- a/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/log.hpp +++ b/src/feature_creation/node/operator_nodes/allowed_operator_nodes/log/log.hpp @@ -220,7 +220,8 @@ public: inline std::string expr(const double* params, const int depth=1) const { return fmt::format( - "(ln({}{:+11.6e}))", + "(ln({:.1f}*{}{:+11.6e}))", + params[0], (depth < nlopt_wrapper::MAX_PARAM_DEPTH ? _feats[0]->expr(params + 2, depth + 1) : _feats[0]->expr()), params[1] ); @@ -236,7 +237,8 @@ public: inline std::string get_latex_expr(const double* params, const int depth=1) const { return fmt::format( - "\\left(\\ln{{ \\left({}{:+8.3e} \\right)}}\\right)", + "\\lef:3.\\ln{{ \\left({:.1f}{}{:+8.3e} \\right)}}\\right)", + params[0], (depth < nlopt_wrapper::MAX_PARAM_DEPTH ? _feats[0]->get_latex_expr(params + 2, depth + 1) : _feats[0]->get_latex_expr()), params[1] ); @@ -252,7 +254,8 @@ public: inline std::string matlab_fxn_expr(const double* params, const int depth=1) const { return fmt::format( - "log({}{:+11.6e})", + "log({:.1f}*{}{:+11.6e})", + params[0], (depth < nlopt_wrapper::MAX_PARAM_DEPTH ? _feats[0]->matlab_fxn_expr(params + 2, depth + 1) : _feats[0]->matlab_fxn_expr()), params[1] ); 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 b3deff63..11deaf18 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 @@ -247,7 +247,6 @@ void LogNode::initialize_params(double* params, const int depth) const void LogParamNode::set_bounds(double* lb, double* ub, const int depth) const { - // The parameters of logarithm are dependent on the external shift/scale parameters, but physically relevant lb[0] = _sign_alpha; ub[0] = _sign_alpha; @@ -267,13 +266,23 @@ 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 * _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); + params[1] = std::max( + 0.0, + 1e-10 - 1.0 * _sign_alpha * ( + *std::min_element(val_ptr, val_ptr + _n_samp, [params](double v1, double v2){return params[0] * v1 < params[0] * v2;}) + ) + ); 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 * _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); + params[1] = std::max( + 0.0, + 1e-10 - 1.0 * _sign_alpha * ( + *std::min_element(val_ptr, val_ptr + _n_samp, [params](double v1, double v2){return params[0] * v1 < params[0] * v2;}) + ) + ); } void LogParamNode::update_postfix(std::string& cur_expr, const bool add_params) const -- GitLab