39 const int expected = (int) fmax(1, ceil(log2(
xcsf->n_actions))) + 1;
40 if (new->net.n_outputs != expected) {
41 printf(
"rule_neural_init(): n_outputs(%d) != expected(%d)\n",
42 new->net.n_outputs, expected);
43 printf(
"neural rules output binary actions + 1 matching neuron\n");
80 const double *x,
const double *y)
132 printf(
"%s\n", json_str);
169 cJSON *json = cJSON_CreateObject();
170 cJSON_AddStringToObject(json,
"type",
"rule_neural");
172 cJSON *network = cJSON_Parse(network_str);
174 cJSON_AddItemToObject(json,
"network", network);
175 char *
string = cJSON_Print(json);
184 const cJSON *item = cJSON_GetObjectItem(json,
"network");
186 printf(
"Import error: missing network\n");
211 const struct Cl *src)
222 printf(
"%s\n", json_str);
228 const double *x,
const int action)
247 action += (int) pow(2, i - 1);
256 const double *x,
const double *y)
315 cJSON *json = cJSON_CreateObject();
316 cJSON_AddStringToObject(json,
"type",
"rule_neural");
317 char *
string = cJSON_Print(json);
bool neural_mutate(const struct Net *net)
Mutates a neural network.
double neural_size(const struct Net *net)
Returns the total number of non-zero weights in a neural network.
void neural_create(struct Net *net, struct ArgsLayer *arg)
Initialises and creates a new neural network from a parameter list.
double neural_output(const struct Net *net, const int IDX)
Returns the output of a specified neuron in the output layer of a neural network.
size_t neural_load(struct Net *net, FILE *fp)
Reads a neural network from a file.
void neural_json_import(struct Net *net, const struct ArgsLayer *arg, const cJSON *json)
Creates a neural network from a cJSON object.
void neural_free(struct Net *net)
Frees a neural network.
void neural_rand(const struct Net *net)
Randomises the layers within a neural network.
void neural_copy(struct Net *dest, const struct Net *src)
Copies a neural network.
void neural_propagate(struct Net *net, const double *input, const bool train)
Forward propagates a neural network.
char * neural_json_export(const struct Net *net, const bool return_weights)
Returns a json formatted string representation of a neural network.
size_t neural_save(const struct Net *net, FILE *fp)
Writes a neural network to a file.
Neural network activation functions.
An implementation of a fully-connected layer of perceptrons.
An implementation of a dropout layer.
An implementation of a long short-term memory layer.
An implementation of a recurrent layer of perceptrons.
bool rule_neural_cond_match(const struct XCSF *xcsf, const struct Cl *c, const double *x)
size_t rule_neural_cond_load(const struct XCSF *xcsf, struct Cl *c, FILE *fp)
bool rule_neural_act_crossover(const struct XCSF *xcsf, const struct Cl *c1, const struct Cl *c2)
size_t rule_neural_cond_save(const struct XCSF *xcsf, const struct Cl *c, FILE *fp)
char * rule_neural_act_json_export(const struct XCSF *xcsf, const struct Cl *c)
size_t rule_neural_act_save(const struct XCSF *xcsf, const struct Cl *c, FILE *fp)
void rule_neural_act_init(const struct XCSF *xcsf, struct Cl *c)
void rule_neural_act_update(const struct XCSF *xcsf, const struct Cl *c, const double *x, const double *y)
bool rule_neural_cond_crossover(const struct XCSF *xcsf, const struct Cl *c1, const struct Cl *c2)
void rule_neural_cond_print(const struct XCSF *xcsf, const struct Cl *c)
bool rule_neural_cond_mutate(const struct XCSF *xcsf, const struct Cl *c)
void rule_neural_cond_json_import(const struct XCSF *xcsf, struct Cl *c, const cJSON *json)
void rule_neural_act_json_import(const struct XCSF *xcsf, struct Cl *c, const cJSON *json)
void rule_neural_cond_free(const struct XCSF *xcsf, const struct Cl *c)
void rule_neural_act_free(const struct XCSF *xcsf, const struct Cl *c)
size_t rule_neural_act_load(const struct XCSF *xcsf, struct Cl *c, FILE *fp)
bool rule_neural_act_mutate(const struct XCSF *xcsf, const struct Cl *c)
void rule_neural_cond_update(const struct XCSF *xcsf, const struct Cl *c, const double *x, const double *y)
void rule_neural_act_copy(const struct XCSF *xcsf, struct Cl *dest, const struct Cl *src)
bool rule_neural_act_general(const struct XCSF *xcsf, const struct Cl *c1, const struct Cl *c2)
char * rule_neural_cond_json_export(const struct XCSF *xcsf, const struct Cl *c)
bool rule_neural_cond_general(const struct XCSF *xcsf, const struct Cl *c1, const struct Cl *c2)
void rule_neural_cond_init(const struct XCSF *xcsf, struct Cl *c)
int rule_neural_act_compute(const struct XCSF *xcsf, const struct Cl *c, const double *x)
void rule_neural_cond_copy(const struct XCSF *xcsf, struct Cl *dest, const struct Cl *src)
double rule_neural_cond_size(const struct XCSF *xcsf, const struct Cl *c)
void rule_neural_cond_cover(const struct XCSF *xcsf, const struct Cl *c, const double *x)
void rule_neural_act_cover(const struct XCSF *xcsf, const struct Cl *c, const double *x, const int action)
void rule_neural_act_print(const struct XCSF *xcsf, const struct Cl *c)
Neural network rule (condition + action) functions.
Classifier data structure.
void * cond
Condition structure.
int n_outputs
Number of network outputs.
Neural network rule data structure.
struct Net net
Neural network.
Utility functions for random number handling, etc.
static int clamp_int(const int a, const int min, const int max)
Returns an integer clamped within the specified range.