engine: trilat improvements

This commit is contained in:
Oliver Gaskell 2025-11-02 15:47:33 +00:00
parent 913b558ebf
commit 2edce7c73a
No known key found for this signature in database
GPG key ID: F971A08925FCC0AD

View file

@ -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]: