From e7ce14ea253ed9e24cef3df2371107c611dec1bf Mon Sep 17 00:00:00 2001
From: Brandon Rodriguez <brodriguez8774@gmail.com>
Date: Sat, 6 Nov 2021 05:34:27 -0400
Subject: [PATCH] Correct bug where gui counters were updating very
 inconsistently

---
 src/misc.py | 25 ++++++++++++++++---------
 1 file changed, 16 insertions(+), 9 deletions(-)

diff --git a/src/misc.py b/src/misc.py
index 7369e60..3af4942 100644
--- a/src/misc.py
+++ b/src/misc.py
@@ -311,7 +311,7 @@ def calc_trash_distances(data_manager, roomba_only=False):
 
         # Get list of all known trash piles.
         trash_tiles = data_manager.graph.data['trash_tiles']
-        logger.info('trash_tiles: {0}'.format(trash_tiles))
+        logger.debug('trash_tiles: {0}'.format(trash_tiles))
 
         # Grab each tile with a trash pile.
         for start_tile_id in trash_tiles:
@@ -716,6 +716,8 @@ def calc_trash_distances(data_manager, roomba_only=False):
                 {'id': tile_id, 'forward_cost': forward_cost, 'backward_cost': backward_cost, 'path': path},
             )
 
+    logger.info('Calculating path costs.')
+
     # Call actual function logic, now that inner functions are defined.
     if roomba_only and data_manager.ideal_trash_paths is not None:
         # Save computations by only calculating roomba distance to trash tiles.
@@ -732,6 +734,8 @@ def calc_traveling_salesman(data_manager, calc_new=True, debug=False):
     :param data_manager: Data manager data structure. Consolidates useful program data to one location.
     :param calc_new: Bool indicating if previously calculated path data should be discarded. Such as wall entity update.
     """
+    logger.info('Calculating ideal path.')
+
     # Clear all debug entities.
     clear_debug_entities(data_manager)
 
@@ -751,10 +755,10 @@ def calc_traveling_salesman(data_manager, calc_new=True, debug=False):
         data_manager.gui_data['optimal_counter'] = curr_total_dist
         data_manager.gui_data['total_move_counter'] = 0
 
-    logger.info('\n\n\n\n')
-    logger.info(' ==== TRAVELING SALESMAN ===== ')
-    logger.info('\n')
-    logger.info('trash_paths: {0}'.format(trash_paths))
+    logger.debug('')
+    logger.debug(' ==== TRAVELING SALESMAN ===== ')
+    logger.debug('')
+    logger.debug('trash_paths: {0}'.format(trash_paths))
 
     # Initialize path by just going to trash tiles in original ordering.
     start_tile_id = None
@@ -854,10 +858,13 @@ def calc_traveling_salesman(data_manager, calc_new=True, debug=False):
         data_manager.ideal_overall_path['ordering'] == ['{0}, {1}'.format(roomba_x, roomba_y)] or
         calculated_path['total_cost'] < data_manager.ideal_overall_path['total_cost']
     ):
-        # New calculated path is more efficient. Save values.
-        data_manager.ideal_overall_path = calculated_path
-        data_manager.gui_data['optimal_counter'] = calculated_path['total_cost']
-        data_manager.gui_data['total_move_counter'] += 1
+        # New calculated path is more NOT more efficient. Revert to previously found values.
+        calculated_path = data_manager.ideal_overall_path
+
+    # Save best-found values and update counters.
+    data_manager.ideal_overall_path = calculated_path
+    data_manager.gui_data['optimal_counter'] = calculated_path['total_cost']
+    data_manager.gui_data['total_move_counter'] += 1
 
     # Optionally display debug tile sprites.
     if debug:
-- 
GitLab