نت لوگو

## مقدمه
نت لوگو (NetLogo) یک نرم‌افزار رایگان و متن باز مخصوص مدل سازی پدیده‌های طبیعی و اجتماعی است. نت لوگو در سال ۱۹۹۹ میلادی توسط یوری ویلنسکی (Uri Wilensky) طراحی و اجرا شده‌است. این نرم افزار توسط مرکز یادگیری متصل و مدل سازی مبتنی بر کامپیوتر (CCL) دانشگاه نورث وسترن توسعه یافته است.

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

این نرم‌افزار مستندات و آموزش‌های گسترده‌ای دارد که با کتابخانه‌ای از مدل‌ها و مجموعه گسترده‌ای از شبیه‌سازی‌های ازپیش‌نوشته‌شده که امکان استفاده و تغییر آن‌ها وجود دارد، پشتیبانی می‌شود. این شبیه‌سازی‌ها در زمینه‌های مختلفی از علوم طبیعی و اجتماعی مانند زیست‌شناسی و پزشکی، شیمی و فیزیک، ریاضی و علوم کامپیوتر و اقتصاد و روانشناسی اجتماعی را در برمی‌گیرند. افزون بر این برنامه‌های درسی متعددی در خصوص «تحقیق مبتنی بر مدل» وجود داشته که توسط نت لوگو نوشته‌شده‌اند و کماکان در حال توسعه می‌باشند.

### ویژگی‌های نت لوگو
برخی از ویژگی‌ها و مشخصاتی که منجر به تمایز این نرم‌افزار از سایر محیط‌ها می‌گردد، به‌شرح زیر می‌باشند:

# دسترسی به این نرم‌افزار رایگان و برای عموم افراد قابل استفاده است.
# در سیستم‌های مختلف اعم از لینوکس، ویندوز و مک قابلیت اجرا داشته و از زبان‌های غیربومی نیز پشتیبانی می‌کند.
# برنامه‌نویسی در آن به‌راحتی صورت گرفته و زبان برنامه‌نویسی آن قابل فهم است.
# تعداد زیادی از فرایندهای از پیش‌تعریف‌شده در آن وجود دارد.
# در قسمت رابط کاربری عناصر واسط متنوعی از قبیل دکمه، اسلایدر، سوییچ، انتخاب کننده،‌ مانیتور، کادر متنی،‌ خروجی و نمودار وجود دارد.
# مدلسازی به روش‌های متنی بر عامل (Agent-based) و پویایی سیستم‌ها (System Dynamics) فراهم است.

## شروع کار با نت لوگو
به منظور شروع کار با نت لوگو و آشنایی با زبان برنامه‌نویسی آن در ابتدا پیشنهاد می‌شود که ابتدا مدل‌های آماده‌ای که در کتابخانه این نرم‌افزار قرارگرفته استفاده کنید. به این منظور لازم است تا مطابق با شکل زیر کتابخانه‌ی مدل‌های نت‌لوگو در اختیار شما قرار بگیرد؛ سپس با انتخاب پوشه و مدل مدنظر خود در این قسمت می‌توانید مدل را مورد بررسی قراردهید.
وسط|بندانگشتی|365x365پیکسل|نحوه ورود به کتابخانه مدل‌های نت لوگو
این کتابخانه از 4 بخش تشکیل شده‌است:

* مدل‌های نمونه: بخش مدل‌های نمونه بر اساس موضوع تنظیم شده‌است و در حال حاضر بیش از 200 مدل را شامل می‌شود. این قسمت پیوسته در حال به‌روزرسانی و افزایش تعداد مدل‌ها می‌باشد.
* مدل‌های برنامه درسی: این مدل‌ها را مرکز یادگیری متصل دانشگاه نورث‌وسترن طی یک برنامه درسی، برای کاربرد در مدارس توسعه داده‌است. ممکن است قسمتی از این مدل‌ها با بخش مدل‌های نمونه اشتراک داشته‌باشد.
* مثال‌های کد: این بخش شامل مثال‌های ساده از مشخصه‌های خاص نت‌لوگو است. استفاده از این مدل‌ها در زمانی که مدل شخصی خودتان را در نت‌لوگو تولید می‌کنید، تا حد زیادی اجتناب‌ناپذیر است.
* فعالیت‌های Hub Net: این بخش نیز شامل شبیه‌سازی‌های مشارکتی برای استفاده بصورت گروهی است.

## آشنایی با المان‌های نت لوگو

### کنترل مدل: دکمه‌ها
با فشردن یک دکمه، شما واکنشی را در مدل فعال می‌کنید. یک دکمه می‌تواند یک دکمه یکباره (Once) یا یک دکمه همیشگی (forever) باشد. نماد روی هر دکمه این تفاوت را نشان می‌دهد، به‌صورتی که دکمه‌های همیشگی در گوشه سمت راست قسمت پایینی دو فلش بصورت دایره‌ای دارند. دکمه‌های یکباره یک عمل را تنها یک مرتبه انجام می‌دهند و سپس متوقف می‌شوند. در چنین دکمه‌هایی وقتی که عمل اتمام یافت سپس دکمه دوباره به حالت قبل برمی‌گردد. اما دکمه‌های همیشگی، یک عمل را بارها و بارها انجام می‌دهند. وقتی شما بخواهید عمل را متوقف کنید، دوباره این دکمه را فشار می‌دهید، این کار عمل فعلی را متوقف خواهدکرد و دکمه دوباره به حالت قبل برمی‌گردد. در واقع توقف دکمه‌های همیشگی یک روش رایج برای ایجاد مکث یا متوقف‌سازی مدل است. 

### اسلایدر سرعت
اسلایدر سرعت (speed) به شما این امکان را می‌دهد تا سرعت یک مدل را کنترل کنید. با حرکت این اسلایدر که در نوار فوقانی نرم‌افزار قرارگرفته‌است، با حرکت اسلایدر به سمت چپ مدل کندتر شده و مکث‌های طولانی‌تری در بین هرگام وجود دارد؛ این اتفاق منجر می‌شود تا درنظرگرفتن تغییرات توسط افراد به سادگی اتفاق بیفتد. با حرکت اسلایدر به سمت راست، سرعت مدل بالا رفته و در واقع نت‌لوگو شروع به پرش از روی فریم‌ها می‌کند و صرفا در بعضی از گام‌ها آن‌ را به‌روز می‌کند. بنابراین تعداد کمتر بروزرسانی‌ها به معنای پیشرفت سریعتر مدل است.

شایان بذکر است که در صورت جابجایی اسلایدر به سمت راست،‌ ممکن است نمای مدل به ندرت به‌روزرسانی شود تا حدی که بنظر برسد مدل کند شده‌است، که در واقع اینطور نیست، چون همانطور که پیشتر ذکرشد دفعات به‌روزرسانی مدل کمتر شده‌است.

### کنترل سرعت: سوییچ‌ها و اسلایدرها
تنظیمات یک مدل به شما امکان می‌دهد سناریو‌ها یا فرضیه‌های مختلف را بررسی کنید. تغییر تنظیمات و سپس اجرای مدل برای دیدن نحوه واکنش آن می‌تواند درک عمیق‌تری از پدیده‌های مدلسازی‌شده به شما بدهد. دسترسی به تنظیمات یک مدل را می‌دهد.

### گردآوری اطلاعات: نمودارها و مانیتورها
نرم‌افزار نت لوگو این امکان را فراهم می‌کند تا آنچه در مدل اتفاق می‌افتد را مشاهده کنید. افزون بر آن نت‌لوگو راه‌های دیگری برای ارائه اطلاعات در خصوص مدل را نیز دارد که نمودارها و مانیتورها از جمله آن‌ها هستند. 

نمودارها در واقع خطوط نشان‌دهنده تغییراتی هستند که در طول زمان اتفاق می‌افتند. هنگامی که یک نمودار نزدیک به پرشدن می‌شود، محور افقی جمع می‌شود و تمام داده‌های قبلی به فضای کوچکتری فشرده می‌شوند، در این حالت فضا برای رشد نمودار فراهم می‌گردد. همچنین در صورتی که بخواهید داده یک نمودار را استخراج کنید و در فرمت دیگری ذخیره و تحلیل نمایید؛ می‌توانید از منوی File گزینه Export Plot داده‌های مدنظر را در نرم‌افزار Excel وارد و ذخیره‌سازی کرد.

مانیتورها از ابزار دیگری برای نمایش اطلاعات از مدل هستند. که در هر زمان مقادیر مربوط به هرکدام از متغیرهای مورد نظر را به نمایش درمی‌آورند.

## آشنایی با فرمان‌های نت‌لوگو

### مرکز فرمان
مرکز فرمان را می‌توان در تب واسط کاربری مشاهده کرد. این قسمت به شما این امکان را می‌دهد تا فرمان‌ها یا جهت‌هایی به مدل بدهید. فرمان‌ها دستورالعمل‌هایی هستند که شما می‌توانید برای عامل‌های نت‌لوگو، یعنی ترتل‌ها (Turtles) پچ‌ها (Patches) و لینک‌ها و یا حتی مشاهده‌گر بنویسید.

در تصویر زیر نمونه‌ای از دستورات رایج مرکز فرمان آورده‌شده است. در این تصویر نمونه‌ای از این دستورالعمل‌ها برای مشاهده‌گر آورده شده‌است.
وسط|بندانگشتی|371x371پیکسل|درج دستور برای مشاهده‌گر در مرکز فرمان نت‌لوگو
همچنین به منظور تغییر عامل در مرکز فرمان نت‌لوگو می‌توان با انتخاب منوی موجود در گوشه سمت چپ کادر سفیدرنگ، شما می‌توانید نوع عامل را انتخاب کنید. افزون بر این شما با استفاده از کلید tab موجود در صفحه کلیدتان هم می‌توانید به این منظور استفاده بفرمایید.

## آشنایی با رویه‌ها (Procedures)
پس از شناخت المان‌ها و فرمان‌های نت‌لوگو لازم است که برای ساخت کامل یک مدل در این نرم‌افزار با رویه‌ها آشناشویم. تا بدین‌جای کار ما می‌دانیم که در نت‌لوگو ۴ عامل مختلف با نام‌های ترتل،‌ پچ‌ها، لینک‌ها و مشاهده‌گر وجود دارد. پچ‌ها اجزای ثابتی می‌باشند که در یک فضای مشبک چیده شده‌اند. ترتل‌ها روی پچ‌ها حرکت می‌کنند. لینک‌ها دو ترتل را به‌هم وصل می‌کنند. مشاهده‌گر بر اتفاقی که در نت‌لوگو رخ می‌دهد نظارت می‌کند و هرآنچه که سایر عوامل قادر به انجام آن برای خود نیستند را انجام می‌دهند.

همانطورکه هر 4 نوع این عوامل می‌توانند فرمان‌های نت‌لوگو را اجراکنند، برای هرکدام از این عوامل امکان تعریف رویه‌ها نیز وجوددارد. یک رویه مجموعه‌ای از فرمان‌های نت‌لوگو را در یک فرمان جدید واحد که شما تعریف می‌کنید ترکیب می‌کند. رویه‌ها می‌توانند منجر به حرکت ترتل‌ها، تغذیه آن‌ها، تولید مثل و حتی مرگ آن‌ها گردند.

در ادامه بنابرآن است تا ضمن ارائه یک مثال با ایجاد دکمه setup نحوه تعریف یک رویه ابتدایی مطرح گردد:

مطابق آنچه که در بالا گفت با ایجاد یک المان از نوع دکمه با نام setup و اختصاص توالی دستورات یک رویه جدید مطابق نظر خود تعریف کنید. با مراجعه به تب کدزنی نت لوگو و درج کد زیر در آن قسمت یک رویه برای setup تعریف می‌شود که با دقت خط به خط به این کد متوجه خواهیم شد که با فشردن دکمه مربوطه، ابتدا جهان به حالت اولیه و خالی خود بازمی‌گردد، تمامی پچ‌ها سیاه شده و تمامی ترتل‌هایی که از پیش ساخته شده‌بودند ناپدید می‌گردند. در ادامه 100 ترتل ایجاد شده و بصورت تصادفی در یک محدوده مجاز مختصات قرار می‌گیرند و شماره گام‌ها مجددا از سرگرفته می‌شود.
وسط|بندانگشتی|527x527پیکسل|تعریف یک رویه ساده در نت لوگو
شایان توجه است که تعریف هر رویه با درج عبارت «to» آغاز شده و با نوشتن «end» پایان می‌یابد.

## ترجمه فارسی راهنمای اصلی نت لوگو
به موازات توسعه نرم افزار نت لوگو، راهنمای اصلی (Netlogo User Manual) نیز توسعه می یابد. این راهنمای اصلی که به زیان انگلیسی نوشته می شود تاکنون ترجمه هایی از برخی نسخه های آن نیز به زیان های چینی (نسخه 4.0.2)، ژاپنی(5.3.1)، چکی (4.0.4) و اسپانیایی (6.0) ارایه شده است.  

ترجمه فارسی بخش های اصلی نسخه (6.2.0) نیز در سال 1399 توسط حسین سبزیان صورت پذیرفته است که در لینک  https://ccl.northwestern.edu/netlogo/resources/Persian-tutorial.pdfقابل دسترسی است. که به منظور آشنایی بیشتر با رویه‌ها و تعریف کامل یک مدل در نت‌لوگو توصیه می‌شود تا از این آموزش استفاده گردد.

## برخی کاربردها
بندانگشتی|نت لوگو

در تحقیقی از نت لوگو برای شبیه سازی یک مدل عامل محور و سپس ترکیب آن با یک تکنیک تصمیم گیری گروهی به منظور بهبود عملکرد دپارتمان های اورژانس  استفاده شد.

در تحقیق دیگری نیز از نت لوگو برای ایجاد یک شبیه سازی عامل بنیان و ترکیب ان با یادگیری ماشین و الگوریتم ژنتیک به منظور تخصیص بهینه منابع برای دپارتمان های اورژانس نیز استفاده شد.

در تحقیق دیگری نیز با استفاده از نت لوگو یک مدل عامل بنیان برای اقتصاد اسلامی توسعه یافت. در این مدل نحوه توزیع ثروت در جامعه، شکل گیری شکاف ثروت و کارکردهای اقتصاد اسلامی ( صدقه) در کاهش این شکاف مورد بررسی قرار گرفت .
## منابع

رده:پلت‌فرم جاوا
رده:زبان‌های برنامه‌نویسی شبیه‌سازی
رده:زبان‌های برنامه‌نویسی مبتنی بر عامل
رده:نرم‌افزار شبیه‌سازی
رده:نرم‌افزارهای آزاد برنامه‌نویسی‌شده با اسکالا
رده:نرم‌افزار عامل-بنیان