[bug] Планировщик умного налёта не учитывает пусковую с внешним целеуказанием #4

Closed
opened 2026-10-29 11:43:51 +00:00 by chexit · 1 comment
Owner

Проверено на 90379f6.

price_grid() ограничивает опасную зону собственной дальностью РЛС установки: far = hi.max(gun).min(sight::reach(...)). У P1-SUN собственная РЛС отсутствует, поэтому reach=0 и зона угрозы пропадает. Сама внешняя РЛС не добавляет цену клеткам, поскольку у неё нет оружейных ролей.

Воспроизведение: только P1-SUN и живая РЛС рядом с ним. Для Шахеда все клетки тестовой сетки сохраняют цену 1, хотя пусковая в боевой симуляции получает цели по сети и может стрелять.

Аналогично можно недооценить зону других пусковых, получающих более дальнее обнаружение от сети.

Предложение: рассчитывать отдельно возможность обнаружения любой доступной РЛС сети и возможность поражения пусковой; для пушек сохранить требование собственного наблюдения. По возможности использовать общую функцию оценки условий с боевой логикой, чтобы планировщик и симуляция не расходились.

Код:

for s in self.sams.iter().filter(|s| s.alive() && s.roles & spec.class.bit() != 0) {

Воспроизведено на настоящем коде sim и wave в отдельном native Rust crate (edition=2024, glam=0.30.10, cargo test --release). Движок и GPU не участвовали. Тест ниже проверяет ожидаемое исправленное поведение и сейчас падает; поместить в дочерний #[cfg(test)]-модуль соответствующего файла с use super::*;.

#[test]
fn network_launcher_must_contribute_to_route_risk() {
        let mut sim=Sim::new(1);
        let id=sim.id();sim.sams.push(Sam::new(id,SamKind::P1sun,DVec3::new(0.,70.,0.),0.));
        let id=sim.id();sim.sams.push(Sam::new(id,SamKind::Radar,DVec3::new(0.,70.,0.),0.));
        let grid=Grid{min:DVec3::new(-160.,0.,-160.),cell:16.,size:20};
        let (prices,_)=sim.price_grid(&grid,DroneKind::Shahed);
        assert!(prices.iter().any(|p|*p>1.),"armed launcher with a network radar is invisible to route risk");
    }
Проверено на `90379f6`. `price_grid()` ограничивает опасную зону собственной дальностью РЛС установки: `far = hi.max(gun).min(sight::reach(...))`. У P1-SUN собственная РЛС отсутствует, поэтому `reach=0` и зона угрозы пропадает. Сама внешняя РЛС не добавляет цену клеткам, поскольку у неё нет оружейных ролей. Воспроизведение: только P1-SUN и живая РЛС рядом с ним. Для Шахеда все клетки тестовой сетки сохраняют цену 1, хотя пусковая в боевой симуляции получает цели по сети и может стрелять. Аналогично можно недооценить зону других пусковых, получающих более дальнее обнаружение от сети. Предложение: рассчитывать отдельно возможность обнаружения любой доступной РЛС сети и возможность поражения пусковой; для пушек сохранить требование собственного наблюдения. По возможности использовать общую функцию оценки условий с боевой логикой, чтобы планировщик и симуляция не расходились. Код: https://gitea.maoniao.team/chexit/airdef/src/commit/90379f6/airdef-mod/src/sim/raid.rs#L425 Воспроизведено на настоящем коде `sim` и `wave` в отдельном native Rust crate (`edition=2024`, `glam=0.30.10`, `cargo test --release`). Движок и GPU не участвовали. Тест ниже проверяет ожидаемое исправленное поведение и сейчас падает; поместить в дочерний `#[cfg(test)]`-модуль соответствующего файла с `use super::*;`. ```rust #[test] fn network_launcher_must_contribute_to_route_risk() { let mut sim=Sim::new(1); let id=sim.id();sim.sams.push(Sam::new(id,SamKind::P1sun,DVec3::new(0.,70.,0.),0.)); let id=sim.id();sim.sams.push(Sam::new(id,SamKind::Radar,DVec3::new(0.,70.,0.),0.)); let grid=Grid{min:DVec3::new(-160.,0.,-160.),cell:16.,size:20}; let (prices,_)=sim.price_grid(&grid,DroneKind::Shahed); assert!(prices.iter().any(|p|*p>1.),"armed launcher with a network radar is invisible to route risk"); } ```
chexit added the area:simulationpriority:P2type:bug labels 2026-10-29 12:56:27 +00:00
Author
Owner

🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/67a2a52 (запушено в main).

🤖 Agent: исправлено в https://gitea.maoniao.team/chexit/airdef/commit/67a2a52 (запушено в main).
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: chexit/airdef#4