diff --git a/tools/run_optimizer.py b/tools/run_optimizer.py
index b49805654af08f568782d082640b13aa3ccb567d..b8061eb21b73613adc9e22fd926ce100baf813c7 100644
--- a/tools/run_optimizer.py
+++ b/tools/run_optimizer.py
@@ -42,10 +42,10 @@ def mem_explore_optimizer(arch_info, network_info, schedule_info, verbose=False)
     cost0 = arch_info["access_cost"][0]
     cost1 = arch_info["access_cost"][1]
     i = 0
-    for x in xrange(explore_points[0]):
+    for x in range(explore_points[0]):
         arch_info["capacity"][0] = capacity0 * (arch_info["capacity_scale"][0]**x)
         arch_info["access_cost"][0] = cost0 * (arch_info["access_cost_scale"][0]**x)
-        for y in xrange(explore_points[1]):
+        for y in range(explore_points[1]):
             #if x == 0 and y < 1:
             #    continue
             arch_info["capacity"][1] = capacity1 * (arch_info["capacity_scale"][1]**y)
@@ -105,13 +105,13 @@ def mem_explore_optimizer_4_level(arch_info, network_info, schedule_info, verbos
     cost1 = arch_info["access_cost"][1]
     cost2 = arch_info["access_cost"][2]
     i = 0
-    for x in xrange(explore_points[0]):
+    for x in range(explore_points[0]):
         arch_info["capacity"][0] = capacity0 * (arch_info["capacity_scale"][0]**x)
         arch_info["access_cost"][0] = cost0 * (arch_info["access_cost_scale"][0]**x)
-        for y in xrange(explore_points[1]):
+        for y in range(explore_points[1]):
             arch_info["capacity"][1] = capacity1 * (arch_info["capacity_scale"][1]**y)
             arch_info["access_cost"][1] = cost1 * (arch_info["access_cost_scale"][1]**y)
-            for z in xrange(explore_points[2]):
+            for z in range(explore_points[2]):
                 arch_info["capacity"][2] = capacity2 * (arch_info["capacity_scale"][2]**z)
                 arch_info["access_cost"][2] = cost2 * (arch_info["access_cost_scale"][2]**z)
                 print(arch_info)