منطق فازی یا Fuzzy Logic در انیمیشن

دوستانی که با نرم افزار ها یا پلاگین های هوش مصنوعی (AI) برای لشگر سازی یا Crowd System نظير Massive , Miarmy , Goleam,Houdini و غیره اشنا باشند احتمالا به کلمه Fuzzy Logic برخورد کردند.
اما این منطق فازی چیه و چرا در سیستم های هوش مصنوعی اینقدر کاربرد داره. جالبه بدونید این منطق رو یک شخص ایرانی به اسم پروفسور لطفی زاده ابداع کرده است.
و اما تعریف :
در دنیای واقعی ما همه چیز رو نسبی داریم و هیچ چیز مطلق نیست ، مثلا وقتی میگیم هوا سرده مشخص نیست که هوا از چه درجه ای کمتر بشه میگیم سرد یا وقتی میگیم هوا گرمه هم به همین ترتیب ، وقتی میگیم فلان چیز بلنده یعنی نسبی اون رو ارزیابی میکنیم و ممکنه اون بلندی در برابر چیز دیگری کوتاه باشه ، همین نسبیت باعث به وجود امدن احتمالات بسیار زیاد و بی نهایتی میشه ، حال انکه در دنیای کامپیوتر همه چیز مطلقه ، یا صفره یا یک ، یا گرمه یا سرد ، و وقتی هم که میگیم گرم ،حتما یه درجه یا حد مطلق براش وجود داره ، متلا میگیم اگر هوا از 30 درجه بیشتر شد یعنی گرم و اگر از بیست درجه کمتر شد یعنی سرد و بین این دو عدد میشه متعادل ، خوب این تنها باعث به وجود امدن سه حالت سرد ، متعادل و گرم میشه و اینها مطلق هستند ، بنابراین بین هوای 22 درجه و 28 درجه هیچ تفاوتی وجود نداره ، چون هر دو متعادل هستند و از طرفی نمیتونیم بشینیم بی نهایت شرط و احتنال هم بزاریم ، اما در دنیای واقعی میتونیم بگیم هوای 28 درجه از هوای 22 درجه گرمتره و هیچ محدودیتی هم وجود نداره !
منطق فازی این ويژگى رو به دنیای کامپیوتر و برنامه نویسی وارد کرده و با توجه به اون مثل دنیای واقعی هیچ چیز مطلق نیست و تنها با مشخص کردن چندتا شرط ساده میتونیم بفهمیم که هوای 28 از 22 گرمتره. پس به دلیل اینکه ما همه چیز رو نسبی بررسی میکنیم ، بی نهایت احتمال متفاوت هم میتونیم بدست بیاریم که این در هوش مصنوعی خیلی کاربرد داره.
اجازه بدید یک متال ساده بزنم :
فرض کنید در کامپیوتر کاراکتری رو برنامه نویسی میکنید که فضا ی اطراف خود رو میبینه ، بدون منطق فازی باید سه شرط بنویسیم که اگر مانع از سمت راست به کاراکتر نزدیک شد کاراکتر بره چپ و اگر مانع از سمت چپ نزدیک شد کاراکتر بره راست و اگر مانعی نبود کاراکتر مستقیم بره ، خوب این مشخص کردن چپ یا راست حتما نیازمند مشخص کردن یکسری عدد هست و این کار ما را محدود به سه حالت میکنه ، مثلا اگر مانع تنها کمی از سمت راست به کاراکتر نزدیک بشه هیچ فرقی نداره با مانعی که کاملا از سمت راست به کاراکتر نزدیک بشه و اگر هم بخواهیم همه این حالات رو برنامه نویسی کنیم باید کلی شرط بنویسیم !
اما با کمک منطق فازی میتونیم نسبت بگیریم که این مانع چه قدر از راست نزدیک کاراکتر میشه و کاراکتر با توجه به فاصله و میزان زاویه راست بودن مانع ، سرعت و رفتار متفاوتی داشته باشه ، تازه اگر مانع هم از راست و هم از چپ به کاراکتر نزدیک بشه ، کاراکتر میتونه نسبت به گیره که به کدام مانع نزدیکتره تا از اون سمت کمی دورتر بشه و دقیقا از وسط موانع عبور بکته .
به عبارت دیگر منطق فازی چیزی شبیه سیستم های انالوگ در واقعیت و منطق غیر فازی چیزی شبیه به سیستم دیجیتال میباشد ، در سیستم دیجیتال ما فقط صفر و یک داریم و چیزی بین این دو نیست ، به همین دلیل حالات کم میشه و اطلاعات زیادی که بین این دو عدد وجود داره از بین میره ، ولی در سیستم انالوگ بی نهایت عدد بین صفر و یک وجود داره ، برای همینم وقتی با دوربین دیجیتال عکس میگیرید ، مگاپیکسل مهمه و نمیتونید عکستون رو بیشتر از اندازه مگاپیکسل بزرگ کنید یا چاپ کنید ، چون تعداد پیکسل ها محدوده و ببن پیکسل ها اطلاعاتی وجود نداره ، ولی وقتی از دوربین انالوگ استفاده میکنید ،وقتی روی نگاتیو عکس میگیرید ، چون اطلاعت انالوگ ذخیره میشه ، شما میتونید عکس هایی با ابعاد بسیار بزرگ چاپ کنید و محدودیتی به اسم مگاپیکسل ندارید !

خوب کمی با منطق فازی اشنا شدید ، در برنامه های لشگرسازی از این منطق در جاهای مختلفی که میخواهیم شرط بزاریم استفاده میکنیم ، مثلا برای دیدن و پردازش تصویر کاراکتر ها که بهش vision میگیم از این منطق استفاده میشه ، یا برای شنیدن کاراکتر ها یا بخش sound باز از همین سیستم استفاده میشه و کاراکترها با چندتا شرط بسیار ساده میتونند دقیقا بفهمند منبع صدا کجاست و در چه فاصله ای قرار داره و از همه مهمتر میتونند بی نهایت رفتار متفاوت با توجه به بینهایت احتمال فاصله و موقعیت صدا داشته باشند.
با توجه به اینکه منطق فازی نیاز به توصیحات بیشتری همراه با عکس و تصویر داره ، شاید بعدا مقاله کامل ان را در سایتم نوشتم ، اما فعلا دوستانی که علاقه دارند بیشتر راجب این مبحث بدونند ، میتونند فیلم اموزش هودینی من رو که چند سال پیش برای شرکت cmiVFX ساخته بودم رو دانلود کنند و ببینند ، در اون فیلم

من به صورت تصویری و ساده این منطق رو معرفی میکنم و همچنین اموزش دادم که چه طور از این منطق در برنامه هودینی برای ساخت سیستم هوش مصنوعی vision استغاده کنیم ، در نظر داشته باشید که این فیلم برای هودینی 11 بوده و اون موقع هنوز چیزی به اسم Crowd در هودینی وجود نداشته ، اسم این فیلم اموزشی اینه :
Houdini AI Vision
که میتونید سرچ کنید و دانلودش کنید.
با تشکر
سجاد ربیعی