Newer
Older

Michal Kravcenko
committed
/**
* DESCRIPTION OF THE FILE
*
* @author Michal Kravčenko
* @date 14.6.18 -
*/

Michal Kravcenko
committed
#include "ConnectionWeight.h"
ConnectionWeight::ConnectionWeight() {
}
ConnectionWeight::ConnectionWeight(int param_count, std::vector<double>* w_array) {
this->param_indices = new int[param_count];

Michal Kravcenko
committed
this->n_params = param_count;
this->weight_array = w_array;

Michal Kravcenko
committed
}
ConnectionWeight::~ConnectionWeight() {
if(this->param_indices){
delete [] this->param_indices;
this->param_indices = nullptr;

Michal Kravcenko
committed
}
}
void ConnectionWeight::adjust_weights(double *values) {
for(int i = 0; i < this->n_params; ++i){
this->weight_array->at(this->param_indices[i]) += values[i];

Michal Kravcenko
committed
}
}
std::vector<double> ConnectionWeight::get_weights(){
return *this->weight_array;
}

Michal Kravcenko
committed
void ConnectionWeight::set_weights(double *values) {
for(int i = 0; i < this->n_params; ++i){
this->weight_array->at(this->param_indices[i]) = values[i];

Michal Kravcenko
committed
}
}
void ConnectionWeight::SetParamIndices(int *param_indices) {

Michal Kravcenko
committed
for(int i = 0; i < this->n_params; ++i){
this->SetParamIndex(param_indices[i], i);

Michal Kravcenko
committed
}
}
void ConnectionWeight::SetParamIndex(int value, int idx) {
this->param_indices[idx] = value;

Michal Kravcenko
committed
}
double ConnectionWeight::eval() {
double product = 1;
for(auto e : *this->weight_array) {
product *= e;
}
return product;