diff --git a/main.py b/main.py
index 2792b87b718c9c8f77d3c88d6efded4bc0016351..80fc3297c4c6b0371d326ec3621996534482c44e 100644
--- a/main.py
+++ b/main.py
@@ -52,8 +52,10 @@ def simulation(bn_model_user_action, var_user_action_target_action, bn_model_use
                user_reactivity_name, user_reactivity_value,
                task_progress_name, game_attempt_name, robot_assistance_name, robot_feedback_name,
                bn_model_robot_assistance, var_robot_assistance_target_action, bn_model_robot_feedback,
-               var_robot_feedback_target_action, other_user_bn_model, var_other_user_action_target_action,
-               var_other_user_target_react_time_action, other_user_memory_name, other_user_memory_value,
+               var_robot_feedback_target_action,
+               bn_model_other_user_action, var_other_user_action_target_action,
+               bn_model_other_user_react_time, var_other_user_target_react_time_action,
+               other_user_memory_name, other_user_memory_value,
                other_user_attention_name, other_user_attention_value, other_user_reactivity_name,
                other_user_reactivity_value, epochs=50, task_complexity=5):
     '''
@@ -141,26 +143,26 @@ def simulation(bn_model_user_action, var_user_action_target_action, bn_model_use
                                    task_progress_name: game_state_counter,
                                    game_attempt_name: attempt_counter,
                                    }
-            query_robot_assistance_prob = bn_functions.infer_prob_from_state(robot_bn_model,
+            query_robot_assistance_prob = bn_functions.infer_prob_from_state(bn_model_robot_assistance,
                                                                    infer_variable=var_robot_assistance_target_action,
                                                                    evidence_variables=vars_robot_evidence)
 
-            query_robot_feedback_prob = bn_functions.infer_prob_from_state(robot_bn_model,
+            query_robot_feedback_prob = bn_functions.infer_prob_from_state(bn_model_robot_feedback,
                                                                       infer_variable=var_robot_feedback_target_action,
                                                                       evidence_variables=vars_robot_evidence)
 
 
-            selected_robot_assistance_action = bn_functions.get_stochastic_action(query_robot_assistance_prob)
-            selected_robot_feedback_action = bn_functions.get_stochastic_action(query_robot_feedback_prob)
+            selected_robot_assistance_action = bn_functions.get_stochastic_action(query_robot_assistance_prob.values)
+            selected_robot_feedback_action = bn_functions.get_stochastic_action(query_robot_feedback_prob.values)
 
             #counters for plots
-            n_assistance_lev_per_episode[selected_robot_assistance_action][e] += 1
-            n_feedback_per_episode[selected_robot_feedback_action][e] += 1
+            n_assistance_lev_per_episode[e][selected_robot_assistance_action] += 1
+            n_feedback_per_episode[e][selected_robot_feedback_action] += 1
             print("robot_assistance {}, attempt {}, game {}, robot_feedback {}".format(selected_robot_assistance_action, attempt_counter, game_state_counter, selected_robot_feedback_action))
 
             ##########################QUERY FOR THE USER ACTION AND REACT TIME#####################################
             #compare the real user with the estimated Persona and returns a user action (0, 1, 2)
-            if other_user_bn_model!=None:
+            if bn_model_other_user_action!=None and bn_model_user_react_time!=None:
                 #return the user action in this state based on the user profile
                 vars_other_user_evidence = {other_user_attention_name:other_user_attention_value,
                                             other_user_reactivity_name:other_user_reactivity_value,
@@ -170,10 +172,10 @@ def simulation(bn_model_user_action, var_user_action_target_action, bn_model_use
                                             robot_assistance_name:selected_robot_assistance_action,
                                             robot_feedback_name:selected_robot_feedback_action
                                             }
-                query_user_action_prob = bn_functions.infer_prob_from_state(other_user_bn_model,
+                query_user_action_prob = bn_functions.infer_prob_from_state(bn_model_other_user_action,
                                                                             infer_variable=var_other_user_action_target_action,
                                                                             evidence_variables=vars_other_user_evidence)
-                query_user_react_time_prob = bn_functions.infer_prob_from_state(other_user_bn_model,
+                query_user_react_time_prob = bn_functions.infer_prob_from_state(bn_model_other_user_react_time,
                                                                                 infer_variable=var_other_user_target_react_time_action,
                                                                                 evidence_variables=vars_other_user_evidence)
 
@@ -188,17 +190,17 @@ def simulation(bn_model_user_action, var_user_action_target_action, bn_model_use
                                       robot_assistance_name: selected_robot_assistance_action,
                                       robot_feedback_name: selected_robot_feedback_action
                                       }
-                query_user_action_prob = bn_functions.infer_prob_from_state(user_bn_model,
+                query_user_action_prob = bn_functions.infer_prob_from_state(bn_model_user_action,
                                                                        infer_variable=var_user_action_target_action,
                                                                        evidence_variables=vars_user_evidence)
-                query_user_react_time_prob = bn_functions.infer_prob_from_state(user_bn_model,
+                query_user_react_time_prob = bn_functions.infer_prob_from_state(bn_model_user_react_time,
                                                                        infer_variable=var_user_react_time_target_action,
                                                                        evidence_variables=vars_user_evidence)
 
-            selected_user_action = bn_functions.get_stochastic_action(query_user_action_prob)
-            selected_user_react_time = bn_functions.get_stochastic_action(query_user_react_time_prob)
+            selected_user_action = bn_functions.get_stochastic_action(query_user_action_prob.values)
+            selected_user_react_time = bn_functions.get_stochastic_action(query_user_react_time_prob.values)
             # counters for plots
-            n_react_time_per_episode[selected_user_react_time][e] += 1
+            n_react_time_per_episode[e][selected_user_react_time] += 1
 
             #updates counters for user action
             robot_assistance_per_action[selected_user_action][selected_robot_assistance_action] += 1
@@ -293,45 +295,50 @@ def simulation(bn_model_user_action, var_user_action_target_action, bn_model_use
 #SIMULATION PARAMS
 robot_assistance = [i for i in range(Robot_Assistance.counter.value)]
 robot_feedback = [i for i in range(Robot_Feedback.counter.value)]
-epochs = 40
+epochs = 10
 
 #initialise the robot
-robot_assistance_bn_cpds = bnlearn.import_DAG('bn_robot_model/robot_assistive_model.bif')
-robot_feedback_bn_cpds = bnlearn.import_DAG('bn_robot_model/robot_feedback_model.bif')
-persona_action_bn_cpds = bnlearn.import_DAG('bn_persona_model/user_action_model.bif')
-persona_react_time_bn_cpds = bnlearn.import_DAG('bn_persona_model/user_react_time_model.bif')
+bn_model_robot_assistance = bnlearn.import_DAG('bn_robot_model/robot_assistive_model.bif')
+bn_model_robot_feedback = bnlearn.import_DAG('bn_robot_model/robot_feedback_model.bif')
+bn_model_user_action = bnlearn.import_DAG('bn_persona_model/user_action_model.bif')
+bn_model_user_react_time = bnlearn.import_DAG('bn_persona_model/user_react_time_model.bif')
+bn_model_other_user_action = None#bnlearn.import_DAG('bn_persona_model/other_user_action_model.bif')
+bn_model_other_user_react_time = None#bnlearn.import_DAG('bn_persona_model/other_user_react_time_model.bif')
 
 #initialise memory, attention and reactivity varibles
 persona_memory = 0; persona_attention = 0; persona_reactivity = 1;
 #initialise memory, attention and reactivity varibles
-real_user_memory = 2; real_user_attention = 2; real_user_reactivity = 2;
-real_user_cpds = None#bnlearn.import_DAG('bn_other_user_model/user_model.bif')
+other_user_memory = 2; other_user_attention = 2; other_user_reactivity = 2;
 
-game_performance_per_episode, react_time_per_episode, robot_assistance_per_episode = \
-simulation(bn_model_user_action=persona_action_bn_cpds, user_var_target_action=['user_action'],
-           bn_model_user_react_time=persona_react_time_bn_cpds, user_var_target_react_time=['user_react_time'],
+game_performance_per_episode, react_time_per_episode, robot_assistance_per_episode, robot_feedback_per_episode = \
+simulation(bn_model_user_action=bn_model_user_action, var_user_action_target_action=['user_action'],
+           bn_model_user_react_time=bn_model_user_react_time, var_user_react_time_target_action=['user_react_time'],
            user_memory_name="memory", user_memory_value=persona_memory,
            user_attention_name="attention", user_attention_value=persona_attention,
            user_reactivity_name="reactivity", user_reactivity_value=persona_reactivity,
            task_progress_name="game_state", game_attempt_name="attempt",
            robot_assistance_name="robot_assistance", robot_feedback_name="robot_feedback",
-           bn_model_robot_assistance=robot_assistance_bn_cpds, robot_var_ass_action=["robot_assistance"],
-           bn_model_robot_feedback=robot_feedback_bn_cpds, robot_var_feedback_action=["robot_feedback"],
-           other_user_bn_model=real_user_cpds, other_user_var_target_action=['user_action'],
-            other_user_var_target_react_time=["user_react_time"], other_user_memory_name="memory",
-           other_user_memory_value=real_user_memory, other_user_attention_name="attention",
-           other_user_attention_value=real_user_attention, other_user_reactivity_name="reactivity",
-           other_user_reactivity_value=real_user_reactivity, epochs=epochs, task_complexity=5)
+           bn_model_robot_assistance=bn_model_robot_assistance, var_robot_assistance_target_action=["robot_assistance"],
+           bn_model_robot_feedback=bn_model_robot_feedback, var_robot_feedback_target_action=["robot_feedback"],
+           bn_model_other_user_action=bn_model_other_user_action, var_other_user_action_target_action=['user_action'],
+           bn_model_other_user_react_time=bn_model_other_user_react_time,
+            var_other_user_target_react_time_action=["user_react_time"], other_user_memory_name="memory",
+           other_user_memory_value=other_user_memory, other_user_attention_name="attention",
+           other_user_attention_value=other_user_attention, other_user_reactivity_name="reactivity",
+           other_user_reactivity_value=other_user_reactivity, epochs=epochs, task_complexity=5)
 
 plot_game_performance_path = ""
 plot_robot_assistance_path = ""
 
-if real_user_cpds != None:
+if bn_model_other_user_action != None:
     plot_game_performance_path = "game_performance_"+"_epoch_"+str(epochs)+"_real_user_memory_"+str(real_user_memory)+"_real_user_attention_"+str(real_user_attention)+"_real_user_reactivity_"+str(real_user_reactivity)+".jpg"
     plot_robot_assistance_path = "robot_assistance_"+"epoch_"+str(epochs)+"_real_user_memory_"+str(real_user_memory)+"_real_user_attention_"+str(real_user_attention)+"_real_user_reactivity_"+str(real_user_reactivity)+".jpg"
+    plot_robot_feedback_path = "robot_feedback_"+"epoch_"+str(epochs)+"_real_user_memory_"+str(real_user_memory)+"_real_user_attention_"+str(real_user_attention)+"_real_user_reactivity_"+str(real_user_reactivity)+".jpg"
+
 else:
     plot_game_performance_path = "game_performance_"+"epoch_" + str(epochs) + "_persona_memory_" + str(persona_memory) + "_persona_attention_" + str(persona_attention) + "_persona_reactivity_" + str(persona_reactivity) + ".jpg"
     plot_robot_assistance_path = "robot_assistance_"+"epoch_"+str(epochs)+"_persona_memory_"+str(persona_memory)+"_persona_attention_"+str(persona_attention)+"_persona_reactivity_"+str(persona_reactivity)+".jpg"
+    plot_robot_feedback_path = "robot_feedback_"+"epoch_"+str(epochs)+"_persona_memory_"+str(persona_memory)+"_persona_attention_"+str(persona_attention)+"_persona_reactivity_"+str(persona_reactivity)+".jpg"
 
 dir_name = input("Please insert the name of the directory:")
 full_path = os.getcwd()+"/results/"+dir_name+"/"
@@ -347,6 +354,7 @@ else:
 
 utils.plot2D_game_performance(full_path+plot_game_performance_path, epochs, game_performance_per_episode)
 utils.plot2D_assistance(full_path+plot_robot_assistance_path, epochs, robot_assistance_per_episode)
+utils.plot2D_feedback(full_path+plot_robot_feedback_path, epochs, robot_feedback_per_episode)
 
 '''
 With the current simulator we can generate a list of episodes