Compare commits

..

1 Commits

Author SHA1 Message Date
fanasina 163c4c0057 update: [tensor] add transpose optimized function and tests 2026-06-28 20:42:10 +02:00
4 changed files with 23 additions and 313 deletions
@@ -74,14 +74,13 @@ struct networks_qlearning * create_network_qlearning(
setup_networks_alloutputs_config_TYPE_FLOAT(&(qnets->best_net), config, false, minR, maxR, randomRange);
copy_weight_in_networks_from_main_to_best(qnets);
setup_all_layers_functions_TYPE_FLOAT(qnets->main_net, tensorContractnProdThreadOpt0_TYPE_FLOAT, tensorProdThread_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
//setup_all_layers_functions_TYPE_FLOAT(qnets->main_net, tensorContractnProdThread_TYPE_FLOAT, tensorProdThread_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
setup_all_layers_functions_TYPE_FLOAT(qnets->main_net, tensorContractnProdThread_TYPE_FLOAT, tensorProdThread_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
//setup_all_layers_functions_TYPE_FLOAT(qnets->main_net, tensorContractnProdTHR_TYPE_FLOAT, tensorProdTHR_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
setup_all_layers_params_TYPE_FLOAT(qnets->main_net, nb_prod_thread, nb_calc_thread, learning_rate);
setup_all_layers_functions_TYPE_FLOAT(qnets->target_net, tensorContractnProdThreadOpt0_TYPE_FLOAT, tensorProdThread_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
setup_all_layers_functions_TYPE_FLOAT(qnets->target_net, tensorContractnProdThread_TYPE_FLOAT, tensorProdThread_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
//setup_all_layers_functions_TYPE_FLOAT(qnets->target_net, tensorContractnProdTHR_TYPE_FLOAT, tensorProdTHR_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
setup_all_layers_params_TYPE_FLOAT(qnets->target_net, nb_prod_thread, nb_calc_thread, learning_rate);
setup_all_layers_functions_TYPE_FLOAT(qnets->best_net, tensorContractnProdThreadOpt0_TYPE_FLOAT, tensorProdThread_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
setup_all_layers_functions_TYPE_FLOAT(qnets->best_net, tensorContractnProdThread_TYPE_FLOAT, tensorProdThread_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
//setup_all_layers_functions_TYPE_FLOAT(qnets->best_net, tensorContractnProdTHR_TYPE_FLOAT, tensorProdTHR_TYPE_FLOAT, D_L2, L2, reLU, d_reLU);
setup_all_layers_params_TYPE_FLOAT(qnets->best_net, nb_prod_thread, nb_calc_thread, learning_rate);
@@ -277,7 +276,6 @@ void free_RL_agent(struct RL_agent *rlAgent){
}
#define ACCEPTABLE_REWARD 1000
#define VERY_GOOD_REWARD 10000
#define UPDATE_PARAMS 1
#define UPDATE_EXPLOR_FAC 1
@@ -324,8 +322,7 @@ void train_qlearning(struct RL_agent * rlAgent,
#if UPDATE_PARAMS
if((car_status->cumulative_reward > ACCEPTABLE_REWARD) || (rlAgent->status->nb_episodes % 100 == 0) ){
float new_value = ( (net_main->learning_rate < qlParams->minimum_threshold_learning_rate /*0.0001*/) ? net_main->learning_rate :(net_main->learning_rate ) * qlParams->factor_update_learning_rate /*0.995*/ );
if(car_status->cumulative_reward > VERY_GOOD_REWARD) new_value = (net_main->learning_rate ) * qlParams->factor_update_learning_rate ;
UPDATE_ATTRIBUTE_NEURONE_IN_ALL_LAYERS(TYPE_FLOAT, net_main, learning_rate, new_value);
UPDATE_ATTRIBUTE_NEURONE_IN_ALL_LAYERS(TYPE_FLOAT, net_main, learning_rate, new_value);
qlParams->learning_rate = new_value;
#if UPDATE_EXPLOR_FAC
qlParams->exploration_factor = (qlParams->exploration_factor < qlParams->minimum_threshold_exploration_factor) ? qlParams->exploration_factor : qlParams->exploration_factor * qlParams->factor_update_exploration_factor ;
+17 -304
View File
@@ -773,14 +773,14 @@ struct status_qlearning *qlstatus = create_status_qlearning ();
}
TEST(extract_with_pconf){
HIDE_TEST(extract_with_pconf){
size_t nb_block = 7;
size_t dim= 2;
struct blocks * path = create_blocks(nb_block, dim);
LOG("debug: f_name = %s\n", __func__);
#if 0
#if 1
copy_coordinate(path->lower_bound_block[0], (float[]){0,0});
copy_coordinate(path->upper_bound_block[0], (float[]){100,250});
@@ -798,9 +798,8 @@ TEST(extract_with_pconf){
copy_coordinate(path->upper_bound_block[6], (float[]){410,300});
#else
#if 0
/*
copy_coordinate(path->lower_bound_block[4], (float[]){0,0});
copy_coordinate(path->upper_bound_block[4], (float[]){150,250});
@@ -817,10 +816,10 @@ TEST(extract_with_pconf){
copy_coordinate(path->lower_bound_block[5], (float[]){0,250});
copy_coordinate(path->upper_bound_block[5], (float[]){410,300});
#else
#if 0
copy_coordinate(path->lower_bound_block[0], (float[]){0,0});
copy_coordinate(path->lower_bound_block[0], (float[]){0,0});
copy_coordinate(path->upper_bound_block[0], (float[]){150,250});
copy_coordinate(path->lower_bound_block[1], (float[]){150,0});
copy_coordinate(path->upper_bound_block[1], (float[]){250,150});
@@ -835,28 +834,7 @@ TEST(extract_with_pconf){
copy_coordinate(path->lower_bound_block[6], (float[]){0,250});
copy_coordinate(path->upper_bound_block[6], (float[]){410,300});
#else
#if 1
copy_coordinate(path->lower_bound_block[0], (float[]){0,0});
copy_coordinate(path->upper_bound_block[0], (float[]){60,250});
copy_coordinate(path->lower_bound_block[1], (float[]){60,0});
copy_coordinate(path->upper_bound_block[1], (float[]){250,50});
copy_coordinate(path->lower_bound_block[2], (float[]){250,20});
copy_coordinate(path->upper_bound_block[2], (float[]){310,80});
copy_coordinate(path->lower_bound_block[3], (float[]){310,40});
copy_coordinate(path->upper_bound_block[3], (float[]){450,90});
copy_coordinate(path->lower_bound_block[4], (float[]){450,60});
copy_coordinate(path->upper_bound_block[4], (float[]){560,220});
copy_coordinate(path->lower_bound_block[5], (float[]){430,220});
copy_coordinate(path->upper_bound_block[5], (float[]){560,280});
copy_coordinate(path->lower_bound_block[6], (float[]){0,250});
copy_coordinate(path->upper_bound_block[6], (float[]){430,300});
#else
#if 0
copy_coordinate(path->lower_bound_block[0], (float[]){0,300});
copy_coordinate(path->upper_bound_block[0], (float[]){400,700});
@@ -872,6 +850,7 @@ TEST(extract_with_pconf){
copy_coordinate(path->upper_bound_block[5], (float[]){1100,975});
copy_coordinate(path->lower_bound_block[6], (float[]){100,700});
copy_coordinate(path->upper_bound_block[6], (float[]){800,975});
*/
#else
@@ -891,10 +870,6 @@ TEST(extract_with_pconf){
copy_coordinate(path->upper_bound_block[6], (float[]){8,9.75});
#endif
#endif
#endif
#endif
#endif
update_bounds_limits_blocks(path);
@@ -910,7 +885,7 @@ TEST(extract_with_pconf){
int randomRange = 500;
size_t nb_prod_thread = 2;
size_t nb_calc_thread = 4;
float learning_rate = 0.007 /*0.001*//* 0.0001*/; /* 0.000001*/ /* 0.001*/;
float learning_rate = 0.0007 /*0.001*//* 0.0001*/; /* 0.000001*/ /* 0.001*/;
struct networks_qlearning *nnetworks = create_network_qlearning(
pconf,
randomize, minR, maxR, randomRange,
@@ -1004,7 +979,7 @@ struct status_qlearning *qlstatus = create_status_qlearning ();
struct arg_run_qlearn_bprint *argQL_BP = create_arg_run_qlearn_bprint(bash_arg, rlAgent);
struct arg_var_ * var = create_arg_var_(y_nnn_manager_handle_input, argQL_BP);
struct y_socket_t *argS = y_socket_create("1609", 2, 3, var);
struct y_socket_t *argS = y_socket_create("1600", 2, 3, var);
pthread_t pollTh;
@@ -1031,7 +1006,7 @@ struct status_qlearning *qlstatus = create_status_qlearning ();
HIDE_TEST(Transfert_learn_mini_learn){
TEST(Transfert_learn_mini_learn){
size_t nb_block = 7;
size_t dim= 2;
struct blocks * path = create_blocks(nb_block, dim);
@@ -1056,7 +1031,7 @@ HIDE_TEST(Transfert_learn_mini_learn){
copy_coordinate(path->upper_bound_block[6], (float[]){410,300});
#else
#if 0
#if 1
copy_coordinate(path->lower_bound_block[4], (float[]){0,0});
@@ -1076,7 +1051,7 @@ HIDE_TEST(Transfert_learn_mini_learn){
#else
#if 1
#if 0
copy_coordinate(path->lower_bound_block[0], (float[]){0,0});
copy_coordinate(path->upper_bound_block[0], (float[]){150,250});
copy_coordinate(path->lower_bound_block[1], (float[]){150,0});
@@ -1147,7 +1122,7 @@ copy_coordinate(path->lower_bound_block[0], (float[]){0,0});
int randomRange = 500;
size_t nb_prod_thread = 2;
size_t nb_calc_thread = 4;
float learning_rate = 0.00001 /*0.001*//* 0.0001*/; /* 0.000001*/ /* 0.001*/;
float learning_rate = 0.000001 /*0.001*//* 0.0001*/; /* 0.000001*/ /* 0.001*/;
struct networks_qlearning *nnetworks = create_network_qlearning(
pconf,
randomize, minR, maxR, randomRange,
@@ -1161,8 +1136,8 @@ EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->target_net, wei
struct main_list_ptr_DIMENSION *m_l_dim=create_var_list_ptr_DIMENSION();
//struct main_list_dimension *m_l_dim=create_var_list_dimension();
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS_PCONF(TYPE_FLOAT, nnetworks->main_net, weight_in, ".ff_learnDir/.ff_main_TEST_extract_with_pconf____9;1770646800;2400;",m_l_dim);
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS_PCONF(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_learnDir/.ff_target_TEST_extract_with_pconf____9;1770646800;2400;",m_l_dim);
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS_PCONF(TYPE_FLOAT, nnetworks->main_net, weight_in, ".ff_main_TEST_extract_with_pconf____9.symlink",m_l_dim);
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS_PCONF(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_target_TEST_extract_with_pconf____9.symlink",m_l_dim);
for(struct list_ptr_DIMENSION *local_l_dim=m_l_dim->begin_list; local_l_dim; local_l_dim=local_l_dim->next){
size_t i=local_l_dim->index;
@@ -1207,7 +1182,7 @@ struct status_qlearning *qlstatus = create_status_qlearning ();
0.95/*float gamma*/,
learning_rate,
0 /* (not used!)float discount_factor*/,
0.0001/*1.0*//*0.99*//*0.0001*//*0.99*/ /*float exploration_factor*/,
0.000001/*1.0*//*0.99*//*0.0001*//*0.99*/ /*float exploration_factor*/,
20/*long int nb_training_before_update_weight_in_target*/,
10000/*size_t number_episodes*/
);
@@ -1242,269 +1217,7 @@ struct status_qlearning *qlstatus = create_status_qlearning ();
struct arg_run_qlearn_bprint *argQL_BP = create_arg_run_qlearn_bprint(bash_arg, rlAgent);
struct arg_var_ * var = create_arg_var_(y_nnn_manager_handle_input, argQL_BP);
struct y_socket_t *argS = y_socket_create("1613", 2, 3, var);
pthread_t pollTh;
pthread_create(&pollTh, NULL, y_socket_poll_fds, (void*)argS);
pthread_join(pollTh, NULL);
//pthread_join(thread_learn, NULL);
y_socket_free(argS);
free_arg_var_(var);
free_arg_run_qlearn_bprint(argQL_BP);
//free_RL_agent(rlAgent);
}
TEST(transfertlearning_extract_with_pconf){
size_t nb_block = 7;
size_t dim= 2;
struct blocks * path = create_blocks(nb_block, dim);
LOG("debug: f_name = %s\n", __func__);
#if 0
copy_coordinate(path->lower_bound_block[0], (float[]){0,0});
copy_coordinate(path->upper_bound_block[0], (float[]){100,250});
copy_coordinate(path->lower_bound_block[1], (float[]){100,0});
copy_coordinate(path->upper_bound_block[1], (float[]){250,80});
copy_coordinate(path->lower_bound_block[2], (float[]){250,0});
copy_coordinate(path->upper_bound_block[2], (float[]){360,140});
copy_coordinate(path->lower_bound_block[3], (float[]){360,70});
copy_coordinate(path->upper_bound_block[3], (float[]){600,140});
copy_coordinate(path->lower_bound_block[4], (float[]){600,90});
copy_coordinate(path->upper_bound_block[4], (float[]){720,300});
copy_coordinate(path->lower_bound_block[5], (float[]){300,300});
copy_coordinate(path->upper_bound_block[5], (float[]){720,350});
copy_coordinate(path->lower_bound_block[6], (float[]){0,250});
copy_coordinate(path->upper_bound_block[6], (float[]){410,300});
#else
#if 0
copy_coordinate(path->lower_bound_block[4], (float[]){0,0});
copy_coordinate(path->upper_bound_block[4], (float[]){150,250});
copy_coordinate(path->lower_bound_block[3], (float[]){150,40});
copy_coordinate(path->upper_bound_block[3], (float[]){250,150});
copy_coordinate(path->lower_bound_block[2], (float[]){250,80});
copy_coordinate(path->upper_bound_block[2], (float[]){360,200});
copy_coordinate(path->lower_bound_block[1], (float[]){360,70});
copy_coordinate(path->upper_bound_block[1], (float[]){600,150});
copy_coordinate(path->lower_bound_block[0], (float[]){600,90});
copy_coordinate(path->upper_bound_block[0], (float[]){760,300});
copy_coordinate(path->lower_bound_block[6], (float[]){260,300});
copy_coordinate(path->upper_bound_block[6], (float[]){760,360});
copy_coordinate(path->lower_bound_block[5], (float[]){0,250});
copy_coordinate(path->upper_bound_block[5], (float[]){410,300});
#else
#if 0
copy_coordinate(path->lower_bound_block[0], (float[]){0,0});
copy_coordinate(path->upper_bound_block[0], (float[]){150,250});
copy_coordinate(path->lower_bound_block[1], (float[]){150,0});
copy_coordinate(path->upper_bound_block[1], (float[]){250,150});
copy_coordinate(path->lower_bound_block[2], (float[]){250,80});
copy_coordinate(path->upper_bound_block[2], (float[]){360,200});
copy_coordinate(path->lower_bound_block[3], (float[]){360,70});
copy_coordinate(path->upper_bound_block[3], (float[]){600,170});
copy_coordinate(path->lower_bound_block[4], (float[]){600,90});
copy_coordinate(path->upper_bound_block[4], (float[]){760,300});
copy_coordinate(path->lower_bound_block[5], (float[]){300,300});
copy_coordinate(path->upper_bound_block[5], (float[]){760,350});
copy_coordinate(path->lower_bound_block[6], (float[]){0,250});
copy_coordinate(path->upper_bound_block[6], (float[]){410,300});
#else
#if 1
copy_coordinate(path->lower_bound_block[0], (float[]){0,0});
copy_coordinate(path->upper_bound_block[0], (float[]){60,250});
copy_coordinate(path->lower_bound_block[1], (float[]){60,0});
copy_coordinate(path->upper_bound_block[1], (float[]){250,50});
copy_coordinate(path->lower_bound_block[2], (float[]){250,20});
copy_coordinate(path->upper_bound_block[2], (float[]){310,80});
copy_coordinate(path->lower_bound_block[3], (float[]){310,40});
copy_coordinate(path->upper_bound_block[3], (float[]){450,90});
copy_coordinate(path->lower_bound_block[4], (float[]){450,60});
copy_coordinate(path->upper_bound_block[4], (float[]){560,220});
copy_coordinate(path->lower_bound_block[5], (float[]){430,220});
copy_coordinate(path->upper_bound_block[5], (float[]){560,280});
copy_coordinate(path->lower_bound_block[6], (float[]){0,250});
copy_coordinate(path->upper_bound_block[6], (float[]){430,300});
#else
#if 1
copy_coordinate(path->lower_bound_block[0], (float[]){0,300});
copy_coordinate(path->upper_bound_block[0], (float[]){400,700});
copy_coordinate(path->lower_bound_block[1], (float[]){100,0});
copy_coordinate(path->upper_bound_block[1], (float[]){1000,300});
copy_coordinate(path->lower_bound_block[2], (float[]){1000,50});
copy_coordinate(path->upper_bound_block[2], (float[]){1400,500});
copy_coordinate(path->lower_bound_block[3], (float[]){1400,200});
copy_coordinate(path->upper_bound_block[3], (float[]){1800,700});
copy_coordinate(path->lower_bound_block[4], (float[]){1100,700});
copy_coordinate(path->upper_bound_block[4], (float[]){1700,1000});
copy_coordinate(path->lower_bound_block[5], (float[]){800,600});
copy_coordinate(path->upper_bound_block[5], (float[]){1100,975});
copy_coordinate(path->lower_bound_block[6], (float[]){100,700});
copy_coordinate(path->upper_bound_block[6], (float[]){800,975});
#else
copy_coordinate(path->lower_bound_block[0], (float[]){0,3});
copy_coordinate(path->upper_bound_block[0], (float[]){4,7});
copy_coordinate(path->lower_bound_block[1], (float[]){1,0});
copy_coordinate(path->upper_bound_block[1], (float[]){10,3});
copy_coordinate(path->lower_bound_block[2], (float[]){10,0.5});
copy_coordinate(path->upper_bound_block[2], (float[]){14,5});
copy_coordinate(path->lower_bound_block[3], (float[]){14,2});
copy_coordinate(path->upper_bound_block[3], (float[]){18,7});
copy_coordinate(path->lower_bound_block[4], (float[]){11,7});
copy_coordinate(path->upper_bound_block[4], (float[]){17,10});
copy_coordinate(path->lower_bound_block[5], (float[]){8,6});
copy_coordinate(path->upper_bound_block[5], (float[]){11,9.75});
copy_coordinate(path->lower_bound_block[6], (float[]){1,7});
copy_coordinate(path->upper_bound_block[6], (float[]){8,9.75});
#endif
#endif
#endif
#endif
#endif
update_bounds_limits_blocks(path);
struct vehicle *car = create_vehicle(path);
config_layers *pconf = create_config_layers_from_OneD(4,(size_t[]){3,24,24,3}); /* 3 input , 3 target; 2 hidden layer with 24 neurons each */
//config_layers *pconf = create_config_layers_from_OneD(3,(size_t[]){3,24,3}); /* 3 input , 3 target; 2 hidden layer with 24 neurons each */
bool randomize=true;
float minR = -0.5, maxR = 0.5;
//float minR = 0, maxR = 1;
int randomRange = 500;
size_t nb_prod_thread = 2;
size_t nb_calc_thread = 4;
float learning_rate = 0.0001; // 0.0007 /*0.001*//* 0.0001*/; /* 0.000001*/ /* 0.001*/;
struct networks_qlearning *nnetworks = create_network_qlearning(
pconf,
randomize, minR, maxR, randomRange,
nb_prod_thread, nb_calc_thread,
learning_rate
);
/*
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->main_net, weight_in, ".ff_main_20240717_01h42m16s_5300.txt");
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_target_20240717_01h42m16s_5300.txt");
*/
struct main_list_ptr_DIMENSION *m_l_dim=create_var_list_ptr_DIMENSION();
//struct main_list_dimension *m_l_dim=create_var_list_dimension();
//EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS_PCONF(TYPE_FLOAT, nnetworks->main_net, weight_in, ".ff_learnDir/.ff_main_TEST_extract_with_pconf____9;1770646800;2400;",m_l_dim);
//EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS_PCONF(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_learnDir/.ff_target_TEST_extract_with_pconf____9;1770646800;2400;",m_l_dim);
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS_PCONF(TYPE_FLOAT, nnetworks->main_net, weight_in, ".ff_learnDir/.ff_main_TEST_extract_with_pconf____9;1770675296;1044700;",m_l_dim);
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS_PCONF(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_learnDir/.ff_target_TEST_extract_with_pconf____9;1770675296;1044700;",m_l_dim);
for(struct list_ptr_DIMENSION *local_l_dim=m_l_dim->begin_list; local_l_dim; local_l_dim=local_l_dim->next){
size_t i=local_l_dim->index;
char msg[50]; sprintf(msg, " DIM[%ld] ",i);
printDebug_dimension((local_l_dim->value), msg);
}
LOG("%s","==========================================");
config_layers *base_conf=create_config_layers_from_weight_in_neurons_TYPE_FLOAT(nnetworks->main_net);
config_layers *p_conf=create_config_layers_from_m_list_ptr_DIMENSION(m_l_dim);
//config_layers *p_conf=create_config_layers_from_m_list_dimension(m_l_dim);
if(cmp_config_layers(p_conf, base_conf)==0){
LOG("base_conf == %s\n","p_conf");
}else{
LOG("base_conf != %s\n","p_conf");
}
LOG("%s ", "base_conf"); print_config_layers(base_conf);
LOG("%s ", "p_conf"); print_config_layers(p_conf);
free_config_layers(base_conf);
free_config_layers(p_conf);
//free_all_var_list_dimension(m_l_dim);
///free_all_var_list_ptr_DIMENSION(m_l_dim);
//remove_all_ptr_type_list_ptr_DIMENSION(m_l_dim);
purge_ptr_type_list_ptr_DIMENSION(m_l_dim);
//EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_target_20250508_17h50m56s_26300.txt");
///EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->main_net, weight_in, ".ff_main_.symlink");
///EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_target_.symlink");
/*
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->main_net, weight_in, ".ff_main_20250508_23h02m40s_29000.txt");
EXTRACT_FILE_TO_TENSOR_ATTRIBUTE_NNEURONS(TYPE_FLOAT, nnetworks->target_net, weight_in, ".ff_target_20250508_23h02m40s_29000.txt");
*/
struct status_qlearning *qlstatus = create_status_qlearning ();
struct delay_params *dly = create_delay_params (
500/*size_t delay_between_episodes*/,
50/*size_t delay_between_games*/
);
struct qlearning_params *qlparams = create_qlearning_params (
0.95/*float gamma*/,
learning_rate,
0 /* (not used!)float discount_factor*/,
0.01/*1.0*//*0.99*//*0.0001*//*0.99*/ /*float exploration_factor*/,
20/*long int nb_training_before_update_weight_in_target*/,
10000/*size_t number_episodes*/
);
/* UPDATE_ATTRIBUTE_NEURONE_IN_ALL_LAYERS(TYPE_FLOAT, nnetworks->main_net, d_f_act , df );
UPDATE_ATTRIBUTE_NEURONE_IN_ALL_LAYERS(TYPE_FLOAT, nnetworks->main_net, f_act, f );
UPDATE_ATTRIBUTE_NEURONE_IN_ALL_LAYERS(TYPE_FLOAT, nnetworks->target_net, d_f_act , df );
UPDATE_ATTRIBUTE_NEURONE_IN_ALL_LAYERS(TYPE_FLOAT, nnetworks->target_net, f_act , f );
*/
qlparams->caller_func_name=malloc(strlen(__func__)+1);
strcpy(qlparams->caller_func_name, __func__);
struct print_params *pprint = create_print_params(
12/*float scale_x*/,12 /*float scale_y*/,
dly/*struct delay_params * dly_p*/
);
struct RL_agent *rlAgent = create_RL_agent (
nnetworks /*struct networks_qlearning * networks*/,
car /*struct vehicle * car*/,
qlstatus /*struct status_qlearning * status*/,
pprint /*struct print_params * pprint*/,
qlparams/*struct qlearning_params *qlearnParams*/
);
//learn_to_drive(rlAgent);
//learn_to_drive(rlAgent);
struct arg_bash *bash_arg= create_arg_bash();
struct arg_run_qlearn_bprint *argQL_BP = create_arg_run_qlearn_bprint(bash_arg, rlAgent);
struct arg_var_ * var = create_arg_var_(y_nnn_manager_handle_input, argQL_BP);
struct y_socket_t *argS = y_socket_create("1621", 2, 3, var);
struct y_socket_t *argS = y_socket_create("1600", 2, 3, var);
pthread_t pollTh;
+1 -1
View File
@@ -193,6 +193,6 @@ void usage_cmdl(){
"\t\t\tNeed to add \"seq\" and \"tm\" keys to have good handling, the payload is after the header {}\n"
"\t\t\tSee y_socket_send_file_for_node function.\n"
"\t\tpost ok [filenameid]: to acknowledge receipt [filename].\n"
"\t\t\t[filenameid] is to precise wich [filename] (file name from whom and when)\n"
"\t\t\t[filenameid] is to precise witch [filename] (file name from whom and when)\n"
);
}
Binary file not shown.