This commit is contained in:
Horldsence
2026-09-12 16:58:25 +08:00
parent 1fa2264a17
commit 892451dca9
36 changed files with 8767 additions and 0 deletions
+42
View File
@@ -0,0 +1,42 @@
"""问题二最优实现:保证接收盘内的最坏后验半径最小化选点(生产实现)。
复用 ``mcm26b.planner.select_measurement_point``:
1. 在"保证接收盘" B(mec_center, 1000-ρ) 内环形采样候选点;
2. 对每个候选,用"目标边界点 × 读数区间端点(+near 分支)"估计
最坏后验最小包围半径,并以移动时间同分决胜;
3. 选定后按 1/4 间距加密复核,返回位置、后验半径与理由。
采样是启发式(不是连续问题全局最优证明),但保证接收是严格的。
"""
from __future__ import annotations
from mcm26b.config import ProblemConfig
from mcm26b.planner import safe_disk_radius, select_measurement_point
from project.common import Method, problem_config
from project.q2.region import first_bearing_region
METHOD = Method(
key="optimal",
name="保证接收盘内最小最坏后验半径",
kind="optimal",
note="生产实现 mcm26b.planner.select_measurement_point",
)
def candidate(case: dict, config: ProblemConfig | None = None) -> dict:
config = config or problem_config()
region = first_bearing_region(case, config)
station = (case["station"][0], case["station"][1])
plan = select_measurement_point(region, station, config)
return {
"method": METHOD.key,
"position": [round(plan.position[0], 4), round(plan.position[1], 4)],
"worst_posterior_radius_m": plan.worst_posterior_radius_m,
"move_cost_s": plan.move_cost_s,
"safe_disk_radius_m": safe_disk_radius(region, config),
"initial_radius_m": region.mec()[1],
"reason": plan.reason,
}