Files
uav-search/config.toml
robinson 0d2e580f12 init
2026-09-03 15:50:33 +08:00

109 lines
5.3 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# =============================================================================
# UAVSearch 完整配置 — 修改此文件即可运行,无需 CLI 参数
# =============================================================================
# -----------------------------------------------------------------------------
# [problem] 问题定义
# -----------------------------------------------------------------------------
[problem]
width = 1000.0 # 空域宽度 (m)
height = 800.0 # 空域高度 (m)
uavs = 7 # UAV 数量
radius = 50.0 # 传感器半径 (m)
speed = 15.0 # 飞行速度 (m/s)
depot_service = 60.0 # 站内换电/服务时间 (s)
seed = 64 # 随机种子(基线部署与优化器)
# 分区模式
# workload — 栅格最近站点划分(推荐,优化平滑)
# lloyd — Lloyd 松弛栅格划分
# voronoi — 站点 Voronoi 图
# uniform — 等面积条带legacy配 boustrophedon 常用)
partition = "voronoi"
# 路径规划器
# mtsp — 栅格航点 + TSP 闭环(推荐)
# boustrophedon — 牛耕/条带扫描
planner = "mtsp"
# 仿真指标栅格密度(见下方说明,不直接控制路径航点密度)
# 仿真栅格边长 cell_size = radius / grid_density
# 越大 → 栅格越细 → T_max/覆盖率/重叠率估计越准,但仿真更慢
# 推荐mtsp 用 4~6boustrophedon 用 3~5路径已是条带无需过细
grid_density = 6.0
# uniform 分区条带方向;也影响 boustrophedon 扫描轴auto 时 vertical→水平扫描
# auto | vertical | horizontal
strip_direction = "auto"
# Lloyd 分区迭代次数(仅 partition = "lloyd" 时生效)
lloyd_iterations = 6
# 仿真时间步长 (s)
sim_dt = 0.5
# 站点搜索边界内缩比例(相对空域宽/高)
bounds_margin = 0.05
# -----------------------------------------------------------------------------
# [planner.boustrophedon] 牛耕规划器planner = "boustrophedon" 时生效)
# -----------------------------------------------------------------------------
# 条带间距 = sweep_width_ratio × radius
# 默认 2.0 → 条带间距 = 2r与传感器直径一致保证无漏覆盖
# 调小(如 1.6)→ 条带更密、路径更长、覆盖冗余更大
# 调大(如 2.2)→ 条带更疏,可能出现漏覆盖
[planner.boustrophedon]
sweep_width_ratio = 2.0
# 扫描轴x = 水平扫描线(条带沿 Y 堆叠y = 垂直扫描线
# auto — 由 strip_direction 推断vertical→xhorizontal→y
sweep_axis = "auto"
# -----------------------------------------------------------------------------
# [planner.mtsp] mTSP 规划器planner = "mtsp" 时生效)
# -----------------------------------------------------------------------------
# 航点间距 = waypoint_spacing_factor × radius
# 默认 √2 ≈ 1.414 → 栅格对角线间距,相邻航点传感器圆相交无漏
# 调小 → 航点更密、路径更长;调大 → 航点更疏,可能漏覆盖
[planner.mtsp]
waypoint_spacing_factor = 1.0
# -----------------------------------------------------------------------------
# [simulation] 仿真
# -----------------------------------------------------------------------------
[simulation]
duration = 200.0 # 基线/最终报告仿真时长 (s)
opt_duration = 100.0 # 优化搜索阶段每次评估的仿真时长 (s)
fast_eval_max_duration = 100.0 # fast_eval 仿真时长上限 (s)
fast_eval_grid_density_cap = 3.0 # fast_eval 时 grid_density 上限
show_progress = true # 是否显示 tqdm 进度条
# -----------------------------------------------------------------------------
# [objective] 优化目标
# -----------------------------------------------------------------------------
# 复合目标 J = weight_t_max × T* + weight_coverage × (1-覆盖率) + weight_overlap × 重叠率
# T* = T_maxprimary = max_revisit或 P_maxprimary = max_patrol_period
[objective]
primary = "max_revisit" # max_revisit | max_patrol_period
weight_t_max = 1.0
weight_coverage = 220.0
weight_overlap = 100.0
# -----------------------------------------------------------------------------
# [optimizer] 优化器(当前使用 method 指定的那一组)
# -----------------------------------------------------------------------------
[optimizer]
method = "mapso" # differential_evolution | local | hybrid | mapso
maxiter = 5 # DE/MAPSO 最大代数hybrid 时 DE 用 maxiter//2
popsize = 8 # 种群规模
verbose = true # 打印每次评估日志
min_separation_ratio = 0.5 # 站点最小间距 = ratio × radius
# MAPSOmethod = "mapso" 时生效)
[optimizer.mapso]
w = 0.729
c1 = 1.494
c2 = 1.494
vmax_ratio = 0.2
# 差分进化method = differential_evolution 或 hybrid 的第一阶段)
[optimizer.differential_evolution]
tol = 0.05
atol = 0.05
polish = false
# 局部精修 L-BFGS-Bmethod = local 或 hybrid 的第二阶段)
[optimizer.local]
maxiter = 40
# -----------------------------------------------------------------------------
# [run] 运行
# -----------------------------------------------------------------------------
[run]
optimize = true
save = "output/dashboard.png"
show = true