diff --git a/engine.py b/engine.py index 229458e..1b2f492 100755 --- a/engine.py +++ b/engine.py @@ -96,13 +96,13 @@ def trilat_error(stations: list[StationT], position: tuple[float, float]) -> flo return sum(sq_errors) / len(sq_errors) -def trilaterate(stations: list[StationT]) -> tuple[float, float]: +def trilaterate(stations: list[StationT], disp: bool = False) -> tuple[float, float]: """Trilaterate a position, given a list of stations. Each station is of the format ((lat, lon), distance). """ - return scipy.optimize.fmin(lambda pos: trilat_error(stations, pos), (0., 0.)) + return scipy.optimize.fmin(lambda pos: trilat_error(stations, pos), (0., 0.), disp=disp) def encode(location: tuple[float, float]) -> EncodedLocation: @@ -131,7 +131,7 @@ def encode(location: tuple[float, float]) -> EncodedLocation: return result -def decode(location: EncodedLocation) -> tuple[float, float]: +def decode(location: EncodedLocation, disp: bool = False) -> tuple[float, float]: """Decode into a location.""" # form the distances matrix @@ -161,7 +161,7 @@ def decode(location: EncodedLocation) -> tuple[float, float]: # part 2: trilaterate stations: list[StationT] = [(greggs_raw[g], location[i][0]) for i, g in enumerate(closest_greggs)] - return trilaterate(stations) + return trilaterate(stations, disp=disp) def format_dist(dist: float) -> str: @@ -199,7 +199,7 @@ def main(): parsed = parse_location(formatted) print("Parsed:", parsed, end="\n\n") - decoded = decode(encoded) + decoded = decode(encoded, disp=True) print("Decoded:", decoded, end="\n\n") error = spherical_dist(np.array(coords), np.array(decoded))