deepQlearning: add libdeepqlearn.so, debug some issue with -Werror -fpic

This commit is contained in:
2025-10-21 08:34:25 +02:00
parent bc7d98094f
commit 244ac9cd1d
6 changed files with 19 additions and 19 deletions
@@ -45,7 +45,7 @@ struct networks_qlearning * create_nework_qlearning(
struct networks_qlearning *qnets = malloc(sizeof(struct networks_qlearning)); struct networks_qlearning *qnets = malloc(sizeof(struct networks_qlearning));
qnets->config = config; qnets->config = config;
setup_networks_alloutputs_config_TYPE_FLOAT(&(qnets->main_net), config, random, minR, maxR, randomRange); setup_networks_alloutputs_config_TYPE_FLOAT(&(qnets->main_net), config, randomize, minR, maxR, randomRange);
setup_networks_alloutputs_config_TYPE_FLOAT(&(qnets->target_net), config, false, minR, maxR, randomRange); setup_networks_alloutputs_config_TYPE_FLOAT(&(qnets->target_net), config, false, minR, maxR, randomRange);
copy_weight_in_networks_from_main_to_target(qnets); copy_weight_in_networks_from_main_to_target(qnets);
@@ -283,7 +283,7 @@ int select_action(struct RL_agent * rlAgent){
//init =false; //init =false;
//} //}
//int random = xrand() % randRange; //int random = xrand() % randRange;
float proba_explor = (float) (xrand() % (1<<17 -1))/ (1<<17 -1); //frand(); //(float)(random ) / randRange; float proba_explor = (float) (xrand() % ((1<<17) -1))/ ((1<<17) -1); //frand(); //(float)(random ) / randRange;
if(proba_explor > rlAgent->qlearnParams->exploration_factor ){ if(proba_explor > rlAgent->qlearnParams->exploration_factor ){
action = ARG_MAX_ARRAY_TYPE_FLOAT( action_value->x, action_value->dim->rank ); action = ARG_MAX_ARRAY_TYPE_FLOAT( action_value->x, action_value->dim->rank );
//if(action == ARG_MIN_ARRAY_TYPE_FLOAT( action_value->x, action_value->dim->rank )) //if(action == ARG_MIN_ARRAY_TYPE_FLOAT( action_value->x, action_value->dim->rank ))
@@ -385,7 +385,7 @@ void learn_to_drive(struct RL_agent * rlAgent){
struct game_status * car_status = car->status; struct game_status * car_status = car->status;
struct qlearning_params * qlParams = rlAgent->qlearnParams; struct qlearning_params * qlParams = rlAgent->qlearnParams;
struct status_qlearning * qlStatus = rlAgent->status; struct status_qlearning * qlStatus = rlAgent->status;
struct print_params * pprint = rlAgent->pprint; //struct print_params * pprint = rlAgent->pprint;
char msg[100]; char msg[100];
pthread_t threadPrint; pthread_t threadPrint;
+7 -7
View File
@@ -20,6 +20,7 @@ struct game_status * create_game_status(){
status->reward = 0; status->reward = 0;
status->cumulative_reward = 0; status->cumulative_reward = 0;
status->done = false; status->done = false;
return status;
} }
coordinate * create_coordinate(size_t dim_size){ coordinate * create_coordinate(size_t dim_size){
@@ -423,13 +424,12 @@ float distance2_coordinate(coordinate *c0, coordinate *c1){
v->sensor->x[position] = (float)(MIN((SUBDIVISION-1),dist))/SUBDIVISION ;\ v->sensor->x[position] = (float)(MIN((SUBDIVISION-1),dist))/SUBDIVISION ;\
#if 0
//v->sensor->x[position] = (float)(MIN((SUBDIVISION-1),(int)dist))/SUBDIVISION ;\ //v->sensor->x[position] = (float)(MIN((SUBDIVISION-1),(int)dist))/SUBDIVISION ;
//v->sensor->x[position] = (MIN(49,(distance2_coordinate(diStep_sensor, v->coord)/5))) ;
//v->sensor->x[position] = (MIN(49,(distance2_coordinate(diStep_sensor, v->coord)))) / 50;
//v->sensor->x[position] = (MIN(49,(distance2_coordinate(diStep_sensor, v->coord)/5))) ;\ //v->sensor->x[position] = (MIN(49,(int)(distance2_coordinate(diStep_sensor, v->coord)/10))) / 50;
//v->sensor->x[position] = (MIN(49,(distance2_coordinate(diStep_sensor, v->coord)))) / 50;\ #endif
//v->sensor->x[position] = (MIN(49,(int)(distance2_coordinate(diStep_sensor, v->coord)/10))) / 50;\
void read_sensor(struct vehicle *v){ void read_sensor(struct vehicle *v){
copy_tensor_TYPE_FLOAT(v->old_sensor, v->sensor); copy_tensor_TYPE_FLOAT(v->old_sensor, v->sensor);
+4 -4
View File
@@ -378,22 +378,22 @@ void signedvCoordFromLin(long int *ret, long int line, dimension *dim ){
long int* signedCoordFromLin(long int line, dimension *dim){ long int* signedCoordFromLin(long int line, dimension *dim){
long int *ret; long int *ret;
ret=malloc(dim->size*sizeof(long int)); ret=malloc(dim->size*sizeof(long int));
vCoordFromLin(ret,line,dim); signedvCoordFromLin(ret,line,dim);
return ret; return ret;
} }
/* */ /* */
/* unsigned */ /* unsigned */
size_t LineFromCoord(size_t *coo, dimension *dim) { size_t LineFromCoord(size_t *coo, dimension *dim) {
return signedLineFromCoord(coo,dim); return (long)signedLineFromCoord((long*)coo,dim);
} }
void vCoordFromLin(size_t *ret, size_t line, dimension *dim ){ void vCoordFromLin(size_t *ret, size_t line, dimension *dim ){
signedvCoordFromLin(ret, line, dim); signedvCoordFromLin((long*)ret, (long)line, dim);
} }
size_t* CoordFromLin(size_t line, dimension *dim){ size_t* CoordFromLin(size_t line, dimension *dim){
return signedCoordFromLin(line, dim); return (size_t*)signedCoordFromLin((long)line, dim);
} }
+3 -3
View File
@@ -51,9 +51,9 @@ size_t LineFromCoord(size_t *coo, dimension *dim);
size_t* CoordFromLin(size_t line, dimension *dim); size_t* CoordFromLin(size_t line, dimension *dim);
void vCoordFromLin(size_t *ret, size_t line, dimension *dim ); void vCoordFromLin(size_t *ret, size_t line, dimension *dim );
long int signedLineFromCoord(long int *coo, dimension *dim); long int signedLineFromCoord(long *coo, dimension *dim);
long int* signedCoordFromLin(long int line, dimension *dim); long int* signedCoordFromLin(long line, dimension *dim);
void signedvCoordFromLin(long int *ret, long int line, dimension *dim ); void signedvCoordFromLin(long *ret, long int line, dimension *dim );
void increment_dim_var(dimension *d); void increment_dim_var(dimension *d);
+1 -1
View File
@@ -768,11 +768,11 @@ neurons_##type * calculate_output_by_network_neurons_##type(neurons_##type *base
if(tmp->next_layer==NULL){\ if(tmp->next_layer==NULL){\
/*print_tensor_msg_##type(tmp->output,"retult");*/\ /*print_tensor_msg_##type(tmp->output,"retult");*/\
*output_link = tmp->output;\ *output_link = tmp->output;\
\
return tmp;\ return tmp;\
}\ }\
tmp = tmp->next_layer;\ tmp = tmp->next_layer;\
}\ }\
return NULL;\
\ \
}\ }\
void print_predict_by_network_neurons_##type(neurons_##type *base, tensor_##type *input){\ void print_predict_by_network_neurons_##type(neurons_##type *base, tensor_##type *input){\
+1 -1
View File
@@ -7,7 +7,7 @@
#include "neuron_t/neuron_t.h" #include "neuron_t/neuron_t.h"
#include "tensor_t/tensor_t.h" #include "tensor_t/tensor_t.h"
//#define GEN_TYPE_FILE_NN(type)\ //#define GEN_TYPE_FILE_NN(type)
//void export_to_file_weight_in_nneurons_##type(char *fileName, neurons_##type *src); //void export_to_file_weight_in_nneurons_##type(char *fileName, neurons_##type *src);
#define EXPORT_TO_FILE_TENSOR_ATTRIBUTE_IN_NNEURONS(type,nneurons ,attribute, file_name) \ #define EXPORT_TO_FILE_TENSOR_ATTRIBUTE_IN_NNEURONS(type,nneurons ,attribute, file_name) \