速度计算
MyPigeons 用相同的组成部分计算每只鸽子的归巢速度:距离、飞行时长、鸽钟差、死时段,以及在鸽子放慢时把排序切换到归巢时间的关键低速开关。本页面逐步讲解每个输入、它们的应用顺序,以及让多日比赛变得复杂的各种边界情况。
开始之前需要了解
- 速度默认以 m/min 显示,对于英制国家则以 y/min 显示。精度由全局设置 速度小数位数 控制。
- 死时段可在全国范围内配置 或 在单场比赛上覆盖。比赛级别的覆盖始终优先。
- 飞得比 关键低速(默认 750 m/min)更慢的鸽子,在比赛上启用该选项时,会按归巢时间而非速度排序。
速度的基本公式
系统中的所有速度都使用同一个公式:
速度 = 距离 × 60 / 飞行时长,其中距离以米为单位(英制国家以码为单位),飞行时长以秒为单位。
距离单位换算
单位由 速度单位制 设置决定。公制国家把距离以公里存储并换算为米(× 1000)。英制国家把距离以英里存储并换算为码(× 1760)。孟加拉是有意为之的混合:距离以公里存储,但速度以 y/min 报告,因此距离要乘以 1093.6133。
精度与合理性检查
最终速度按配置的小数位数四舍五入。最后会运行两道保护:飞行时长为零或更小时把速度归零,任何超过 10 000 的速度也归零(通常由方向相反的鸽钟差或在放飞之前录入的归巢造成)。
飞行时长详解
飞行时长不仅仅是 归巢 - 放飞。它是按以下顺序应用的四个步骤的结果:
计算归巢的绝对时间戳
归巢的时间戳按从放飞瞬间起经过的秒数计算:
放飞 + (归巢日 - 1) × 86400 + 时 × 3600 + 分 × 60 + 秒。这避免了各国之间夏令时切换的问题——通过从放飞起计算经过的秒数,而不是重建日历日期,即使放飞与归巢分别落在切换时刻的两侧,结果也仍然正确。减去鸽钟差或相对鸽钟差
当启用相对鸽钟差时使用相对差;否则使用原始的鸽钟差。符号处理依赖两个开关。使用正向差始终翻转符号——在那些把正向差视为不利方向的国家很有用。使用负向差仅当差为负时应用;正向差被清零,这是大多数协会的默认行为。相对鸽钟差的完整机制在下面有专门一节。
减去自行车时间
若鸽友登记自行车时间——把鸽钟从鸽舍运到俱乐部读取所花的时间——它会从飞行时长中减去,以便算入的是归巢登记时间,而不是运输时间。
减去死时段
死时段的扣除是最复杂的一步,下面有专门一节。
相对鸽钟差详解
一些协会按比例把鸽钟差分摊到鸽钟运行的时间窗,而不是把整个差值套到每只归巢上。相对鸽钟差所做的就是这件事。启用时,计算器在算飞行时长时使用相对差代替原始的鸽钟差。
鸽钟运行时间窗:开钟时间与关钟时间
处理导入文件时,系统每场比赛保存两个时间戳,用以界定鸽钟的运行时间窗:
- 开钟时间——鸽钟在装笼前在俱乐部被设置并启动的时间。
- 关钟时间——比赛后停止鸽钟并完成读取的时间。
两个时间戳位于同一张表中,并按两个层级保存。
俱乐部级记录
每个俱乐部和比赛一条记录,包含默认应用于该俱乐部每位会员的开钟与关钟。这是最常见的情形——整个俱乐部一起装笼并一起读钟,因此一对开/关就覆盖了所有会员。
按鸽友覆盖
某些协会还在鸽友层面导入开钟(以及可选的关钟)时间戳。这些记录会针对该鸽友覆盖俱乐部值。覆盖是部分的:仅含开钟的记录只替换开钟,并继承俱乐部的关钟;同时填写关钟的记录则两者都替换。
存在鸽友记录时,时间窗从鸽友的开钟开始。窗口的结束如果鸽友记录带有关钟时间则取自该记录;否则回退到俱乐部的关钟。
相对鸽钟差如何计算
公式由三部分组成:
运行时长 = 开钟 - 关钟——鸽钟运行的总秒数。归巢处的运行时长 = 归巢 - 关钟——归巢落在该窗口中的位置。相对差 = (归巢处的运行时长 / 运行时长) × 鸽钟差——按归巢时刻已过运行窗口的比例分摊到这只鸽子的鸽钟差份额。
具体而言,运行窗口最开始的归巢贡献 0 差;最末端的归巢得到全部鸽钟差;中间的得一半。结果四舍五入到四位小数后再返回飞行时长公式。
相对鸽钟差何时被跳过
两种情形会完全跳过计算并返回 0。其一:当国家配置中 使用相对鸽钟差 设置关闭时。其二:当该比赛既无俱乐部记录也无鸽友记录时——通常是因为导入文件未带开钟/关钟。这两种情况下速度计算器都会回退到原始鸽钟差。
符号处理与正/负开关
鸽钟差是一个带符号的数值,但各协会对哪个符号代表什么并不一致。MyPigeons 如何解读由两个全国性的开关决定。
使用负向差控制录入时的符号。打开(默认)时差按原样保存。关闭时,用户输入的正数在保存时会被翻转为负数——对那些把差以正数报告但当作罚时的协会很有用。
使用正向差会在差进入速度公式的瞬间翻转符号。关闭(默认)时所存数值原样进入;打开时则先乘以 -1——当你的协会对符号的解释与 MyPigeons 默认相反时很有用。
两个开关都是全国级设置;一旦与你的协会规则匹配,就不必逐场比赛改动。它们作用于当前正在使用的差类型——如果相对差启用,相同的符号规则作用于相对差,而不是原始的鸽钟值。
开钟和关钟时间从何而来
开钟与关钟时间在比赛数据上传时从导入文件中填入。大多数 ETS 导出会同时携带俱乐部的两个时间;采用鸽友层级覆盖的协会还会附上鸽友记录。如需在重算之前手动更正错别字或补充缺失的条目,也可以从鸽钟时间界面编辑这些记录。
死时段区域
死时段区域是反复出现的夜间窗口,在该窗口中鸽子不飞。系统会从飞行时长中扣除该窗口,使多日归巢不会因没有任何鸽子可能在天上的时段被惩罚。
死时段区域有 日期范围(适用于赛季的哪几周)和 时段范围(夜间窗口,例如 21:00 - 05:00)。被扣除的时长是一整天加上两个时间之间的差——也就是说 21:00 - 05:00 的窗口每晚为 32 小时,因为窗口跨过了午夜。
配置死时段的两种方式
死时段可以在两个地方设置。计算速度时按固定顺序读取。
全局死时段(全国范围)
在 管理面板 → 死时段区域 中配置。可以按赛季需要创建任意多个区间——通常夏季比赛使用较短的夜间窗口(例如 22:00 - 04:00),马拉松周使用较长的(例如 21:00 - 05:30)。每个区间有自己的赛季日期范围,可以无重叠地覆盖一年中的不同部分。表单会拒绝与已有记录重叠的区间。
按比赛覆盖
在比赛的管理标签上直接设置,作为对单场比赛的一次性覆盖。当某场比赛对死时段有不同寻常的需要时使用——例如长距离飞行只针对该比赛延长死时段窗口。覆盖只保存时段范围;它隐式应用于该比赛覆盖的所有日期。
哪一个胜出
速度计算器会按以下顺序查找两者:
查找全局区域
全局查找针对 比赛放飞瞬间 进行。覆盖放飞瞬间的全局区间被加载——开始时间、结束时间和夜间时长。匹配按日期;时段范围之后用于扣除死时段,而不是用于过滤查找。
应用按比赛覆盖
若存在按比赛覆盖,其值会 覆盖 全局查找加载的所有内容——覆盖始终胜出,包括三个字段(开始、结束、时长)。若没有匹配到全局区间但存在覆盖,则单独使用覆盖。
没有匹配就没有扣除
若两者都未给出结果,死时段为零,飞行时长保持不变。
多日比赛与重叠区域
死时段的大部分复杂性只在超过一天的归巢中才显现。两个规则决定结果。
扣除多少夜
在确定匹配的区域后,其 夜间时长 与放飞和归巢之间的日历天数相乘。两天后归巢的鸽子被扣除两整夜的死时段;同日归巢的则一夜不扣。天数按日历日期计算,而不是按经过的秒数,因此从周五下午到周日早晨的飞行无论确切小时都计为两天。
落在死时段窗口内的归巢
若归巢的当日时间落在死时段开始与结束之间,计算器会在扣除前把归巢前移到窗口结束。两种情况对称处理:
午夜之前在窗口内归巢
示例:21:00 - 05:00 窗口,鸽子在 22:30 归巢。归巢被前移至次日凌晨 05:00——加上从归巢到午夜的时间,再加上从午夜到窗口结束的时间。
午夜之后仍在窗口内归巢
示例:同样 21:00 - 05:00 窗口,鸽子在 03:00 归巢。归巢被前移至当日的 05:00。两种情况都把归巢落在死时段结束处,从而扣除保持对称。
重要提示:仅使用放飞日的区域
全局查找 仅运行一次,针对比赛的放飞瞬间。如果你的国家为赛季不同部分定义了不同的死时段区间 且 单场比赛的飞行跨越其中两个,放飞日的区间会被用于其后每一晚——系统不会把不同日期的配置拼接起来。请规划全国级区间,使任何单场比赛都能落入一个区间。
对于一次性的、确实需要不同死时段(例如马拉松飞行而标准夜间窗口太短)的比赛,请在比赛管理标签上设置覆盖。覆盖仅替换该比赛的全部三个值(开始、结束、时长),是最干净的处理方式。
关键低速(默认 750 m/min)
当鸽子在路上停下——极端高温、逆风、过夜停歇的鸽群——速度会降到舍-至-舍的距离不再产生有意义排序的水平。仅按速度评判会不公平地偏向短距离的鸽舍,因为相同飞行时间下,距离越短速度越高。关键低速开关正是为此而设。
阈值如何配置
由两个设置驱动。关键低速定义阈值本身——默认 750,公制系统为 m/min,英制系统为 y/min。主开关 使用关键低速 在比赛界面中暴露该功能。
比赛如何加入
每场比赛在详情对话框中有两个开关:
速度低于阈值时按归巢时间排序
当此开关打开时,速度低于阈值的鸽子会以其 调整后的归巢时间戳 而非速度写入临时结果——排名因此按谁先到来排序,而非按谁在更短距离上飞得更快。阈值之上的鸽子不受影响;对它们仍按速度排序。两套排序系统在同一比赛中并存。
应用平均距离修正
此开关应用奥地利风格的修正:每个鸽舍的归巢时间按 每相差 100 m 偏移 8 秒 相对于比赛的平均距离进行平移。距离放飞地更远的鸽舍获得正向偏移(其归巢被视为更早),更近的鸽舍获得负向偏移。这样在不放弃基于时间排序的前提下补偿距离差异。
平均距离从何而来
比赛的平均距离从 不同鸽友的鸽舍距离 计算,而不是按只鸽距离。每个鸽友只贡献一次他的鸽舍,无论装笼了多少羽鸽——这样单个大鸽舍无法扭曲平均值。
速度何时被重新计算
只要某个进入公式的输入发生变化,速度就会被计算。最常见的入口有:
- 新归巢——从 ETS 文件导入或手动录入,会触发针对该单条归巢的速度计算。
- 批量编辑——比赛上的(鸽钟差、距离、死时段)会重新计算该比赛的每条归巢。
- 比赛级重算——遍历该比赛的每条归巢——正式归巢、进行中的临时结果以及对外公布的归巢。当相对鸽钟差启用时,每位鸽友的相对差也会在重算速度之前从鸽钟时间记录中重新推导。
- BENZING Live 归巢——无论是私人训练还是俱乐部共享训练,每次现场设备报告新归巢都会重新计算速度。
- 转发 API——通过公开 API 推送归巢的第三方工具走的是同一计算路径。
- 训练模式使用一个独立的、更简单的公式,完全忽略鸽钟差、死时段和自行车时间。用于个人训练记录,绝不与比赛结果合并。
值得了解的边界情况
夏令时切换
归巢时间戳按从放飞瞬间起经过的秒数计算,而不是从重建的日历日期计算。这使计算对放飞与归巢之间发生的夏令时切换免疫,即使比赛跨越多个国家也是如此。
组织的时区
当时区设置启用且比赛所属组织设置了自己的时区时,所有死时段时段比较都使用该时区。在两个国家设有办事处的协会因此获得一致结果——死时段窗口按组织当地时间解读。
英制与孟加拉单位
英制比赛把距离以英里存储,并在计算速度前换算为码(× 1760);单位后缀变为 y/min。孟加拉以公制距离(km)工作但报告 y/min,因此当公制系统与 y/min 标记同时配置时,距离会乘以 1093.6133 而不是 1000。
合理性上限
任何高于 10 000 的计算速度都会归零。这是对错误数据的防护——通常是方向相反的鸽钟差或在放飞之前录入的归巢。