Об этом проекте
SwarmingLilMen представляет собой экспериментальный движок для эмерджентных многоагентных систем, основанный на 2D-симуляции boids/роя, построенной с нуля на C#/.NET 8.0. В проекте акцент делается на эмерджентности, а не на скриптинге: несколько простых комбинируемых правил рулевого управления создают сложные макропаттерны. Проект находится на ранней стадии разработки (лицензия GPL-3.0-only) и проходит через архитектурный переход от системного подхода на основе агрегатов к независимо тестируемым правилам рулевого управления в стиле Reynolds.
Существуют две параллельные реализации: Legacy (конвейер на основе агрегатов SoA с boids на равномерной сетке и интерактивным рендерером Raylib) и Canonical (каркас плюс три правила рулевого управления, активируемые через --canonical). Контракт восприятия/пространственного индекса и принудительное соблюдение бюджета сил в canonical-пути реализованы, однако UX инструментария, предписанные поведенческие сценарии, семантика нескольких групп и канонические бенчмарки остаются открытыми.
Подтвержденные возможности включают: структуру данных Structure-of-Arrays (SoA) для эффективности кэша; фиксированный временной шаг с сидированием для legacy и canonical путей с точным покрытием 500 тиков упорядоченного кинематического хеша; структуры данных генома агента и API мутаций; настраиваемые параметры симуляции с пресетами (balanced, strong-separation, tight-flocking, fast-loose, slow-cohesive); legacy-конвейер boids на равномерной сетке и интерактивный рендерер Raylib; опциональный canonical-рендерер для одной группы с инструментарием рулевого управления; а также набор тестов xUnit, подмножество которых (без тестов производительности) служит гейтом CI. Для измерения производительности используется BenchmarkDotNet.
Системный конвейер перестраивает равномерную сетку, а затем каждый тик запускает системы Sense, Behavior, Wander и Integrate. Принципы производительности включают: минимизацию аллокаций на «горячих путях», отсутствие LINQ/делегатов/упаковки (boxing) во внутренних циклах, плотные циклы for с вынесенными инвариантами и прямые/статические вызовы вместо виртуальной диспетчеризации. Целевые показатели производительности в 50–100 тыс. агентов при 60 FPS в интерактивном режиме и более 1 млн в headless-режиме прямо указаны как недостигнутые цели; измерение для 50 тыс. агентов превышает бюджет в 16,67 мс/тик более чем на порядок, а пропускная способность canonical, FPS рендерера и аллокации за тик не измерены.
Проект также включает автономные браузерные демо на JavaScript: Boids Basic (алгоритм Reynolds с настройкой параметров в реальном времени), Self-Propelled Particles/Vicsek Model (фазовые переходы в активной материи с отслеживанием параметра порядка), Ant Colony Optimization (поиск пути на основе стигмергии с феромонными следами) и Particle Swarm Optimization (непрерывная глобальная оптимизация с визуализацией ландшафта приспособленности). Эти демо не требуют установки и служат для быстрой итерации, демонстраций, обучения и прототипирования.
Этапы дорожной карты включают: взаимодействие нескольких групп/бой/метаболизм (Фаза 3), размножение/эволюция/дрейф признаков (Фаза 4), оптимизация SIMD/параллелизация/NativeAOT (Фаза 5) и дополнительные пресеты сценариев/повторы/расширенные метрики (Фаза 6). Технологический стек состоит из C# 12 на .NET 8.0, Raylib-cs 7.0.2 для рендеринга, xUnit 2.9.3 для тестирования и BenchmarkDotNet 0.15.6 для бенчмаркинга.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.