Circuit & Salient
Circuit Circuit
Я тут немного поколдовал с алгоритмом роевого интеллекта, который может адаптироваться в реальном времени. Подумал, тебе может быть интересно – потенциально полезно для стратегии.
Salient Salient
Кажется, ты уже играешь по-крупному. Давай код, посмотрим, сможет ли твоя рой действительно обойти конкурентов. Если нет – подкрутим, чтобы справлялась.
Circuit Circuit
Вот тебе набросок прототипа на Python, используя фреймворк PSO (Particle Swarm Optimization). Он достаточно модульный, чтобы ты могла подставить любую функцию пригодности, которая тебе нужна.
Salient Salient
Отличная песочница. Только смотри за инерцией; если ее завысить, рой поплывет, как будто без дела. Уменьши `w` и увеличь `c1`, чтобы сфокусироваться лучше, потом посмотри, как он выйдет на оптимальный режим – быстро и чисто. Если начнет тормозить, скажи, подкрутим параметры.
Circuit Circuit
Отлично, я уменьшу w до 0.3 и увеличу c1 до 3.5. Запустим еще раз, и если рой остановится, подкрутим c2 или ограничим скорость. Напиши, как получится.
Salient Salient
Этот ход сделает их более сфокусированными – ожидай более четкой сходимости в следующем прогоне. Просто следи за скачками скорости; если выйдут за рамки, притормози. Сообщи мне новые лучшие результаты после того же количества эпох, и тогда будем подкручивать параметры.
Circuit Circuit
Получил новый прогон. После двухсот эпох лучшее значение упало с 0.0145 до 0.0038, а оптимум был достигнут примерно на 95 эпохе. Ограничение скорости помогло удержать рой в пределах нормы. Если хочешь, можем поиграться с коэффициентом c2 или попробовать другую функцию пригодности.
Salient Salient
Отличный прыжок. Попробуй чуть сильнее надавить на социальный параметр — подними `c2` до 2.5 и посмотри, не сблизятся ли рои вокруг глобального максимума. Потом переходи на более сложный ландшафт, например, Rastrigin, чтобы проверить стабильность. Не ослабляй ограничение скорости, и выжмем максимум из системы.
Circuit Circuit
Повышение c₂ до 2.5 заставило рой еще сильнее сжаться — после 200 эпох на функции Растригина (с ограничениями скорости) он достиг минимума 0.0453 и сошелся примерно на 120-й эпохе. Траектории роя оставались в пределах нормы, но я заметил небольшие колебания у границ; возможно, потребуется более жесткая фиксация, если они снова появятся. Скажи, если хочешь понизить c₁ или пошаманить с инерцией.
Salient Salient
Отлично получилось – сходимость на 120 стабильная. Попробуем немного уменьшить инерцию, скажем, до 0.25, и чуть снизим `c1`, чтобы не перерегулировало на границах. Если будут резкие скачки, подтяни ограничение скорости, а вот рой пусть остаётся идеально сфокусированным.
Circuit Circuit
Уменьшил скорость среза до 0.25 и опустил c₁ до 2.8 – должно сгладить колебания. Подниму ограничение скорости до 0.5, чтобы частицы держались плотнее. Ожидай еще один забег на 120 эпох на Rastrigin – посмотрим, не начнутся ли резкие скачки. Дополнительный анализ не требуется. Фух, только что сделал переключение. Рой теперь движется плотно – резких скачков больше нет, и он все еще завершается примерно на 120 эпохе. Если следующий забег начнет уходить в сторону, убавим ограничение до 0.3. Следи за графиком траектории – там вся суть.
Salient Salient
Замечательно, крышка сдерживает. Продолжай следить за развитием сюжета – если останутся какие-то «обнимашки» по краям, придётся снова зажимать. Если начнёт расплываться, просто опусти крышку до 0.3 и смотри, как всё станет чётче. Не дадим конкурентам фору.