amazing cache #55
										
											
												File diff suppressed because one or more lines are too long
											
										
									
								
							| @@ -55,6 +55,9 @@ class Optimizer: | ||||
|             self.average_walking_speed = parameters['average_walking_speed'] | ||||
|             self.max_landmarks = parameters['max_landmarks'] | ||||
|             self.overshoot = parameters['overshoot'] | ||||
|             self.time_limit = parameters['time_limit'] | ||||
|             self.gap_rel = parameters['gap_rel'] | ||||
|             self.max_iter = parameters['max_iter'] | ||||
|  | ||||
|  | ||||
|     def init_ub_time(self, prob: pl.LpProblem, x: pl.LpVariable, L: int, landmarks: list[Landmark], max_time: int): | ||||
| @@ -573,7 +576,10 @@ class Optimizer: | ||||
|         prob, x = self.pre_processing(L, landmarks, max_time, max_landmarks) | ||||
|  | ||||
|         # Solve the problem and extract results. | ||||
|         prob.solve(pl.PULP_CBC_CMD(msg=False, gapRel=0.1, timeLimit=3, warmStart=False)) | ||||
|         try : | ||||
|             prob.solve(pl.PULP_CBC_CMD(msg=False, timeLimit=self.time_limit+1, gapRel=self.gap_rel)) | ||||
|         except Exception as exc : | ||||
|             raise Exception(f"No solution found: {exc}") from exc  | ||||
|         status = pl.LpStatus[prob.status] | ||||
|         solution = [pl.value(var) for var in x]  # The values of the decision variables (will be 0 or 1) | ||||
|  | ||||
| @@ -588,18 +594,21 @@ class Optimizer: | ||||
|         circles = self.is_connected(solution) | ||||
|  | ||||
|         i = 0 | ||||
|         timeout = 15 | ||||
|         while circles is not None : | ||||
|             i += 1 | ||||
|             if i == timeout : | ||||
|                 self.logger.error(f'Timeout: No solution found after {timeout} iterations.') | ||||
|                 raise TimeoutError(f"Optimization took too long. No solution found after {timeout} iterations.") | ||||
|             if i == self.max_iter : | ||||
|                 self.logger.error(f'Timeout: No solution found after {self.max_iter} iterations.') | ||||
|                 raise TimeoutError(f"Optimization took too long. No solution found after {self.max_iter} iterations.") | ||||
|  | ||||
|             for circle in circles : | ||||
|                 self.prevent_circle(prob, x, circle, L) | ||||
|  | ||||
|             # Solve the problem again | ||||
|             prob.solve(pl.PULP_CBC_CMD(msg=False)) | ||||
|             try : | ||||
|                 prob.solve(pl.PULP_CBC_CMD(msg=False, timeLimit=self.time_limit, gapRel=self.gap_rel)) | ||||
|             except Exception as exc : | ||||
|                 raise Exception(f"No solution found: {exc}") from exc  | ||||
|          | ||||
|             solution = [pl.value(var) for var in x] | ||||
|  | ||||
|             if pl.LpStatus[prob.status] != 'Optimal' : | ||||
|   | ||||
| @@ -42,7 +42,7 @@ class Overpass : | ||||
|             out (str): Output format ('center', 'body', etc.). Defaults to 'center'. | ||||
|  | ||||
|         Returns: | ||||
|             ET.Element: Parsed XML response from the Overpass API, or cached data if available. | ||||
|             ET.Element:    Parsed XML response from the Overpass API, or cached data if available. | ||||
|         """ | ||||
|         # Determine which grid cells overlap with this bounding box. | ||||
|         overlapping_cells = Overpass._get_overlapping_cells(bbox) | ||||
|   | ||||
| @@ -8,5 +8,5 @@ image_bonus: 1.1 | ||||
| viewpoint_bonus: 5 | ||||
| wikipedia_bonus: 1.25 | ||||
| name_bonus: 3 | ||||
| N_important: 40 | ||||
| N_important: 60 | ||||
| pay_bonus: -1 | ||||
|   | ||||
| @@ -4,3 +4,6 @@ average_walking_speed: 4.8 | ||||
| max_landmarks: 10 | ||||
| max_landmarks_refiner: 20 | ||||
| overshoot: 0.0016 | ||||
| time_limit: 1 | ||||
| gap_rel: 0.05 | ||||
| max_iter: 25 | ||||
		Reference in New Issue
	
	Block a user