4000s上限优化
This commit is contained in:
@@ -0,0 +1,429 @@
|
||||
"""P4b 贝叶斯网格滤波闭环(问题3新策略 ``bayes``)。
|
||||
|
||||
在 :class:`OmnidirectionalLoop` 骨架(run/异常收尾/summary/预算/异常留痕)
|
||||
上的三层重构,对应 docs/algo-3-bayes.md 的架构:
|
||||
|
||||
1. 感知层:每频道一个网格幸存集(particles.ChannelParticles),全部读数
|
||||
(含 no_signal 负观测)即时更新;幸存集为空即缺席证明,无需等覆盖账本;
|
||||
2. 决策层:统一任务循环——站点扫频、定位测量、清除三类任务合成任务表,
|
||||
开放路径最近邻 + 2-opt 排序,每执行一个任务滚动重排(动态 TSP);
|
||||
3. 选点层:定位测量点在保证接收盘(凸证书)或 PF MEC 探索环(宽候选集)
|
||||
内按"期望 log 幸存占比 + λ·移动时间"评分(信息增益贪心)。
|
||||
|
||||
与基线 SevenBatch 的差异:负观测跳站/跳测(必 no_signal 的 (站,频道) 对
|
||||
不消耗检测与换频)、PF 缺席证明提前证毕、全局任务排序替代"站内最近邻"。
|
||||
清除证书仍以凸证书为主(PF 网格证书仅在负观测挖洞使幸存集更紧时提前
|
||||
触发),两者均满足 Voronoi/保守裕量,不牺牲全清率。
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
|
||||
import math
|
||||
from dataclasses import dataclass
|
||||
|
||||
from ..belief import ChannelStatus
|
||||
from ..config import ProblemConfig, Vec2
|
||||
from ..coverage import CoverageLedger
|
||||
from ..particles import ChannelParticles
|
||||
from ..protocol.client import SimulatorClient
|
||||
from ..protocol.rules import DIRECTION, NEAR, NO_SIGNAL
|
||||
from ..protocol.timing import move_time
|
||||
from . import (ClearCertificate, OmnidirectionalLoop, clear_certificate,
|
||||
candidate_points, safe_disk_radius, select_measurement_point)
|
||||
from .seven import seven_points
|
||||
|
||||
|
||||
@dataclass(frozen=True)
|
||||
class Task:
|
||||
"""统一任务表的一项。service_s 为不含移动的固有耗时(检测+换频/清除)。"""
|
||||
|
||||
kind: str # "station" | "locate" | "clear"
|
||||
position: Vec2
|
||||
service_s: float
|
||||
channel: int | None = None
|
||||
station_index: int | None = None
|
||||
|
||||
|
||||
def _point_key(point: Vec2) -> tuple[int, int]:
|
||||
"""候选点去重键:0.5m 网格取整(同一物理点不重复测量)。"""
|
||||
return (int(round(point[0] * 2)), int(round(point[1] * 2)))
|
||||
|
||||
|
||||
class BayesLoop(OmnidirectionalLoop):
|
||||
"""问题3贝叶斯闭环:负观测感知 + 信息增益选点 + 滚动任务排序。"""
|
||||
|
||||
def __init__(self, client: SimulatorClient,
|
||||
config: ProblemConfig = ProblemConfig()):
|
||||
super().__init__(client, config)
|
||||
self.ledger = CoverageLedger(
|
||||
config, points=seven_points(config.bayes.station_ring_radius_m))
|
||||
self.particles = {channel: ChannelParticles(config)
|
||||
for channel in self.belief.channels}
|
||||
self._measured_points: dict[int, set[tuple[int, int]]] = {}
|
||||
self._clear_failed: set[int] = set() # 证书清除失败后须先补测再重试
|
||||
self._stall: dict[int, int] = {} # 连续无收缩计数(异常留痕用)
|
||||
self._skip_cache: dict[tuple[int, int], tuple[int, bool]] = {}
|
||||
self.skipped_measures = 0 # 跳测规则省下的检测次数
|
||||
self.no_shrink_measures = 0 # 未收缩幸存集的定位检测(诊断用)
|
||||
self.pf_absent_channels: list[int] = [] # 由幸存集为空证明缺席的频道
|
||||
|
||||
# ------------------------------------------------------------ 主循环
|
||||
def _coverage_phase(self) -> None:
|
||||
"""统一任务循环:发现 + 定位 + 清除滚动调度,直到任务表为空。"""
|
||||
while self.stop_reason is None:
|
||||
if self._count_limit_reached() or self._virtual_cap_reached():
|
||||
return
|
||||
if not self._step_once():
|
||||
return
|
||||
|
||||
def _step_once(self) -> bool:
|
||||
"""构建任务表、排序并执行首任务;无可执行任务返回 False。"""
|
||||
tasks = self._build_tasks()
|
||||
if not tasks:
|
||||
return False
|
||||
order = self._order_tasks(tasks)
|
||||
self._execute_task(order[0])
|
||||
return True
|
||||
|
||||
# ------------------------------------------------------------ 任务构建
|
||||
def _station_pending(self, index: int) -> list[int]:
|
||||
"""站点待测频道:UNKNOWN、未测过、非"必 no_signal"且未证缺席。"""
|
||||
point = self.ledger.points[index]
|
||||
pending = []
|
||||
for channel, belief in self.belief.channels.items():
|
||||
if belief.status is not ChannelStatus.UNKNOWN:
|
||||
continue
|
||||
if self.ledger.measured_at(channel, index):
|
||||
continue
|
||||
if self._skip_station_channel(channel, index, point):
|
||||
continue
|
||||
pending.append(channel)
|
||||
return pending
|
||||
|
||||
def _skip_station_channel(self, channel: int, index: int, point: Vec2) -> bool:
|
||||
"""跳测规则(按 pf.version 缓存;幸存集单调收缩,判定单调)。"""
|
||||
pf = self.particles[channel]
|
||||
if not len(pf):
|
||||
return True
|
||||
cached = self._skip_cache.get((channel, index))
|
||||
if cached is not None and cached[0] == pf.version:
|
||||
return cached[1]
|
||||
value = pf.guaranteed_no_signal(point)
|
||||
self._skip_cache[(channel, index)] = (pf.version, value)
|
||||
return value
|
||||
|
||||
def _build_tasks(self) -> list[Task]:
|
||||
tasks: list[Task] = []
|
||||
for index, point in enumerate(self.ledger.points):
|
||||
pending = self._station_pending(index)
|
||||
if not pending:
|
||||
continue
|
||||
switches = len(pending) - (1 if self.client.state.channel in pending else 0)
|
||||
tasks.append(Task("station", tuple(point),
|
||||
self.config.cost.measure_s * len(pending)
|
||||
+ self.config.cost.switch_s * max(switches, 0),
|
||||
station_index=index))
|
||||
for channel in self.belief.channels_by_status(ChannelStatus.DETECTED):
|
||||
cert = self._best_certificate(channel)
|
||||
if cert is not None and cert.certified \
|
||||
and channel not in self._clear_failed:
|
||||
tasks.append(Task("clear", cert.center,
|
||||
self.config.cost.clear_success_s,
|
||||
channel=channel))
|
||||
continue
|
||||
point = self._select_point(channel)
|
||||
if point is None:
|
||||
continue
|
||||
tasks.append(Task("locate", point,
|
||||
self.config.cost.measure_s + self.config.cost.switch_s,
|
||||
channel=channel))
|
||||
return tasks
|
||||
|
||||
# ------------------------------------------------------------ 任务排序
|
||||
def _order_tasks(self, tasks: list[Task]) -> list[Task]:
|
||||
"""开放路径排序:最近邻打底,2-opt 改进(终点自由,不回起点)。"""
|
||||
if len(tasks) <= 2:
|
||||
return sorted(tasks, key=lambda t: (
|
||||
move_time(self.client.state.position, t.position, self.config.cost),
|
||||
t.kind, t.channel or 0))
|
||||
order = self._nearest_order(tasks)
|
||||
if not self.config.bayes.two_opt_enabled:
|
||||
return order
|
||||
return self._two_opt(order)
|
||||
|
||||
def _nearest_order(self, tasks: list[Task]) -> list[Task]:
|
||||
remaining = list(tasks)
|
||||
order = []
|
||||
position = self.client.state.position
|
||||
while remaining:
|
||||
best = min(remaining, key=lambda t: (
|
||||
move_time(position, t.position, self.config.cost),
|
||||
t.kind, t.channel or 0))
|
||||
remaining.remove(best)
|
||||
order.append(best)
|
||||
position = best.position
|
||||
return order
|
||||
|
||||
def _path_cost(self, order: list[Task]) -> float:
|
||||
total = 0.0
|
||||
position = self.client.state.position
|
||||
for task in order:
|
||||
total += move_time(position, task.position, self.config.cost)
|
||||
total += task.service_s
|
||||
position = task.position
|
||||
return total
|
||||
|
||||
def _two_opt(self, order: list[Task]) -> list[Task]:
|
||||
best = list(order)
|
||||
best_cost = self._path_cost(best)
|
||||
for _ in range(self.config.bayes.two_opt_passes):
|
||||
improved = False
|
||||
for i in range(len(best) - 1):
|
||||
for j in range(i + 1, len(best)):
|
||||
candidate = best[:i] + best[i:j + 1][::-1] + best[j + 1:]
|
||||
cost = self._path_cost(candidate)
|
||||
if cost < best_cost - 1e-6:
|
||||
best, best_cost, improved = candidate, cost, True
|
||||
if not improved:
|
||||
break
|
||||
return best
|
||||
|
||||
# ------------------------------------------------------------ 任务执行
|
||||
def _execute_task(self, task: Task) -> None:
|
||||
if task.kind == "station":
|
||||
self._execute_station(task.station_index)
|
||||
elif task.kind == "clear":
|
||||
cert = self._best_certificate(task.channel)
|
||||
if cert is not None and cert.certified:
|
||||
if not self._attempt_clear(task.channel, cert.center, cert):
|
||||
self._clear_failed.add(task.channel)
|
||||
self._may_clear.discard(task.channel)
|
||||
else:
|
||||
self._clear_failed.discard(task.channel)
|
||||
elif task.kind == "locate":
|
||||
self._execute_locate(task.channel, task.position)
|
||||
|
||||
def _execute_station(self, index: int) -> None:
|
||||
"""单站批量扫频:只测待测频道(跳测规则已过滤),扫完即返回重排。"""
|
||||
point = self.ledger.points[index]
|
||||
pending = self._station_pending(index)
|
||||
unknown = [c for c, b in self.belief.channels.items()
|
||||
if b.status is ChannelStatus.UNKNOWN]
|
||||
self.skipped_measures += len(unknown) - len(pending)
|
||||
# 当前频道优先,减少换频;同站 near 直接清除不打断扫频
|
||||
pending.sort(key=lambda c: (c != self.client.state.channel, c))
|
||||
for channel in pending:
|
||||
if self.stop_reason is not None or self._count_limit_reached() \
|
||||
or self._virtual_cap_reached():
|
||||
return
|
||||
outcome = self.client.measure(point, channel)
|
||||
self.ledger.mark_measured(channel, index)
|
||||
self._record_measure(channel, point, outcome)
|
||||
if outcome.result in (DIRECTION, NEAR):
|
||||
self._may_clear.add(channel)
|
||||
if outcome.result == NEAR:
|
||||
region = self.belief.candidate_set(channel)
|
||||
cert = clear_certificate(region, channel, self.config)
|
||||
if cert.certified:
|
||||
if self._attempt_clear(channel, point, cert):
|
||||
self._clear_failed.discard(channel)
|
||||
else:
|
||||
self._clear_failed.add(channel)
|
||||
self._may_clear.discard(channel)
|
||||
else:
|
||||
self._anomaly("near_without_certificate", channel, position=point)
|
||||
|
||||
def _execute_locate(self, channel: int, point: Vec2) -> None:
|
||||
"""单步定位测量:执行后立即重排(滚动时域),收敛则顺路清除。"""
|
||||
pf = self.particles[channel]
|
||||
before = len(pf)
|
||||
outcome = self.client.measure(point, channel)
|
||||
self._record_measure(channel, point, outcome)
|
||||
self._may_clear.add(channel)
|
||||
if outcome.result == NO_SIGNAL:
|
||||
region = self.belief.candidate_set(channel)
|
||||
if region is not None and safe_disk_radius(region, self.config) >= 0 \
|
||||
and math.dist(point, region.mec()[0]) \
|
||||
<= safe_disk_radius(region, self.config):
|
||||
self._anomaly("no_signal_in_safe_disk", channel, position=point)
|
||||
after = len(pf)
|
||||
cert = self._best_certificate(channel)
|
||||
if cert is not None and cert.certified:
|
||||
if self._attempt_clear(channel, cert.center, cert):
|
||||
self._clear_failed.discard(channel)
|
||||
self._stall.pop(channel, None)
|
||||
return
|
||||
self._clear_failed.add(channel)
|
||||
self._may_clear.discard(channel)
|
||||
if after == before:
|
||||
self._stall[channel] = self._stall.get(channel, 0) + 1
|
||||
self.no_shrink_measures += 1 # 只是浪费不破坏守恒性,不进异常表
|
||||
else:
|
||||
self._stall[channel] = 0
|
||||
|
||||
# ------------------------------------------------------------ 感知与证书
|
||||
def _record_measure(self, channel: int, position: Vec2, outcome) -> None:
|
||||
"""belief(凸证书)与 PF(幸存集)同步更新;PF 空即证缺席。"""
|
||||
self.belief.update_measure(channel, position, outcome.result,
|
||||
outcome.svd_deg)
|
||||
self._measured_points.setdefault(channel, set()).add(_point_key(position))
|
||||
self._clear_failed.discard(channel) # 新证据落地:允许再次尝试清除
|
||||
belief = self.belief.channels[channel]
|
||||
if belief.status in (ChannelStatus.CLEARED, ChannelStatus.ABSENT):
|
||||
return # 已证毕:清除/缺席后的 no_signal 与距离无关,不进 PF
|
||||
pf = self.particles[channel]
|
||||
pf.apply_measure(position, outcome.result, outcome.svd_deg)
|
||||
if not len(pf):
|
||||
if belief.status is ChannelStatus.UNKNOWN:
|
||||
self.belief.mark_absent(channel)
|
||||
if channel not in self.pf_absent_channels:
|
||||
self.pf_absent_channels.append(channel)
|
||||
else:
|
||||
self._anomaly("pf_empty_while_detected", channel, position=position)
|
||||
|
||||
def _best_certificate(self, channel: int) -> ClearCertificate | None:
|
||||
"""凸证书优先;负观测挖洞使 PF 幸存集更紧时用网格证书补位。"""
|
||||
region = self.belief.candidate_set(channel)
|
||||
cert = clear_certificate(region, channel, self.config) \
|
||||
if region is not None else None
|
||||
if cert is not None and cert.certified:
|
||||
return cert
|
||||
if self.config.bayes.grid_cert_enabled:
|
||||
pf = self.particles[channel]
|
||||
if len(pf):
|
||||
center, radius = pf.mec()
|
||||
limit = (self.config.field.clear_radius_m - pf.margin_m
|
||||
- self.config.search.clear_margin_m)
|
||||
if radius <= limit:
|
||||
return ClearCertificate(channel, center, radius, limit, True)
|
||||
return cert
|
||||
|
||||
# ------------------------------------------------------------ 信息增益选点
|
||||
def _select_point(self, channel: int) -> Vec2 | None:
|
||||
"""定位测量点:期望 log 幸存占比 + λ·移动时间 最小的候选。"""
|
||||
bayes, search = self.config.bayes, self.config.search
|
||||
pf = self.particles[channel]
|
||||
if not len(pf):
|
||||
return None
|
||||
region = self.belief.candidate_set(channel)
|
||||
center, radius = pf.mec()
|
||||
measured = self._measured_points.get(channel, set())
|
||||
candidates: list[Vec2] = []
|
||||
safe = safe_disk_radius(region, self.config) if region is not None else -1.0
|
||||
if region is not None and safe >= 0:
|
||||
# 保证接收盘(凸证书口径):任意候选必产生 direction/near
|
||||
candidates = candidate_points(tuple(region.mec()[0]), safe,
|
||||
search.candidate_rings,
|
||||
search.candidate_angles)
|
||||
else:
|
||||
# 宽候选集:PF MEC 探索环(负观测挖洞后幸存集的包围圆)
|
||||
for fraction in bayes.wide_rings:
|
||||
ring = max(radius * fraction, 2.0 * pf.margin_m)
|
||||
candidates.extend(candidate_points(center, ring, (1.0,),
|
||||
search.candidate_angles))
|
||||
candidates.append(tuple(center))
|
||||
candidates = [c for c in candidates if _point_key(c) not in measured]
|
||||
if not candidates:
|
||||
return None
|
||||
subsample = pf.subsample(bayes.score_subsample)
|
||||
stride = max(len(subsample) // bayes.mc_representatives, 1)
|
||||
representatives = [subsample[k]
|
||||
for k in range(0, len(subsample), stride)]
|
||||
position = self.client.state.position
|
||||
|
||||
def score(q: Vec2) -> float:
|
||||
move = bayes.lambda_move_s * move_time(position, q, self.config.cost)
|
||||
if bayes.score_mode == "entropy":
|
||||
return (pf.expected_survival(q, subsample, representatives)
|
||||
+ move)
|
||||
return (pf.expected_posterior_radius(q, subsample, representatives)
|
||||
+ move)
|
||||
|
||||
return min(candidates, key=lambda q: (score(q), _point_key(q)))
|
||||
|
||||
# ------------------------------------------------------------ 安全网与复扫
|
||||
def _localize_and_clear(self, channel: int) -> bool:
|
||||
"""阻塞式定位子循环(resolve 阶段安全网):PF 选点,失败退凸选点。"""
|
||||
search = self.config.search
|
||||
self._may_clear.add(channel)
|
||||
for _ in range(search.max_localize_steps):
|
||||
if self._virtual_cap_reached():
|
||||
return False
|
||||
cert = self._best_certificate(channel)
|
||||
if cert is not None and cert.certified and channel in self._may_clear:
|
||||
if self._attempt_clear(channel, cert.center, cert):
|
||||
self._clear_failed.discard(channel)
|
||||
return True
|
||||
self._clear_failed.add(channel)
|
||||
self._may_clear.discard(channel)
|
||||
continue
|
||||
point = self._select_point(channel)
|
||||
if point is None:
|
||||
region = self.belief.candidate_set(channel)
|
||||
if region is None:
|
||||
return False
|
||||
point = select_measurement_point(
|
||||
region, self.client.state.position, self.config).position
|
||||
outcome = self.client.measure(point, channel)
|
||||
self._record_measure(channel, point, outcome)
|
||||
self._may_clear.add(channel)
|
||||
if outcome.result == NO_SIGNAL:
|
||||
region = self.belief.candidate_set(channel)
|
||||
if region is not None and safe_disk_radius(region, self.config) >= 0 \
|
||||
and math.dist(point, region.mec()[0]) \
|
||||
<= safe_disk_radius(region, self.config):
|
||||
self._anomaly("no_signal_in_safe_disk", channel, position=point)
|
||||
cert = self._best_certificate(channel)
|
||||
if cert is not None and cert.certified:
|
||||
if self._attempt_clear(channel, cert.center, cert):
|
||||
self._clear_failed.discard(channel)
|
||||
return True
|
||||
self._clear_failed.add(channel)
|
||||
self._may_clear.discard(channel)
|
||||
return self.belief.channels[channel].status is ChannelStatus.CLEARED
|
||||
|
||||
def _persistent_round(self) -> None:
|
||||
"""一轮复扫:与基线一致的全站复测,但读数同步进 PF(防假设偏差)。"""
|
||||
measured: set[tuple[int, int]] = set()
|
||||
while self.stop_reason is None:
|
||||
index = self._next_resweep_point(measured)
|
||||
if index is None:
|
||||
return
|
||||
point = self.ledger.points[index]
|
||||
for channel in self._resweep_channels_at(index, measured):
|
||||
if self._virtual_cap_reached():
|
||||
return
|
||||
measured.add((channel, index))
|
||||
was_absent = (self.belief.channels[channel].status
|
||||
is ChannelStatus.ABSENT)
|
||||
outcome = self.client.measure(point, channel)
|
||||
self._record_measure(channel, point, outcome)
|
||||
if was_absent and outcome.result in (DIRECTION, NEAR):
|
||||
# 复测推翻了缺席证明:守恒性留痕,按新证据定位清除。
|
||||
self._anomaly("absent_detected_on_resweep", channel,
|
||||
position=point, result=outcome.result)
|
||||
if outcome.result == DIRECTION:
|
||||
self._localize_and_clear(channel)
|
||||
elif outcome.result == NEAR:
|
||||
cert = self._best_certificate(channel)
|
||||
if cert is not None and cert.certified:
|
||||
if not self._attempt_clear(channel, cert.center, cert):
|
||||
self._clear_failed.add(channel)
|
||||
else:
|
||||
self._anomaly("near_without_certificate", channel,
|
||||
position=point)
|
||||
if self.stop_reason is not None:
|
||||
return
|
||||
|
||||
# ------------------------------------------------------------ 收尾
|
||||
def _summary(self, info) -> dict:
|
||||
report = super()._summary(info)
|
||||
report["strategy"] = "bayes"
|
||||
report["skipped_measures"] = self.skipped_measures
|
||||
report["no_shrink_measures"] = self.no_shrink_measures
|
||||
report["pf_absent_channels"] = sorted(self.pf_absent_channels)
|
||||
report["pf_alive_final"] = {
|
||||
str(channel): len(self.particles[channel])
|
||||
for channel in sorted(self.particles)
|
||||
if self.belief.channels[channel].status is ChannelStatus.DETECTED}
|
||||
return report
|
||||
@@ -0,0 +1,79 @@
|
||||
{
|
||||
"field": {
|
||||
"omega_radius_m": 1800.0,
|
||||
"channel_min": 1,
|
||||
"channel_max": 20,
|
||||
"source_count_min": 10,
|
||||
"source_count_max": 16,
|
||||
"r_eff_min_m": 1000.0,
|
||||
"r_eff_max_m": 1500.0,
|
||||
"near_radius_m": 5.0,
|
||||
"clear_radius_m": 20.0,
|
||||
"bearing_error_half_deg": 1.0,
|
||||
"bearing_decimals": 2,
|
||||
"coord_abs_limit_m": 2000000.0,
|
||||
"directional_half_angle_deg": 90.0,
|
||||
"max_virtual_duration_s": 360000.0,
|
||||
"max_real_duration_s": 1200.0,
|
||||
"test_window_s": 1500.0
|
||||
},
|
||||
"cost": {
|
||||
"speed_mps": 5.0,
|
||||
"measure_s": 5.0,
|
||||
"switch_s": 1.0,
|
||||
"clear_success_s": 5.0,
|
||||
"clear_fail_s": 3.0
|
||||
},
|
||||
"session": {
|
||||
"arena_id": "default",
|
||||
"base_url": "http://127.0.0.1:2026",
|
||||
"robot_id_max_bytes": 64,
|
||||
"request_id_max_bytes": 128,
|
||||
"request_body_max_bytes": 65536,
|
||||
"connect_timeout_s": 5.0,
|
||||
"read_timeout_s": 15.0,
|
||||
"max_attempts": 3,
|
||||
"retry_backoff_s": 0.25,
|
||||
"reserve_exit_s": 60.0,
|
||||
"real_rtt_p95_s": 1.0,
|
||||
"self_test_real_budget_s": 1800.0
|
||||
},
|
||||
"search": {
|
||||
"grid_step_m": 700.0,
|
||||
"grid_half_cells": 3,
|
||||
"fallback_clear_grid_m": 20.0,
|
||||
"bearing_rounding_margin_deg": 0.005,
|
||||
"polygon_sides": 192,
|
||||
"witness_spacing_m": 60.0,
|
||||
"candidate_rings": [
|
||||
0.0,
|
||||
0.4,
|
||||
0.75,
|
||||
1.0
|
||||
],
|
||||
"candidate_angles": 12,
|
||||
"clear_margin_m": 0.5,
|
||||
"max_localize_steps": 8,
|
||||
"max_anomalies_per_channel": 3,
|
||||
"max_blocked_probes": 4,
|
||||
"fallback_max_cells": 400,
|
||||
"persistent_search": false,
|
||||
"virtual_reserve_s": 10000.0
|
||||
},
|
||||
"bayes": {
|
||||
"particle_spacing_m": 25.0,
|
||||
"score_mode": "entropy",
|
||||
"score_subsample": 800,
|
||||
"mc_representatives": 7,
|
||||
"lambda_move_s": 0.0105,
|
||||
"wide_rings": [
|
||||
1.0,
|
||||
1.5,
|
||||
2.0
|
||||
],
|
||||
"station_ring_radius_m": 1159.7,
|
||||
"two_opt_enabled": true,
|
||||
"two_opt_passes": 3,
|
||||
"grid_cert_enabled": true
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,260 @@
|
||||
{
|
||||
"config": {
|
||||
"field": {
|
||||
"omega_radius_m": 1800.0,
|
||||
"channel_min": 1,
|
||||
"channel_max": 20,
|
||||
"source_count_min": 10,
|
||||
"source_count_max": 16,
|
||||
"r_eff_min_m": 1000.0,
|
||||
"r_eff_max_m": 1500.0,
|
||||
"near_radius_m": 5.0,
|
||||
"clear_radius_m": 20.0,
|
||||
"bearing_error_half_deg": 1.0,
|
||||
"bearing_decimals": 2,
|
||||
"coord_abs_limit_m": 2000000.0,
|
||||
"directional_half_angle_deg": 90.0,
|
||||
"max_virtual_duration_s": 360000.0,
|
||||
"max_real_duration_s": 1200.0,
|
||||
"test_window_s": 1500.0
|
||||
},
|
||||
"cost": {
|
||||
"speed_mps": 5.0,
|
||||
"measure_s": 5.0,
|
||||
"switch_s": 1.0,
|
||||
"clear_success_s": 5.0,
|
||||
"clear_fail_s": 3.0
|
||||
},
|
||||
"session": {
|
||||
"arena_id": "default",
|
||||
"base_url": "http://127.0.0.1:2026",
|
||||
"robot_id_max_bytes": 64,
|
||||
"request_id_max_bytes": 128,
|
||||
"request_body_max_bytes": 65536,
|
||||
"connect_timeout_s": 5.0,
|
||||
"read_timeout_s": 15.0,
|
||||
"max_attempts": 3,
|
||||
"retry_backoff_s": 0.25,
|
||||
"reserve_exit_s": 60.0,
|
||||
"real_rtt_p95_s": 1.0,
|
||||
"self_test_real_budget_s": 1800.0
|
||||
},
|
||||
"search": {
|
||||
"grid_step_m": 700.0,
|
||||
"grid_half_cells": 3,
|
||||
"fallback_clear_grid_m": 20.0,
|
||||
"bearing_rounding_margin_deg": 0.005,
|
||||
"polygon_sides": 192,
|
||||
"witness_spacing_m": 60.0,
|
||||
"candidate_rings": [
|
||||
0.0,
|
||||
0.4,
|
||||
0.75,
|
||||
1.0
|
||||
],
|
||||
"candidate_angles": 12,
|
||||
"clear_margin_m": 0.5,
|
||||
"max_localize_steps": 8,
|
||||
"max_anomalies_per_channel": 3,
|
||||
"max_blocked_probes": 4,
|
||||
"fallback_max_cells": 400,
|
||||
"persistent_search": false,
|
||||
"virtual_reserve_s": 10000.0
|
||||
},
|
||||
"bayes": {
|
||||
"particle_spacing_m": 25.0,
|
||||
"score_mode": "entropy",
|
||||
"score_subsample": 800,
|
||||
"mc_representatives": 7,
|
||||
"lambda_move_s": 0.0105,
|
||||
"wide_rings": [
|
||||
1.0,
|
||||
1.5,
|
||||
2.0
|
||||
],
|
||||
"station_ring_radius_m": 1159.7,
|
||||
"two_opt_enabled": true,
|
||||
"two_opt_passes": 3,
|
||||
"grid_cert_enabled": true,
|
||||
"opportunistic_measure": true,
|
||||
"opportunistic_radius_ratio": 0.65,
|
||||
"opportunistic_discovery_fraction": 0.15
|
||||
}
|
||||
},
|
||||
"source": "local_simulator_only",
|
||||
"rows": [
|
||||
{
|
||||
"case": "random-10-0",
|
||||
"valid": true,
|
||||
"virtual_s": 3083.398221,
|
||||
"measures": 164,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 10277.0,
|
||||
"wall_s": 0.8067699000093853
|
||||
},
|
||||
{
|
||||
"case": "random-10-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3642.523231,
|
||||
"measures": 171,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12877.6,
|
||||
"wall_s": 1.4086409000010462
|
||||
},
|
||||
{
|
||||
"case": "random-10-2",
|
||||
"valid": true,
|
||||
"virtual_s": 3266.706336,
|
||||
"measures": 160,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11313.5,
|
||||
"wall_s": 1.6418229000119027
|
||||
},
|
||||
{
|
||||
"case": "random-10-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3762.508482,
|
||||
"measures": 211,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12277.5,
|
||||
"wall_s": 1.7074006000038935
|
||||
},
|
||||
{
|
||||
"case": "random-10-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3371.418159,
|
||||
"measures": 143,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12357.1,
|
||||
"wall_s": 2.1484533000038937
|
||||
},
|
||||
{
|
||||
"case": "random-10-5",
|
||||
"valid": true,
|
||||
"virtual_s": 3198.715433,
|
||||
"measures": 150,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11293.6,
|
||||
"wall_s": 1.6730121000000509
|
||||
},
|
||||
{
|
||||
"case": "boundary-10",
|
||||
"valid": true,
|
||||
"virtual_s": 4342.190154,
|
||||
"measures": 175,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 16291.0,
|
||||
"wall_s": 0.7709059999906458
|
||||
},
|
||||
{
|
||||
"case": "random-16-0",
|
||||
"valid": true,
|
||||
"virtual_s": 3113.346538,
|
||||
"measures": 112,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11826.7,
|
||||
"wall_s": 2.458396800007904
|
||||
},
|
||||
{
|
||||
"case": "random-16-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3509.22519,
|
||||
"measures": 113,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13771.1,
|
||||
"wall_s": 2.428945100007695
|
||||
},
|
||||
{
|
||||
"case": "random-16-2",
|
||||
"valid": true,
|
||||
"virtual_s": 3280.118211,
|
||||
"measures": 145,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11680.6,
|
||||
"wall_s": 1.5479743000032613
|
||||
},
|
||||
{
|
||||
"case": "random-16-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3384.734199,
|
||||
"measures": 127,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12763.7,
|
||||
"wall_s": 3.6217957000044407
|
||||
},
|
||||
{
|
||||
"case": "random-16-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3358.282938,
|
||||
"measures": 133,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12451.4,
|
||||
"wall_s": 2.0503644999989774
|
||||
},
|
||||
{
|
||||
"case": "random-16-5",
|
||||
"valid": true,
|
||||
"virtual_s": 3953.832941,
|
||||
"measures": 142,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 15159.2,
|
||||
"wall_s": 2.249085699993884
|
||||
},
|
||||
{
|
||||
"case": "boundary-16",
|
||||
"valid": true,
|
||||
"virtual_s": 4358.90599,
|
||||
"measures": 171,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 16304.5,
|
||||
"wall_s": 0.8942588000063552
|
||||
}
|
||||
],
|
||||
"mean_s": 3544.7075730714287,
|
||||
"median_s": 3378.0761789999997,
|
||||
"max_s": 4358.90599,
|
||||
"valid": 14,
|
||||
"under_4000": 12,
|
||||
"source_sha256": {
|
||||
"src\\mcm26b\\__init__.py": "a1ea628e2b44a8b288c59fcda19a8f02b53f2d6fec675ef1e8c481ffdcbd7f35",
|
||||
"src\\mcm26b\\belief\\__init__.py": "8613467122928e70dd2b07f14e1009a1edddb1d495d44f063f222fb118f78ba5",
|
||||
"src\\mcm26b\\cli.py": "2fac81a16cecdf23ce1f91031009cd2817fd3f2b66cb5f66d0a31bdd16088a04",
|
||||
"src\\mcm26b\\config.py": "f2c7bf6b6b2cdb4b3a6b1b5e4eec65ecfde9ae6865227c36fe202f8e03c0cc75",
|
||||
"src\\mcm26b\\coverage\\__init__.py": "ef24a48e91a099ca58a1fd9b5efa01b0bd76c21f63bd5febd444026281ec18c7",
|
||||
"src\\mcm26b\\evaluation\\__init__.py": "3d7d9103675e4731f65ceacaac76c97096e244d0902e37d62376ea60b0a42217",
|
||||
"src\\mcm26b\\geometry\\__init__.py": "c8f8d3e6320acb44fe9c14261116f8a668fdd59304e1d5b0318d8d50ea89b25c",
|
||||
"src\\mcm26b\\geometry\\__main__.py": "41967f321b05abe515d2f0c10839b94c1e5c55a4c760b17345e0815f62acd676",
|
||||
"src\\mcm26b\\geometry\\localization.py": "019a04a4205ca5cfb5832c7e2337e6ae3274ef9bdae1981c3764b8df8c2afd97",
|
||||
"src\\mcm26b\\geometry\\planning.py": "5d6a11b2c4633c4f27bb4a61f77f4fbd20cfdce653d839845a735f9f1d3be2d1",
|
||||
"src\\mcm26b\\particles.py": "c2cfabb07154883d4293f5c739b8ab06bd4b467c773365e1d4c153a0bd0fc30b",
|
||||
"src\\mcm26b\\planner\\__init__.py": "36620fb5d73b2b257bee1f7bc56f807b7180fc488950aa4c33d5354737f3568b",
|
||||
"src\\mcm26b\\planner\\bayes_loop.py": "b575206853e25e628ea64d2fe7b5ea165e88c696cf30bccc73f84e30a4bd6ac8",
|
||||
"src\\mcm26b\\planner\\seven.py": "cc143ce0703f231d8b5444ac6a2b2f4925cabf1556e58b0ea5166a510e6933f0",
|
||||
"src\\mcm26b\\protocol\\__init__.py": "67423a0fe7f3ee3c7b1c0439da9554dab4bc30a09c5f3720d69e11076a36de0c",
|
||||
"src\\mcm26b\\protocol\\client.py": "a486694b570bc00286ad30d4be04b01687ef3801d95154e75caa6209314dac36",
|
||||
"src\\mcm26b\\protocol\\log.py": "0eb51302a0bdfa3c680b7726d0be59cebe6fdc6197fd9643a4d5cc0646e34ac3",
|
||||
"src\\mcm26b\\protocol\\rules.py": "7941a4cddafd875dedf0c57aa90e640cb5e22201800d3eb300dac313db19e6a3",
|
||||
"src\\mcm26b\\protocol\\state.py": "dc4c50f38cc1014af848f21d3f972b2f51fba28b0feb3320ce85bf51389d3d34",
|
||||
"src\\mcm26b\\protocol\\timing.py": "49fb1ca99db9db273364ddb27281b95e6e76099c16ce7fccddccbfe105d604ac",
|
||||
"src\\mcm26b\\protocol\\transport.py": "668a8ab280e5e42a7994d7cedc0f487af19b140622d76b04da0dbbea3ad4940f",
|
||||
"src\\mcm26b\\sim\\__init__.py": "7adcbaab5b94d4006ff926306a43c1042182be14789026e71885ed69389a6d55",
|
||||
"src\\mcm26b\\sim\\playback.py": "073b74c149334604cd678c218e112f69d64fe907ef7c3b6f42b69470e48fbb7a",
|
||||
"src\\mcm26b\\sim\\scenes.py": "0647bd19409acb5160625dd39e71157aeb20f9e979e82a7fe86aaec75a1cbf32",
|
||||
"src\\mcm26b\\sim\\simulator.py": "553bf9fbb9fd4875a6ec68792e90a08287e5b87c749ffda9a7556b582a5ecba3",
|
||||
"src\\mcm26b\\sim\\transport.py": "889c06965fdb905f5d9fa8e947940ea68be216f60a487340c2f326b6e8a9a36d"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,257 @@
|
||||
{
|
||||
"config": {
|
||||
"field": {
|
||||
"omega_radius_m": 1800.0,
|
||||
"channel_min": 1,
|
||||
"channel_max": 20,
|
||||
"source_count_min": 10,
|
||||
"source_count_max": 16,
|
||||
"r_eff_min_m": 1000.0,
|
||||
"r_eff_max_m": 1500.0,
|
||||
"near_radius_m": 5.0,
|
||||
"clear_radius_m": 20.0,
|
||||
"bearing_error_half_deg": 1.0,
|
||||
"bearing_decimals": 2,
|
||||
"coord_abs_limit_m": 2000000.0,
|
||||
"directional_half_angle_deg": 90.0,
|
||||
"max_virtual_duration_s": 360000.0,
|
||||
"max_real_duration_s": 1200.0,
|
||||
"test_window_s": 1500.0
|
||||
},
|
||||
"cost": {
|
||||
"speed_mps": 5.0,
|
||||
"measure_s": 5.0,
|
||||
"switch_s": 1.0,
|
||||
"clear_success_s": 5.0,
|
||||
"clear_fail_s": 3.0
|
||||
},
|
||||
"session": {
|
||||
"arena_id": "default",
|
||||
"base_url": "http://127.0.0.1:2026",
|
||||
"robot_id_max_bytes": 64,
|
||||
"request_id_max_bytes": 128,
|
||||
"request_body_max_bytes": 65536,
|
||||
"connect_timeout_s": 5.0,
|
||||
"read_timeout_s": 15.0,
|
||||
"max_attempts": 3,
|
||||
"retry_backoff_s": 0.25,
|
||||
"reserve_exit_s": 60.0,
|
||||
"real_rtt_p95_s": 1.0,
|
||||
"self_test_real_budget_s": 1800.0
|
||||
},
|
||||
"search": {
|
||||
"grid_step_m": 700.0,
|
||||
"grid_half_cells": 3,
|
||||
"fallback_clear_grid_m": 20.0,
|
||||
"bearing_rounding_margin_deg": 0.005,
|
||||
"polygon_sides": 192,
|
||||
"witness_spacing_m": 60.0,
|
||||
"candidate_rings": [
|
||||
0.0,
|
||||
0.4,
|
||||
0.75,
|
||||
1.0
|
||||
],
|
||||
"candidate_angles": 12,
|
||||
"clear_margin_m": 0.5,
|
||||
"max_localize_steps": 8,
|
||||
"max_anomalies_per_channel": 3,
|
||||
"max_blocked_probes": 4,
|
||||
"fallback_max_cells": 400,
|
||||
"persistent_search": false,
|
||||
"virtual_reserve_s": 10000.0
|
||||
},
|
||||
"bayes": {
|
||||
"particle_spacing_m": 25.0,
|
||||
"score_mode": "entropy",
|
||||
"score_subsample": 800,
|
||||
"mc_representatives": 7,
|
||||
"lambda_move_s": 0.0105,
|
||||
"wide_rings": [
|
||||
1.0,
|
||||
1.5,
|
||||
2.0
|
||||
],
|
||||
"station_ring_radius_m": 1159.7,
|
||||
"two_opt_enabled": true,
|
||||
"two_opt_passes": 3,
|
||||
"grid_cert_enabled": true
|
||||
}
|
||||
},
|
||||
"source": "local_simulator_only",
|
||||
"rows": [
|
||||
{
|
||||
"case": "random-10-0",
|
||||
"valid": true,
|
||||
"virtual_s": 3534.694777,
|
||||
"measures": 123,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13823.5,
|
||||
"wall_s": 1.0671480999881169
|
||||
},
|
||||
{
|
||||
"case": "random-10-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3491.535921,
|
||||
"measures": 126,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13527.7,
|
||||
"wall_s": 1.187542100000428
|
||||
},
|
||||
{
|
||||
"case": "random-10-2",
|
||||
"valid": true,
|
||||
"virtual_s": 3206.547215,
|
||||
"measures": 118,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12317.7,
|
||||
"wall_s": 1.4321670999925118
|
||||
},
|
||||
{
|
||||
"case": "random-10-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3522.648147,
|
||||
"measures": 127,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13633.2,
|
||||
"wall_s": 0.9682273000071291
|
||||
},
|
||||
{
|
||||
"case": "random-10-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3384.25258,
|
||||
"measures": 114,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13326.3,
|
||||
"wall_s": 1.7609715999860782
|
||||
},
|
||||
{
|
||||
"case": "random-10-5",
|
||||
"valid": true,
|
||||
"virtual_s": 2958.257944,
|
||||
"measures": 107,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11376.3,
|
||||
"wall_s": 1.4250285000016447
|
||||
},
|
||||
{
|
||||
"case": "boundary-10",
|
||||
"valid": true,
|
||||
"virtual_s": 4472.993699,
|
||||
"measures": 143,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 17920.0,
|
||||
"wall_s": 0.5052678000065498
|
||||
},
|
||||
{
|
||||
"case": "random-16-0",
|
||||
"valid": true,
|
||||
"virtual_s": 4119.15033,
|
||||
"measures": 92,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 17505.8,
|
||||
"wall_s": 2.044811599989771
|
||||
},
|
||||
{
|
||||
"case": "random-16-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3739.922403,
|
||||
"measures": 93,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 15589.6,
|
||||
"wall_s": 2.6635076999955345
|
||||
},
|
||||
{
|
||||
"case": "random-16-2",
|
||||
"valid": true,
|
||||
"virtual_s": 3597.390398,
|
||||
"measures": 109,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 14377.0,
|
||||
"wall_s": 1.3540113999915775
|
||||
},
|
||||
{
|
||||
"case": "random-16-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3688.169478,
|
||||
"measures": 109,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 14885.8,
|
||||
"wall_s": 2.9790097000077367
|
||||
},
|
||||
{
|
||||
"case": "random-16-4",
|
||||
"valid": true,
|
||||
"virtual_s": 4406.22739,
|
||||
"measures": 129,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 17896.1,
|
||||
"wall_s": 2.47406759999285
|
||||
},
|
||||
{
|
||||
"case": "random-16-5",
|
||||
"valid": true,
|
||||
"virtual_s": 3724.696901,
|
||||
"measures": 112,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 14963.5,
|
||||
"wall_s": 2.3959249000035925
|
||||
},
|
||||
{
|
||||
"case": "boundary-16",
|
||||
"valid": true,
|
||||
"virtual_s": 5535.128195,
|
||||
"measures": 129,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 23465.6,
|
||||
"wall_s": 0.6980149000009988
|
||||
}
|
||||
],
|
||||
"mean_s": 3812.972527,
|
||||
"median_s": 3642.7799379999997,
|
||||
"max_s": 5535.128195,
|
||||
"valid": 14,
|
||||
"under_4000": 10,
|
||||
"source_sha256": {
|
||||
"src\\mcm26b\\__init__.py": "a1ea628e2b44a8b288c59fcda19a8f02b53f2d6fec675ef1e8c481ffdcbd7f35",
|
||||
"src\\mcm26b\\belief\\__init__.py": "8613467122928e70dd2b07f14e1009a1edddb1d495d44f063f222fb118f78ba5",
|
||||
"src\\mcm26b\\cli.py": "2fac81a16cecdf23ce1f91031009cd2817fd3f2b66cb5f66d0a31bdd16088a04",
|
||||
"src\\mcm26b\\config.py": "781a096f20f5e17446b6faeb5efaea23997cbf3fc1e7a435118d610f0b1443dd",
|
||||
"src\\mcm26b\\coverage\\__init__.py": "ef24a48e91a099ca58a1fd9b5efa01b0bd76c21f63bd5febd444026281ec18c7",
|
||||
"src\\mcm26b\\evaluation\\__init__.py": "3d7d9103675e4731f65ceacaac76c97096e244d0902e37d62376ea60b0a42217",
|
||||
"src\\mcm26b\\geometry\\__init__.py": "c8f8d3e6320acb44fe9c14261116f8a668fdd59304e1d5b0318d8d50ea89b25c",
|
||||
"src\\mcm26b\\geometry\\__main__.py": "41967f321b05abe515d2f0c10839b94c1e5c55a4c760b17345e0815f62acd676",
|
||||
"src\\mcm26b\\geometry\\localization.py": "019a04a4205ca5cfb5832c7e2337e6ae3274ef9bdae1981c3764b8df8c2afd97",
|
||||
"src\\mcm26b\\geometry\\planning.py": "5d6a11b2c4633c4f27bb4a61f77f4fbd20cfdce653d839845a735f9f1d3be2d1",
|
||||
"src\\mcm26b\\particles.py": "c2cfabb07154883d4293f5c739b8ab06bd4b467c773365e1d4c153a0bd0fc30b",
|
||||
"src\\mcm26b\\planner\\__init__.py": "bdd36737b2a8562612634d45290bf7165ee81c80fa8e7bcb9fcc9f4001390cda",
|
||||
"src\\mcm26b\\planner\\bayes_loop.py": "068cde2bbcbea0333193b5d3d6ec850d8e310fb1368f682fcaa4f5f0fd90379b",
|
||||
"src\\mcm26b\\planner\\seven.py": "cc143ce0703f231d8b5444ac6a2b2f4925cabf1556e58b0ea5166a510e6933f0",
|
||||
"src\\mcm26b\\protocol\\__init__.py": "67423a0fe7f3ee3c7b1c0439da9554dab4bc30a09c5f3720d69e11076a36de0c",
|
||||
"src\\mcm26b\\protocol\\client.py": "a486694b570bc00286ad30d4be04b01687ef3801d95154e75caa6209314dac36",
|
||||
"src\\mcm26b\\protocol\\log.py": "0eb51302a0bdfa3c680b7726d0be59cebe6fdc6197fd9643a4d5cc0646e34ac3",
|
||||
"src\\mcm26b\\protocol\\rules.py": "7941a4cddafd875dedf0c57aa90e640cb5e22201800d3eb300dac313db19e6a3",
|
||||
"src\\mcm26b\\protocol\\state.py": "dc4c50f38cc1014af848f21d3f972b2f51fba28b0feb3320ce85bf51389d3d34",
|
||||
"src\\mcm26b\\protocol\\timing.py": "49fb1ca99db9db273364ddb27281b95e6e76099c16ce7fccddccbfe105d604ac",
|
||||
"src\\mcm26b\\protocol\\transport.py": "668a8ab280e5e42a7994d7cedc0f487af19b140622d76b04da0dbbea3ad4940f",
|
||||
"src\\mcm26b\\sim\\__init__.py": "7adcbaab5b94d4006ff926306a43c1042182be14789026e71885ed69389a6d55",
|
||||
"src\\mcm26b\\sim\\playback.py": "073b74c149334604cd678c218e112f69d64fe907ef7c3b6f42b69470e48fbb7a",
|
||||
"src\\mcm26b\\sim\\scenes.py": "0647bd19409acb5160625dd39e71157aeb20f9e979e82a7fe86aaec75a1cbf32",
|
||||
"src\\mcm26b\\sim\\simulator.py": "553bf9fbb9fd4875a6ec68792e90a08287e5b87c749ffda9a7556b582a5ecba3",
|
||||
"src\\mcm26b\\sim\\transport.py": "889c06965fdb905f5d9fa8e947940ea68be216f60a487340c2f326b6e8a9a36d"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"config": {
|
||||
"field": {
|
||||
"omega_radius_m": 1800.0,
|
||||
"channel_min": 1,
|
||||
"channel_max": 20,
|
||||
"source_count_min": 10,
|
||||
"source_count_max": 16,
|
||||
"r_eff_min_m": 1000.0,
|
||||
"r_eff_max_m": 1500.0,
|
||||
"near_radius_m": 5.0,
|
||||
"clear_radius_m": 20.0,
|
||||
"bearing_error_half_deg": 1.0,
|
||||
"bearing_decimals": 2,
|
||||
"coord_abs_limit_m": 2000000.0,
|
||||
"directional_half_angle_deg": 90.0,
|
||||
"max_virtual_duration_s": 360000.0,
|
||||
"max_real_duration_s": 1200.0,
|
||||
"test_window_s": 1500.0
|
||||
},
|
||||
"cost": {
|
||||
"speed_mps": 5.0,
|
||||
"measure_s": 5.0,
|
||||
"switch_s": 1.0,
|
||||
"clear_success_s": 5.0,
|
||||
"clear_fail_s": 3.0
|
||||
},
|
||||
"session": {
|
||||
"arena_id": "default",
|
||||
"base_url": "http://127.0.0.1:2026",
|
||||
"robot_id_max_bytes": 64,
|
||||
"request_id_max_bytes": 128,
|
||||
"request_body_max_bytes": 65536,
|
||||
"connect_timeout_s": 5.0,
|
||||
"read_timeout_s": 15.0,
|
||||
"max_attempts": 3,
|
||||
"retry_backoff_s": 0.25,
|
||||
"reserve_exit_s": 60.0,
|
||||
"real_rtt_p95_s": 1.0,
|
||||
"self_test_real_budget_s": 1800.0
|
||||
},
|
||||
"search": {
|
||||
"grid_step_m": 700.0,
|
||||
"grid_half_cells": 3,
|
||||
"fallback_clear_grid_m": 20.0,
|
||||
"bearing_rounding_margin_deg": 0.005,
|
||||
"polygon_sides": 192,
|
||||
"witness_spacing_m": 60.0,
|
||||
"candidate_rings": [
|
||||
0.0,
|
||||
0.4,
|
||||
0.75,
|
||||
1.0
|
||||
],
|
||||
"candidate_angles": 12,
|
||||
"clear_margin_m": 0.5,
|
||||
"max_localize_steps": 8,
|
||||
"max_anomalies_per_channel": 3,
|
||||
"max_blocked_probes": 4,
|
||||
"fallback_max_cells": 400,
|
||||
"persistent_search": false,
|
||||
"virtual_reserve_s": 10000.0
|
||||
},
|
||||
"bayes": {
|
||||
"particle_spacing_m": 25.0,
|
||||
"score_mode": "entropy",
|
||||
"score_subsample": 800,
|
||||
"mc_representatives": 7,
|
||||
"lambda_move_s": 0.0105,
|
||||
"wide_rings": [
|
||||
1.0,
|
||||
1.5,
|
||||
2.0
|
||||
],
|
||||
"station_ring_radius_m": 1159.7,
|
||||
"two_opt_enabled": true,
|
||||
"two_opt_passes": 3,
|
||||
"grid_cert_enabled": true,
|
||||
"opportunistic_measure": true,
|
||||
"opportunistic_radius_ratio": 0.65
|
||||
}
|
||||
},
|
||||
"source": "local_simulator_only",
|
||||
"rows": [
|
||||
{
|
||||
"case": "random-10-0",
|
||||
"valid": true,
|
||||
"virtual_s": 2796.517992,
|
||||
"measures": 116,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 10302.6,
|
||||
"wall_s": 0.6851706000015838
|
||||
},
|
||||
{
|
||||
"case": "random-10-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3383.633624,
|
||||
"measures": 118,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13183.2,
|
||||
"wall_s": 1.3136940999975195
|
||||
},
|
||||
{
|
||||
"case": "random-10-2",
|
||||
"valid": true,
|
||||
"virtual_s": 2903.420125,
|
||||
"measures": 111,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 10972.1,
|
||||
"wall_s": 1.4448951999947894
|
||||
},
|
||||
{
|
||||
"case": "random-10-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3183.873778,
|
||||
"measures": 120,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12129.4,
|
||||
"wall_s": 1.54364629999327
|
||||
},
|
||||
{
|
||||
"case": "random-10-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3248.440388,
|
||||
"measures": 112,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12677.2,
|
||||
"wall_s": 1.9964945999963675
|
||||
},
|
||||
{
|
||||
"case": "random-10-5",
|
||||
"valid": true,
|
||||
"virtual_s": 2962.211049,
|
||||
"measures": 109,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11331.1,
|
||||
"wall_s": 1.4274002000020118
|
||||
},
|
||||
{
|
||||
"case": "boundary-10",
|
||||
"valid": true,
|
||||
"virtual_s": 4169.474072,
|
||||
"measures": 142,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 16412.4,
|
||||
"wall_s": 0.5755983000126434
|
||||
},
|
||||
{
|
||||
"case": "random-16-0",
|
||||
"valid": true,
|
||||
"virtual_s": 3691.667793,
|
||||
"measures": 104,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 14978.3,
|
||||
"wall_s": 2.8522586999897612
|
||||
},
|
||||
{
|
||||
"case": "random-16-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3893.998179,
|
||||
"measures": 97,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 16190.0,
|
||||
"wall_s": 2.773552300001029
|
||||
},
|
||||
{
|
||||
"case": "random-16-2",
|
||||
"valid": true,
|
||||
"virtual_s": 3257.127865,
|
||||
"measures": 110,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12620.6,
|
||||
"wall_s": 1.731503300004988
|
||||
},
|
||||
{
|
||||
"case": "random-16-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3244.820414,
|
||||
"measures": 94,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13039.1,
|
||||
"wall_s": 2.862451599998167
|
||||
},
|
||||
{
|
||||
"case": "random-16-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3258.651071,
|
||||
"measures": 100,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12938.3,
|
||||
"wall_s": 1.7853647000010824
|
||||
},
|
||||
{
|
||||
"case": "random-16-5",
|
||||
"valid": true,
|
||||
"virtual_s": 3627.497192,
|
||||
"measures": 101,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 14767.5,
|
||||
"wall_s": 1.812008799999603
|
||||
},
|
||||
{
|
||||
"case": "boundary-16",
|
||||
"valid": true,
|
||||
"virtual_s": 4637.818558,
|
||||
"measures": 139,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 18649.1,
|
||||
"wall_s": 0.648526299992227
|
||||
}
|
||||
],
|
||||
"mean_s": 3447.082292857143,
|
||||
"median_s": 3257.889468,
|
||||
"max_s": 4637.818558,
|
||||
"valid": 14,
|
||||
"under_4000": 12,
|
||||
"source_sha256": {
|
||||
"src\\mcm26b\\__init__.py": "a1ea628e2b44a8b288c59fcda19a8f02b53f2d6fec675ef1e8c481ffdcbd7f35",
|
||||
"src\\mcm26b\\belief\\__init__.py": "8613467122928e70dd2b07f14e1009a1edddb1d495d44f063f222fb118f78ba5",
|
||||
"src\\mcm26b\\cli.py": "2fac81a16cecdf23ce1f91031009cd2817fd3f2b66cb5f66d0a31bdd16088a04",
|
||||
"src\\mcm26b\\config.py": "deeb25419a7c7b7fba81b943fa25c32255d6607e6666f172c56893fe58addea0",
|
||||
"src\\mcm26b\\coverage\\__init__.py": "ef24a48e91a099ca58a1fd9b5efa01b0bd76c21f63bd5febd444026281ec18c7",
|
||||
"src\\mcm26b\\evaluation\\__init__.py": "3d7d9103675e4731f65ceacaac76c97096e244d0902e37d62376ea60b0a42217",
|
||||
"src\\mcm26b\\geometry\\__init__.py": "c8f8d3e6320acb44fe9c14261116f8a668fdd59304e1d5b0318d8d50ea89b25c",
|
||||
"src\\mcm26b\\geometry\\__main__.py": "41967f321b05abe515d2f0c10839b94c1e5c55a4c760b17345e0815f62acd676",
|
||||
"src\\mcm26b\\geometry\\localization.py": "019a04a4205ca5cfb5832c7e2337e6ae3274ef9bdae1981c3764b8df8c2afd97",
|
||||
"src\\mcm26b\\geometry\\planning.py": "5d6a11b2c4633c4f27bb4a61f77f4fbd20cfdce653d839845a735f9f1d3be2d1",
|
||||
"src\\mcm26b\\particles.py": "c2cfabb07154883d4293f5c739b8ab06bd4b467c773365e1d4c153a0bd0fc30b",
|
||||
"src\\mcm26b\\planner\\__init__.py": "36620fb5d73b2b257bee1f7bc56f807b7180fc488950aa4c33d5354737f3568b",
|
||||
"src\\mcm26b\\planner\\bayes_loop.py": "ea86e20b6edb31ab51534c1bfafd0189b058cf822d83139ee5de6e63655cb01a",
|
||||
"src\\mcm26b\\planner\\seven.py": "cc143ce0703f231d8b5444ac6a2b2f4925cabf1556e58b0ea5166a510e6933f0",
|
||||
"src\\mcm26b\\protocol\\__init__.py": "67423a0fe7f3ee3c7b1c0439da9554dab4bc30a09c5f3720d69e11076a36de0c",
|
||||
"src\\mcm26b\\protocol\\client.py": "a486694b570bc00286ad30d4be04b01687ef3801d95154e75caa6209314dac36",
|
||||
"src\\mcm26b\\protocol\\log.py": "0eb51302a0bdfa3c680b7726d0be59cebe6fdc6197fd9643a4d5cc0646e34ac3",
|
||||
"src\\mcm26b\\protocol\\rules.py": "7941a4cddafd875dedf0c57aa90e640cb5e22201800d3eb300dac313db19e6a3",
|
||||
"src\\mcm26b\\protocol\\state.py": "dc4c50f38cc1014af848f21d3f972b2f51fba28b0feb3320ce85bf51389d3d34",
|
||||
"src\\mcm26b\\protocol\\timing.py": "49fb1ca99db9db273364ddb27281b95e6e76099c16ce7fccddccbfe105d604ac",
|
||||
"src\\mcm26b\\protocol\\transport.py": "668a8ab280e5e42a7994d7cedc0f487af19b140622d76b04da0dbbea3ad4940f",
|
||||
"src\\mcm26b\\sim\\__init__.py": "7adcbaab5b94d4006ff926306a43c1042182be14789026e71885ed69389a6d55",
|
||||
"src\\mcm26b\\sim\\playback.py": "073b74c149334604cd678c218e112f69d64fe907ef7c3b6f42b69470e48fbb7a",
|
||||
"src\\mcm26b\\sim\\scenes.py": "0647bd19409acb5160625dd39e71157aeb20f9e979e82a7fe86aaec75a1cbf32",
|
||||
"src\\mcm26b\\sim\\simulator.py": "553bf9fbb9fd4875a6ec68792e90a08287e5b87c749ffda9a7556b582a5ecba3",
|
||||
"src\\mcm26b\\sim\\transport.py": "889c06965fdb905f5d9fa8e947940ea68be216f60a487340c2f326b6e8a9a36d"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"config": {
|
||||
"field": {
|
||||
"omega_radius_m": 1800.0,
|
||||
"channel_min": 1,
|
||||
"channel_max": 20,
|
||||
"source_count_min": 10,
|
||||
"source_count_max": 16,
|
||||
"r_eff_min_m": 1000.0,
|
||||
"r_eff_max_m": 1500.0,
|
||||
"near_radius_m": 5.0,
|
||||
"clear_radius_m": 20.0,
|
||||
"bearing_error_half_deg": 1.0,
|
||||
"bearing_decimals": 2,
|
||||
"coord_abs_limit_m": 2000000.0,
|
||||
"directional_half_angle_deg": 90.0,
|
||||
"max_virtual_duration_s": 360000.0,
|
||||
"max_real_duration_s": 1200.0,
|
||||
"test_window_s": 1500.0
|
||||
},
|
||||
"cost": {
|
||||
"speed_mps": 5.0,
|
||||
"measure_s": 5.0,
|
||||
"switch_s": 1.0,
|
||||
"clear_success_s": 5.0,
|
||||
"clear_fail_s": 3.0
|
||||
},
|
||||
"session": {
|
||||
"arena_id": "default",
|
||||
"base_url": "http://127.0.0.1:2026",
|
||||
"robot_id_max_bytes": 64,
|
||||
"request_id_max_bytes": 128,
|
||||
"request_body_max_bytes": 65536,
|
||||
"connect_timeout_s": 5.0,
|
||||
"read_timeout_s": 15.0,
|
||||
"max_attempts": 3,
|
||||
"retry_backoff_s": 0.25,
|
||||
"reserve_exit_s": 60.0,
|
||||
"real_rtt_p95_s": 1.0,
|
||||
"self_test_real_budget_s": 1800.0
|
||||
},
|
||||
"search": {
|
||||
"grid_step_m": 700.0,
|
||||
"grid_half_cells": 3,
|
||||
"fallback_clear_grid_m": 20.0,
|
||||
"bearing_rounding_margin_deg": 0.005,
|
||||
"polygon_sides": 192,
|
||||
"witness_spacing_m": 60.0,
|
||||
"candidate_rings": [
|
||||
0.0,
|
||||
0.4,
|
||||
0.75,
|
||||
1.0
|
||||
],
|
||||
"candidate_angles": 12,
|
||||
"clear_margin_m": 0.5,
|
||||
"max_localize_steps": 8,
|
||||
"max_anomalies_per_channel": 3,
|
||||
"max_blocked_probes": 4,
|
||||
"fallback_max_cells": 400,
|
||||
"persistent_search": false,
|
||||
"virtual_reserve_s": 10000.0
|
||||
},
|
||||
"bayes": {
|
||||
"particle_spacing_m": 25.0,
|
||||
"score_mode": "entropy",
|
||||
"score_subsample": 800,
|
||||
"mc_representatives": 7,
|
||||
"lambda_move_s": 0.0105,
|
||||
"wide_rings": [
|
||||
1.0,
|
||||
1.5,
|
||||
2.0
|
||||
],
|
||||
"station_ring_radius_m": 1159.7,
|
||||
"two_opt_enabled": true,
|
||||
"two_opt_passes": 3,
|
||||
"grid_cert_enabled": true,
|
||||
"opportunistic_measure": true,
|
||||
"opportunistic_radius_ratio": 0.65
|
||||
}
|
||||
},
|
||||
"source": "local_simulator_only",
|
||||
"rows": [
|
||||
{
|
||||
"case": "random-10-0",
|
||||
"valid": true,
|
||||
"virtual_s": 2781.468909,
|
||||
"measures": 115,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 10252.3,
|
||||
"wall_s": 0.6727236000006087
|
||||
},
|
||||
{
|
||||
"case": "random-10-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3373.375027,
|
||||
"measures": 118,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13121.9,
|
||||
"wall_s": 1.3332279000023846
|
||||
},
|
||||
{
|
||||
"case": "random-10-2",
|
||||
"valid": true,
|
||||
"virtual_s": 2971.246636,
|
||||
"measures": 112,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11266.2,
|
||||
"wall_s": 1.5427381999907084
|
||||
},
|
||||
{
|
||||
"case": "random-10-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3183.51691,
|
||||
"measures": 120,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12127.6,
|
||||
"wall_s": 1.4840739999926882
|
||||
},
|
||||
{
|
||||
"case": "random-10-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3219.028475,
|
||||
"measures": 112,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12530.1,
|
||||
"wall_s": 1.9207030000106897
|
||||
},
|
||||
{
|
||||
"case": "random-10-5",
|
||||
"valid": true,
|
||||
"virtual_s": 2992.69413,
|
||||
"measures": 109,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11488.5,
|
||||
"wall_s": 1.4631770999985747
|
||||
},
|
||||
{
|
||||
"case": "boundary-10",
|
||||
"valid": true,
|
||||
"virtual_s": 4145.190154,
|
||||
"measures": 142,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 16291.0,
|
||||
"wall_s": 0.5581967000034638
|
||||
},
|
||||
{
|
||||
"case": "random-16-0",
|
||||
"valid": true,
|
||||
"virtual_s": 2859.541671,
|
||||
"measures": 85,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11372.7,
|
||||
"wall_s": 2.1188361999957124
|
||||
},
|
||||
{
|
||||
"case": "random-16-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3877.191308,
|
||||
"measures": 97,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 16106.0,
|
||||
"wall_s": 2.2593173000059323
|
||||
},
|
||||
{
|
||||
"case": "random-16-2",
|
||||
"valid": true,
|
||||
"virtual_s": 3191.726738,
|
||||
"measures": 110,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12283.6,
|
||||
"wall_s": 1.4188941000029445
|
||||
},
|
||||
{
|
||||
"case": "random-16-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3271.530271,
|
||||
"measures": 95,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13142.7,
|
||||
"wall_s": 2.956349500003853
|
||||
},
|
||||
{
|
||||
"case": "random-16-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3260.063212,
|
||||
"measures": 99,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12980.3,
|
||||
"wall_s": 1.8893916000088211
|
||||
},
|
||||
{
|
||||
"case": "random-16-5",
|
||||
"valid": true,
|
||||
"virtual_s": 3720.822867,
|
||||
"measures": 117,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 14729.1,
|
||||
"wall_s": 1.7041139000066323
|
||||
},
|
||||
{
|
||||
"case": "boundary-16",
|
||||
"valid": true,
|
||||
"virtual_s": 4624.968743,
|
||||
"measures": 141,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 18534.8,
|
||||
"wall_s": 0.6890837999962969
|
||||
}
|
||||
],
|
||||
"mean_s": 3390.8832179285714,
|
||||
"median_s": 3239.5458435,
|
||||
"max_s": 4624.968743,
|
||||
"valid": 14,
|
||||
"under_4000": 12,
|
||||
"source_sha256": {
|
||||
"src\\mcm26b\\__init__.py": "a1ea628e2b44a8b288c59fcda19a8f02b53f2d6fec675ef1e8c481ffdcbd7f35",
|
||||
"src\\mcm26b\\belief\\__init__.py": "8613467122928e70dd2b07f14e1009a1edddb1d495d44f063f222fb118f78ba5",
|
||||
"src\\mcm26b\\cli.py": "2fac81a16cecdf23ce1f91031009cd2817fd3f2b66cb5f66d0a31bdd16088a04",
|
||||
"src\\mcm26b\\config.py": "c684a887e103da3d163d671579c63a64f694015c04690d73a4777dc94084b915",
|
||||
"src\\mcm26b\\coverage\\__init__.py": "ef24a48e91a099ca58a1fd9b5efa01b0bd76c21f63bd5febd444026281ec18c7",
|
||||
"src\\mcm26b\\evaluation\\__init__.py": "3d7d9103675e4731f65ceacaac76c97096e244d0902e37d62376ea60b0a42217",
|
||||
"src\\mcm26b\\geometry\\__init__.py": "c8f8d3e6320acb44fe9c14261116f8a668fdd59304e1d5b0318d8d50ea89b25c",
|
||||
"src\\mcm26b\\geometry\\__main__.py": "41967f321b05abe515d2f0c10839b94c1e5c55a4c760b17345e0815f62acd676",
|
||||
"src\\mcm26b\\geometry\\localization.py": "019a04a4205ca5cfb5832c7e2337e6ae3274ef9bdae1981c3764b8df8c2afd97",
|
||||
"src\\mcm26b\\geometry\\planning.py": "5d6a11b2c4633c4f27bb4a61f77f4fbd20cfdce653d839845a735f9f1d3be2d1",
|
||||
"src\\mcm26b\\particles.py": "c2cfabb07154883d4293f5c739b8ab06bd4b467c773365e1d4c153a0bd0fc30b",
|
||||
"src\\mcm26b\\planner\\__init__.py": "36620fb5d73b2b257bee1f7bc56f807b7180fc488950aa4c33d5354737f3568b",
|
||||
"src\\mcm26b\\planner\\bayes_loop.py": "a2852d3c923b96ce78ba4613ff4c53a962643625076208c4ae79c3e72298c18a",
|
||||
"src\\mcm26b\\planner\\seven.py": "4787372aea85561874eae35d4cb38e1e556c4a863a5e803ac5d88742775d3656",
|
||||
"src\\mcm26b\\protocol\\__init__.py": "67423a0fe7f3ee3c7b1c0439da9554dab4bc30a09c5f3720d69e11076a36de0c",
|
||||
"src\\mcm26b\\protocol\\client.py": "a486694b570bc00286ad30d4be04b01687ef3801d95154e75caa6209314dac36",
|
||||
"src\\mcm26b\\protocol\\log.py": "0eb51302a0bdfa3c680b7726d0be59cebe6fdc6197fd9643a4d5cc0646e34ac3",
|
||||
"src\\mcm26b\\protocol\\rules.py": "7941a4cddafd875dedf0c57aa90e640cb5e22201800d3eb300dac313db19e6a3",
|
||||
"src\\mcm26b\\protocol\\state.py": "dc4c50f38cc1014af848f21d3f972b2f51fba28b0feb3320ce85bf51389d3d34",
|
||||
"src\\mcm26b\\protocol\\timing.py": "49fb1ca99db9db273364ddb27281b95e6e76099c16ce7fccddccbfe105d604ac",
|
||||
"src\\mcm26b\\protocol\\transport.py": "668a8ab280e5e42a7994d7cedc0f487af19b140622d76b04da0dbbea3ad4940f",
|
||||
"src\\mcm26b\\sim\\__init__.py": "7adcbaab5b94d4006ff926306a43c1042182be14789026e71885ed69389a6d55",
|
||||
"src\\mcm26b\\sim\\playback.py": "073b74c149334604cd678c218e112f69d64fe907ef7c3b6f42b69470e48fbb7a",
|
||||
"src\\mcm26b\\sim\\scenes.py": "0647bd19409acb5160625dd39e71157aeb20f9e979e82a7fe86aaec75a1cbf32",
|
||||
"src\\mcm26b\\sim\\simulator.py": "553bf9fbb9fd4875a6ec68792e90a08287e5b87c749ffda9a7556b582a5ecba3",
|
||||
"src\\mcm26b\\sim\\transport.py": "889c06965fdb905f5d9fa8e947940ea68be216f60a487340c2f326b6e8a9a36d"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"config": {
|
||||
"field": {
|
||||
"omega_radius_m": 1800.0,
|
||||
"channel_min": 1,
|
||||
"channel_max": 20,
|
||||
"source_count_min": 10,
|
||||
"source_count_max": 16,
|
||||
"r_eff_min_m": 1000.0,
|
||||
"r_eff_max_m": 1500.0,
|
||||
"near_radius_m": 5.0,
|
||||
"clear_radius_m": 20.0,
|
||||
"bearing_error_half_deg": 1.0,
|
||||
"bearing_decimals": 2,
|
||||
"coord_abs_limit_m": 2000000.0,
|
||||
"directional_half_angle_deg": 90.0,
|
||||
"max_virtual_duration_s": 360000.0,
|
||||
"max_real_duration_s": 1200.0,
|
||||
"test_window_s": 1500.0
|
||||
},
|
||||
"cost": {
|
||||
"speed_mps": 5.0,
|
||||
"measure_s": 5.0,
|
||||
"switch_s": 1.0,
|
||||
"clear_success_s": 5.0,
|
||||
"clear_fail_s": 3.0
|
||||
},
|
||||
"session": {
|
||||
"arena_id": "default",
|
||||
"base_url": "http://127.0.0.1:2026",
|
||||
"robot_id_max_bytes": 64,
|
||||
"request_id_max_bytes": 128,
|
||||
"request_body_max_bytes": 65536,
|
||||
"connect_timeout_s": 5.0,
|
||||
"read_timeout_s": 15.0,
|
||||
"max_attempts": 3,
|
||||
"retry_backoff_s": 0.25,
|
||||
"reserve_exit_s": 60.0,
|
||||
"real_rtt_p95_s": 1.0,
|
||||
"self_test_real_budget_s": 1800.0
|
||||
},
|
||||
"search": {
|
||||
"grid_step_m": 700.0,
|
||||
"grid_half_cells": 3,
|
||||
"fallback_clear_grid_m": 20.0,
|
||||
"bearing_rounding_margin_deg": 0.005,
|
||||
"polygon_sides": 192,
|
||||
"witness_spacing_m": 60.0,
|
||||
"candidate_rings": [
|
||||
0.0,
|
||||
0.4,
|
||||
0.75,
|
||||
1.0
|
||||
],
|
||||
"candidate_angles": 12,
|
||||
"clear_margin_m": 0.5,
|
||||
"max_localize_steps": 8,
|
||||
"max_anomalies_per_channel": 3,
|
||||
"max_blocked_probes": 4,
|
||||
"fallback_max_cells": 400,
|
||||
"persistent_search": false,
|
||||
"virtual_reserve_s": 10000.0
|
||||
},
|
||||
"bayes": {
|
||||
"particle_spacing_m": 25.0,
|
||||
"score_mode": "entropy",
|
||||
"score_subsample": 800,
|
||||
"mc_representatives": 7,
|
||||
"lambda_move_s": 0.0105,
|
||||
"wide_rings": [
|
||||
1.0,
|
||||
1.5,
|
||||
2.0
|
||||
],
|
||||
"station_ring_radius_m": 1159.7,
|
||||
"two_opt_enabled": true,
|
||||
"two_opt_passes": 3,
|
||||
"grid_cert_enabled": true,
|
||||
"opportunistic_measure": true,
|
||||
"opportunistic_radius_ratio": 0.65
|
||||
}
|
||||
},
|
||||
"source": "local_simulator_only",
|
||||
"rows": [
|
||||
{
|
||||
"case": "random-10-0",
|
||||
"valid": true,
|
||||
"virtual_s": 2781.468909,
|
||||
"measures": 115,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 10252.3,
|
||||
"wall_s": 0.6616155999945477
|
||||
},
|
||||
{
|
||||
"case": "random-10-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3373.375027,
|
||||
"measures": 118,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13121.9,
|
||||
"wall_s": 1.2827579000004334
|
||||
},
|
||||
{
|
||||
"case": "random-10-2",
|
||||
"valid": true,
|
||||
"virtual_s": 2971.246636,
|
||||
"measures": 112,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11266.2,
|
||||
"wall_s": 1.474124700005632
|
||||
},
|
||||
{
|
||||
"case": "random-10-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3183.51691,
|
||||
"measures": 120,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12127.6,
|
||||
"wall_s": 1.4255466000031447
|
||||
},
|
||||
{
|
||||
"case": "random-10-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3219.028475,
|
||||
"measures": 112,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12530.1,
|
||||
"wall_s": 1.8383665000001201
|
||||
},
|
||||
{
|
||||
"case": "random-10-5",
|
||||
"valid": true,
|
||||
"virtual_s": 2992.69413,
|
||||
"measures": 109,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11488.5,
|
||||
"wall_s": 1.3896775000030175
|
||||
},
|
||||
{
|
||||
"case": "boundary-10",
|
||||
"valid": true,
|
||||
"virtual_s": 4145.190154,
|
||||
"measures": 142,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 16291.0,
|
||||
"wall_s": 0.5317590000049677
|
||||
},
|
||||
{
|
||||
"case": "random-16-0",
|
||||
"valid": true,
|
||||
"virtual_s": 2859.541671,
|
||||
"measures": 85,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11372.7,
|
||||
"wall_s": 2.028615700008231
|
||||
},
|
||||
{
|
||||
"case": "random-16-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3877.191308,
|
||||
"measures": 97,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 16106.0,
|
||||
"wall_s": 2.1717706000054022
|
||||
},
|
||||
{
|
||||
"case": "random-16-2",
|
||||
"valid": true,
|
||||
"virtual_s": 3191.726738,
|
||||
"measures": 110,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12283.6,
|
||||
"wall_s": 1.3410574000008637
|
||||
},
|
||||
{
|
||||
"case": "random-16-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3271.530271,
|
||||
"measures": 95,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13142.7,
|
||||
"wall_s": 2.7753489000024274
|
||||
},
|
||||
{
|
||||
"case": "random-16-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3260.063212,
|
||||
"measures": 99,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12980.3,
|
||||
"wall_s": 1.8296510000072885
|
||||
},
|
||||
{
|
||||
"case": "random-16-5",
|
||||
"valid": true,
|
||||
"virtual_s": 3720.822867,
|
||||
"measures": 117,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 14729.1,
|
||||
"wall_s": 1.6178049000009196
|
||||
},
|
||||
{
|
||||
"case": "boundary-16",
|
||||
"valid": true,
|
||||
"virtual_s": 4624.968743,
|
||||
"measures": 141,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 18534.8,
|
||||
"wall_s": 0.6610209999926155
|
||||
}
|
||||
],
|
||||
"mean_s": 3390.8832179285714,
|
||||
"median_s": 3239.5458435,
|
||||
"max_s": 4624.968743,
|
||||
"valid": 14,
|
||||
"under_4000": 12,
|
||||
"source_sha256": {
|
||||
"src\\mcm26b\\__init__.py": "a1ea628e2b44a8b288c59fcda19a8f02b53f2d6fec675ef1e8c481ffdcbd7f35",
|
||||
"src\\mcm26b\\belief\\__init__.py": "8613467122928e70dd2b07f14e1009a1edddb1d495d44f063f222fb118f78ba5",
|
||||
"src\\mcm26b\\cli.py": "2fac81a16cecdf23ce1f91031009cd2817fd3f2b66cb5f66d0a31bdd16088a04",
|
||||
"src\\mcm26b\\config.py": "deeb25419a7c7b7fba81b943fa25c32255d6607e6666f172c56893fe58addea0",
|
||||
"src\\mcm26b\\coverage\\__init__.py": "ef24a48e91a099ca58a1fd9b5efa01b0bd76c21f63bd5febd444026281ec18c7",
|
||||
"src\\mcm26b\\evaluation\\__init__.py": "3d7d9103675e4731f65ceacaac76c97096e244d0902e37d62376ea60b0a42217",
|
||||
"src\\mcm26b\\geometry\\__init__.py": "c8f8d3e6320acb44fe9c14261116f8a668fdd59304e1d5b0318d8d50ea89b25c",
|
||||
"src\\mcm26b\\geometry\\__main__.py": "41967f321b05abe515d2f0c10839b94c1e5c55a4c760b17345e0815f62acd676",
|
||||
"src\\mcm26b\\geometry\\localization.py": "019a04a4205ca5cfb5832c7e2337e6ae3274ef9bdae1981c3764b8df8c2afd97",
|
||||
"src\\mcm26b\\geometry\\planning.py": "5d6a11b2c4633c4f27bb4a61f77f4fbd20cfdce653d839845a735f9f1d3be2d1",
|
||||
"src\\mcm26b\\particles.py": "c2cfabb07154883d4293f5c739b8ab06bd4b467c773365e1d4c153a0bd0fc30b",
|
||||
"src\\mcm26b\\planner\\__init__.py": "36620fb5d73b2b257bee1f7bc56f807b7180fc488950aa4c33d5354737f3568b",
|
||||
"src\\mcm26b\\planner\\bayes_loop.py": "9bb2e46302aedc3d5b5eb8bb4167003624f111ee30e3af4b153af21a7855c145",
|
||||
"src\\mcm26b\\planner\\seven.py": "cc143ce0703f231d8b5444ac6a2b2f4925cabf1556e58b0ea5166a510e6933f0",
|
||||
"src\\mcm26b\\protocol\\__init__.py": "67423a0fe7f3ee3c7b1c0439da9554dab4bc30a09c5f3720d69e11076a36de0c",
|
||||
"src\\mcm26b\\protocol\\client.py": "a486694b570bc00286ad30d4be04b01687ef3801d95154e75caa6209314dac36",
|
||||
"src\\mcm26b\\protocol\\log.py": "0eb51302a0bdfa3c680b7726d0be59cebe6fdc6197fd9643a4d5cc0646e34ac3",
|
||||
"src\\mcm26b\\protocol\\rules.py": "7941a4cddafd875dedf0c57aa90e640cb5e22201800d3eb300dac313db19e6a3",
|
||||
"src\\mcm26b\\protocol\\state.py": "dc4c50f38cc1014af848f21d3f972b2f51fba28b0feb3320ce85bf51389d3d34",
|
||||
"src\\mcm26b\\protocol\\timing.py": "49fb1ca99db9db273364ddb27281b95e6e76099c16ce7fccddccbfe105d604ac",
|
||||
"src\\mcm26b\\protocol\\transport.py": "668a8ab280e5e42a7994d7cedc0f487af19b140622d76b04da0dbbea3ad4940f",
|
||||
"src\\mcm26b\\sim\\__init__.py": "7adcbaab5b94d4006ff926306a43c1042182be14789026e71885ed69389a6d55",
|
||||
"src\\mcm26b\\sim\\playback.py": "073b74c149334604cd678c218e112f69d64fe907ef7c3b6f42b69470e48fbb7a",
|
||||
"src\\mcm26b\\sim\\scenes.py": "0647bd19409acb5160625dd39e71157aeb20f9e979e82a7fe86aaec75a1cbf32",
|
||||
"src\\mcm26b\\sim\\simulator.py": "553bf9fbb9fd4875a6ec68792e90a08287e5b87c749ffda9a7556b582a5ecba3",
|
||||
"src\\mcm26b\\sim\\transport.py": "889c06965fdb905f5d9fa8e947940ea68be216f60a487340c2f326b6e8a9a36d"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
@@ -0,0 +1,259 @@
|
||||
{
|
||||
"config": {
|
||||
"field": {
|
||||
"omega_radius_m": 1800.0,
|
||||
"channel_min": 1,
|
||||
"channel_max": 20,
|
||||
"source_count_min": 10,
|
||||
"source_count_max": 16,
|
||||
"r_eff_min_m": 1000.0,
|
||||
"r_eff_max_m": 1500.0,
|
||||
"near_radius_m": 5.0,
|
||||
"clear_radius_m": 20.0,
|
||||
"bearing_error_half_deg": 1.0,
|
||||
"bearing_decimals": 2,
|
||||
"coord_abs_limit_m": 2000000.0,
|
||||
"directional_half_angle_deg": 90.0,
|
||||
"max_virtual_duration_s": 360000.0,
|
||||
"max_real_duration_s": 1200.0,
|
||||
"test_window_s": 1500.0
|
||||
},
|
||||
"cost": {
|
||||
"speed_mps": 5.0,
|
||||
"measure_s": 5.0,
|
||||
"switch_s": 1.0,
|
||||
"clear_success_s": 5.0,
|
||||
"clear_fail_s": 3.0
|
||||
},
|
||||
"session": {
|
||||
"arena_id": "default",
|
||||
"base_url": "http://127.0.0.1:2026",
|
||||
"robot_id_max_bytes": 64,
|
||||
"request_id_max_bytes": 128,
|
||||
"request_body_max_bytes": 65536,
|
||||
"connect_timeout_s": 5.0,
|
||||
"read_timeout_s": 15.0,
|
||||
"max_attempts": 3,
|
||||
"retry_backoff_s": 0.25,
|
||||
"reserve_exit_s": 60.0,
|
||||
"real_rtt_p95_s": 1.0,
|
||||
"self_test_real_budget_s": 1800.0
|
||||
},
|
||||
"search": {
|
||||
"grid_step_m": 700.0,
|
||||
"grid_half_cells": 3,
|
||||
"fallback_clear_grid_m": 20.0,
|
||||
"bearing_rounding_margin_deg": 0.005,
|
||||
"polygon_sides": 192,
|
||||
"witness_spacing_m": 60.0,
|
||||
"candidate_rings": [
|
||||
0.0,
|
||||
0.4,
|
||||
0.75,
|
||||
1.0
|
||||
],
|
||||
"candidate_angles": 12,
|
||||
"clear_margin_m": 0.5,
|
||||
"max_localize_steps": 8,
|
||||
"max_anomalies_per_channel": 3,
|
||||
"max_blocked_probes": 4,
|
||||
"fallback_max_cells": 400,
|
||||
"persistent_search": false,
|
||||
"virtual_reserve_s": 10000.0
|
||||
},
|
||||
"bayes": {
|
||||
"particle_spacing_m": 25.0,
|
||||
"score_mode": "entropy",
|
||||
"score_subsample": 800,
|
||||
"mc_representatives": 7,
|
||||
"lambda_move_s": 0.0105,
|
||||
"wide_rings": [
|
||||
1.0,
|
||||
1.5,
|
||||
2.0
|
||||
],
|
||||
"station_ring_radius_m": 1159.7,
|
||||
"two_opt_enabled": true,
|
||||
"two_opt_passes": 3,
|
||||
"grid_cert_enabled": true,
|
||||
"opportunistic_measure": true,
|
||||
"opportunistic_radius_ratio": 0.65
|
||||
}
|
||||
},
|
||||
"source": "local_simulator_only",
|
||||
"rows": [
|
||||
{
|
||||
"case": "random-10-0",
|
||||
"valid": true,
|
||||
"virtual_s": 2958.5911,
|
||||
"measures": 116,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11103.0,
|
||||
"wall_s": 0.5848256000026595
|
||||
},
|
||||
{
|
||||
"case": "random-10-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3473.150338,
|
||||
"measures": 119,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13610.8,
|
||||
"wall_s": 1.056755899990094
|
||||
},
|
||||
{
|
||||
"case": "random-10-2",
|
||||
"valid": true,
|
||||
"virtual_s": 3024.484542,
|
||||
"measures": 112,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11547.4,
|
||||
"wall_s": 1.0590423999965424
|
||||
},
|
||||
{
|
||||
"case": "random-10-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3197.856813,
|
||||
"measures": 117,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12264.3,
|
||||
"wall_s": 0.7646372000017436
|
||||
},
|
||||
{
|
||||
"case": "random-10-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3201.6552,
|
||||
"measures": 122,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 12143.3,
|
||||
"wall_s": 1.044187100007548
|
||||
},
|
||||
{
|
||||
"case": "random-10-5",
|
||||
"valid": true,
|
||||
"virtual_s": 2940.099079,
|
||||
"measures": 112,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 11130.5,
|
||||
"wall_s": 0.7773485999932745
|
||||
},
|
||||
{
|
||||
"case": "boundary-10",
|
||||
"valid": true,
|
||||
"virtual_s": 4144.807971,
|
||||
"measures": 144,
|
||||
"clears": 10,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 16239.0,
|
||||
"wall_s": 0.49276029999600723
|
||||
},
|
||||
{
|
||||
"case": "random-16-0",
|
||||
"valid": true,
|
||||
"virtual_s": 3833.288563,
|
||||
"measures": 95,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 15951.4,
|
||||
"wall_s": 1.8353732999967178
|
||||
},
|
||||
{
|
||||
"case": "random-16-1",
|
||||
"valid": true,
|
||||
"virtual_s": 3749.587742,
|
||||
"measures": 97,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 15457.9,
|
||||
"wall_s": 1.6017328000016278
|
||||
},
|
||||
{
|
||||
"case": "random-16-2",
|
||||
"valid": true,
|
||||
"virtual_s": 3554.338273,
|
||||
"measures": 114,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 14011.7,
|
||||
"wall_s": 1.2566069999884348
|
||||
},
|
||||
{
|
||||
"case": "random-16-3",
|
||||
"valid": true,
|
||||
"virtual_s": 3355.439323,
|
||||
"measures": 98,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 13472.2,
|
||||
"wall_s": 1.8687091999890981
|
||||
},
|
||||
{
|
||||
"case": "random-16-4",
|
||||
"valid": true,
|
||||
"virtual_s": 3854.458757,
|
||||
"measures": 106,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 15742.3,
|
||||
"wall_s": 1.519354200005182
|
||||
},
|
||||
{
|
||||
"case": "random-16-5",
|
||||
"valid": true,
|
||||
"virtual_s": 3839.746309,
|
||||
"measures": 104,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 15733.7,
|
||||
"wall_s": 1.4910044999996899
|
||||
},
|
||||
{
|
||||
"case": "boundary-16",
|
||||
"valid": true,
|
||||
"virtual_s": 4849.848511,
|
||||
"measures": 139,
|
||||
"clears": 16,
|
||||
"failed_clears": 0,
|
||||
"distance_m": 19709.2,
|
||||
"wall_s": 0.5919216000038432
|
||||
}
|
||||
],
|
||||
"mean_s": 3569.810894357143,
|
||||
"median_s": 3513.7443055,
|
||||
"max_s": 4849.848511,
|
||||
"valid": 14,
|
||||
"under_4000": 12,
|
||||
"source_sha256": {
|
||||
"src\\mcm26b\\__init__.py": "a1ea628e2b44a8b288c59fcda19a8f02b53f2d6fec675ef1e8c481ffdcbd7f35",
|
||||
"src\\mcm26b\\belief\\__init__.py": "8613467122928e70dd2b07f14e1009a1edddb1d495d44f063f222fb118f78ba5",
|
||||
"src\\mcm26b\\cli.py": "2fac81a16cecdf23ce1f91031009cd2817fd3f2b66cb5f66d0a31bdd16088a04",
|
||||
"src\\mcm26b\\config.py": "deeb25419a7c7b7fba81b943fa25c32255d6607e6666f172c56893fe58addea0",
|
||||
"src\\mcm26b\\coverage\\__init__.py": "ef24a48e91a099ca58a1fd9b5efa01b0bd76c21f63bd5febd444026281ec18c7",
|
||||
"src\\mcm26b\\evaluation\\__init__.py": "3d7d9103675e4731f65ceacaac76c97096e244d0902e37d62376ea60b0a42217",
|
||||
"src\\mcm26b\\geometry\\__init__.py": "c8f8d3e6320acb44fe9c14261116f8a668fdd59304e1d5b0318d8d50ea89b25c",
|
||||
"src\\mcm26b\\geometry\\__main__.py": "41967f321b05abe515d2f0c10839b94c1e5c55a4c760b17345e0815f62acd676",
|
||||
"src\\mcm26b\\geometry\\localization.py": "019a04a4205ca5cfb5832c7e2337e6ae3274ef9bdae1981c3764b8df8c2afd97",
|
||||
"src\\mcm26b\\geometry\\planning.py": "5d6a11b2c4633c4f27bb4a61f77f4fbd20cfdce653d839845a735f9f1d3be2d1",
|
||||
"src\\mcm26b\\particles.py": "c2cfabb07154883d4293f5c739b8ab06bd4b467c773365e1d4c153a0bd0fc30b",
|
||||
"src\\mcm26b\\planner\\__init__.py": "bdd36737b2a8562612634d45290bf7165ee81c80fa8e7bcb9fcc9f4001390cda",
|
||||
"src\\mcm26b\\planner\\bayes_loop.py": "dd7b92a91200a55fe9aa7b01f7063474fe13c19426a82a057b9e73992e534b5a",
|
||||
"src\\mcm26b\\planner\\seven.py": "cc143ce0703f231d8b5444ac6a2b2f4925cabf1556e58b0ea5166a510e6933f0",
|
||||
"src\\mcm26b\\protocol\\__init__.py": "67423a0fe7f3ee3c7b1c0439da9554dab4bc30a09c5f3720d69e11076a36de0c",
|
||||
"src\\mcm26b\\protocol\\client.py": "a486694b570bc00286ad30d4be04b01687ef3801d95154e75caa6209314dac36",
|
||||
"src\\mcm26b\\protocol\\log.py": "0eb51302a0bdfa3c680b7726d0be59cebe6fdc6197fd9643a4d5cc0646e34ac3",
|
||||
"src\\mcm26b\\protocol\\rules.py": "7941a4cddafd875dedf0c57aa90e640cb5e22201800d3eb300dac313db19e6a3",
|
||||
"src\\mcm26b\\protocol\\state.py": "dc4c50f38cc1014af848f21d3f972b2f51fba28b0feb3320ce85bf51389d3d34",
|
||||
"src\\mcm26b\\protocol\\timing.py": "49fb1ca99db9db273364ddb27281b95e6e76099c16ce7fccddccbfe105d604ac",
|
||||
"src\\mcm26b\\protocol\\transport.py": "668a8ab280e5e42a7994d7cedc0f487af19b140622d76b04da0dbbea3ad4940f",
|
||||
"src\\mcm26b\\sim\\__init__.py": "7adcbaab5b94d4006ff926306a43c1042182be14789026e71885ed69389a6d55",
|
||||
"src\\mcm26b\\sim\\playback.py": "073b74c149334604cd678c218e112f69d64fe907ef7c3b6f42b69470e48fbb7a",
|
||||
"src\\mcm26b\\sim\\scenes.py": "0647bd19409acb5160625dd39e71157aeb20f9e979e82a7fe86aaec75a1cbf32",
|
||||
"src\\mcm26b\\sim\\simulator.py": "553bf9fbb9fd4875a6ec68792e90a08287e5b87c749ffda9a7556b582a5ecba3",
|
||||
"src\\mcm26b\\sim\\transport.py": "889c06965fdb905f5d9fa8e947940ea68be216f60a487340c2f326b6e8a9a36d"
|
||||
}
|
||||
}
|
||||
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
File diff suppressed because one or more lines are too long
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user