Skip to content

ItIsMrLaG/GemMod

Repository files navigation

GemMod

Алгоритм решения вдохновлен этой статьей.

Взаимодействие

Взаимодействие котов между собой определяется по следующим правилам:

  1. Если два кота находятся на расстоянии не превышающем RADIUS_0, то они пытаются начать драку с вероятностью 1.

  2. Если два кота находятся на расстоянии RADIUS_1, там, что RADIUS_1 > RADIUS_0, они начинают шипеть с вероятностью обратно пропорциональной квадрату расстояния между ними.

  3. Если вокруг кота нет соперников он перемещается согласно текущему правилу.

Перемещение котов картой размера PLATE_WIDTH на PLATE_HEIGHT

Фичи

  1. Возможность использования различных функций расстояния:

    • EUCLIDEAN_DISTANCE
    • MANHATTAN_DISTANCE
    • CHEBYSHEV_DISTANCE
  2. Поддержка до 5*10^5 котов с минимальной возможно частотой 7 FPS

    • ВАЖНО: эти показатели сильно зависят от:
      • размеров кота и радиуса его взаимодействия (RADIUS_1, MOVE_RADIUS)
      • от машины, на которой это запускается

      Тесты проводились на:

      • ОС - 6.1.71-1-MANJARO.
      • Процессор - 11th Gen Intel(R) Core(TM) i7-11800H @ 2.30GHz.
      • Размер L1d - 384 Kib

    Пример конфига находится в файле ./examples/cfg_500_000.py

  3. Возможность выбирать паттерны поведения

    • Отражение от стенок с потерей скорости
      • MOVE_PATTERN_PHIS_ID
    • Изменения направления и скорости движения при столкновении со стенкой
      • MOVE_PATTERN_LINE_ID
    • Случайное перемещение в рамках 'MOVE_RADIUS'
      • MOVE_PATTERN_RANDOM_ID

    Пример конфига находится в файле ./examples/cfg_beutiful.py


Для пользователей

Настройка

rye sync && rye run pre-commit install

Запуск

rye run python -m src.catsim

На текущий момент настройка параметров запуска происходит только через конфигурационный файл (run_config.py)

Пример:

PLATE_WIDTH, PLATE_HEIGHT = 2000, 2000
CATS_N = 500000
...

Запуск тестов

rye test

Лицензия

Код распространяется под лицензией MIT. Подробнее в файле LICENCE.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 3

  •  
  •  
  •  

Languages