diff --git a/engine.py b/engine.py index cf5da69..5d8efea 100755 --- a/engine.py +++ b/engine.py @@ -6,7 +6,7 @@ import overpy import numpy as np import pandas as pd import scipy -# import random +import random from pathlib import Path @@ -19,7 +19,7 @@ BRANDS: dict[str, str] = { CACHE_FOLDER = Path(".cache") LOCS_COUNT = 5 -DISTS_COUNT = 5 +DISTS_COUNT = 2 FORMAT_FACTOR = 1e6 # μm FIRST_SEP = ':' @@ -137,17 +137,25 @@ def trilaterate(stations: list[StationT], disp: bool = False) -> tuple[float, fl Each station is of the format ((lat, lon), distance). """ - res = scipy.optimize.minimize( - lambda pos: trilat_error(stations, pos), - # stations[0][0], - (0.0, 0.0), - method='Nelder-Mead', - ) + best_err = None + best = (0., 0.) - if not res.success: - print("WARNING: Optimisation failed.") + for pos, _ in stations: + res = scipy.optimize.minimize( + lambda pos: trilat_error(stations, pos), + # stations[0][0], + pos, + method='Nelder-Mead', + ) - return res.x + if not res.success: + continue + + if best_err is None or res.fun < best_err: + best = res.x + best_err = res.fun + + return best def encode_greggs(loc: int) -> list[float]: