9#ifndef RESPONSEOPTIMIZATION_H
10#define RESPONSEOPTIMIZATION_H
24#include "neural_network.h"
29struct ResponseOptimizationResults;
52 enum class Condition{Between, EqualTo, LessEqualTo, GreaterEqualTo, Minimum, Maximum};
56 Tensor<Condition, 1> get_inputs_conditions();
57 Tensor<Condition, 1> get_outputs_conditions();
59 Tensor<type, 1> get_inputs_minimums();
60 Tensor<type, 1> get_inputs_maximums();
61 Tensor<type, 1> get_outputs_minimums();
62 Tensor<type, 1> get_outputs_maximums();
66 void set_evaluations_number(
const Index&);
68 void set_input_condition(
const string&,
const Condition&,
const Tensor<type, 1>& = Tensor<type, 1>());
69 void set_output_condition(
const string&,
const Condition&,
const Tensor<type, 1>& = Tensor<type, 1>());
71 void set_input_condition(
const Index&,
const Condition&,
const Tensor<type, 1>& = Tensor<type, 1>());
72 void set_output_condition(
const Index&,
const Condition&,
const Tensor<type, 1>& = Tensor<type, 1>());
76 Tensor<Condition, 1> get_conditions(
const Tensor<string, 1>&)
const;
77 Tensor<Tensor<type, 1>, 1> get_values_conditions(
const Tensor<Condition, 1>&,
const Tensor<type, 1>&)
const;
79 Tensor<type, 2> calculate_inputs()
const;
81 Tensor<type, 2> calculate_envelope(
const Tensor<type, 2>&,
const Tensor<type, 2>&)
const;
89 Tensor<Condition, 1> inputs_conditions;
90 Tensor<Condition, 1> outputs_conditions;
92 Tensor<type, 1> inputs_minimums;
93 Tensor<type, 1> inputs_maximums;
95 Tensor<type, 1> outputs_minimums;
96 Tensor<type, 1> outputs_maximums;
98 Index evaluations_number = 1000;
100 type calculate_random_uniform(
const type&,
const type&)
const;
115 neural_network_pointer = new_neural_network_pointer;
120 NeuralNetwork* neural_network_pointer =
nullptr;
122 Tensor<type, 1> optimal_variables;
124 type optimum_objective = type(0);
128 const Index inputs_number = neural_network_pointer->get_inputs_number();
129 const Index outputs_number = neural_network_pointer->get_outputs_number();
131 const Tensor<string, 1> inputs_names = neural_network_pointer->get_inputs_names();
132 const Tensor<string, 1> outputs_names = neural_network_pointer->get_outputs_names();
134 for(Index i = 0; i < inputs_number; i++)
136 cout << inputs_names[i] <<
": " << optimal_variables[i] << endl;
139 for(Index i = 0; i < outputs_number; i++)
141 cout << outputs_names[i] <<
" " << optimal_variables[inputs_number+i] << endl;
144 cout <<
"Objective: " << optimum_objective << endl;
This class is used to optimize model response identify the combinations of variable settings jointly ...
ResponseOptimizationResults * perform_optimization() const
void set_inputs_outputs_conditions(const Tensor< string, 1 > &, const Tensor< string, 1 > &, const Tensor< type, 1 > &=Tensor< type, 1 >())
Condition
Enumeration of available conditions for response optimization.
virtual ~ResponseOptimization()
Destructor.
ResponseOptimizationResults(NeuralNetwork *new_neural_network_pointer)
Default constructor.