الگوریتم Boids برنامهای است که زندگی مصنوعی را میسازد. این الگوریتم توسط آقای Craig Reynolds در سال ۱۹۸۶ معرفی شده است و پر زدن پرندهها را بصورت گروهی شبیه سازی میکند. در حقیقت اسم Boid خلاصهای از اسم "bird-oid object - چیز پرندهای" که به یک چیز پرنده مانند اشاره میکند. این مفهوم نمونهای از یک مفهوم بسیار کلی است که به گونهای مدل های مختلف آن مطرح شده است.
همانطور که شبیه سازهای مصنوعی عمل میکنند، الگوریم Boids یک نمونه از حرکت برآمدگی است! درسته، سختی این الگوریتم از برهمکنش های تک شکلها که در انیجا همان Boid ها است، میباشد که از چند قانون ساده پیروی میکنند. این قوانین در زیر آمده است:
که البته این قوانین کافی نیستند و میتوانند قوانین دیگری هم مانند جدانگری سختی و هدف گردی.
حرکت پرندهها میتواند بصورت آشفته وار (گروه های جدا شده از هم و رفتار وحشیانه) یا قانونمند داشته باشد.
چارچوب Boid در گرافیک کامپیوتری استفاده میشود، که یک واقعیت نگاره از گروهها و دیگر موجودات را در اختیار قرار میدهد. که البته میتوان در بازی Half-Life که در سال 1998 ساخته شد اشاره کرد.
مدل Boid در حقیقت در ساختار اپلیکیشنهای دیگر به کار رفته است. همانند برنامه به کار رفته در ایستگاههای رادیویی چند کاناله اینترنتی.
همچنین توصیه میکنم مطالبی همانند Conway's Game of Life و Swarm intelligence را تحقیق و مطالعه کنید.
این مقاله صرفا ترجمه و خلاصهای از ویکی Boid است.
خب برای اینکه از ساختار این الگوریتم متوجه بشیم میتونیم به برنامه زیر که به زبان Rust نوشته شده و از موتور Amethyst game engine استفاده میکند.
برای شروع کار قدم به قدم میریم جلو:
git clone https://github.com/henninglive/boids-rs.git
۲. پیش نیازها در سیستم عامل Debian/Ubuntu با دستور زیر وارد کنید:
apt install gcc pkg-config openssl libasound2-dev cmake build-essential python3 libfreetype6-dev libexpat1-dev libxcb-composite0-dev libssl-dev libx11-dev libfontconfig1-dev
۳. مطمین شوید که Rust 1.47.0 را در اختیار دارید:
rustup default 1.47.0
۴. برنامه را بسازید:
cargo build --release
۵. فایل در پوشه زیر قرار میگیرد:
target/release/boids
۶. میتوانید از دستور زیر هم استفاده کنید:
cargo run --release
خب کار ما اینجا تمام شد :) امیدوارم از مفهوم و عمل خوشتون آمده باشد. نظر شما راجع به این خلاصه چیست؟