شبیهسازی با پایتون یک مهارت کاربردی است که میتواند در بسیاری از حوزهها مانند علم داده، فیزیک، اقتصاد، مهندسی و غیره مفید باشد. در این راهنما، به شما آموزش میدهیم که چگونه با استفاده از پایتون یک شبیهسازی ساده را ایجاد کنید و ابزارهای مهمی که میتوانید برای شبیهسازی استفاده کنید را معرفی میکنیم.
۱. مقدمات: نصب کتابخانهها
پایتون دارای کتابخانههای قدرتمندی برای شبیهسازی و مدلسازی است. برخی از مهمترین کتابخانهها عبارتند از:
NumPy: برای انجام محاسبات عددی سریع.
Matplotlib: برای رسم نمودارها و مصور سازی.
SimPy: یک کتابخانه اختصاصی برای شبیهسازی فرآیندهای گسسته.
SciPy: برای محاسبات علمی و ریاضی.
برای نصب این کتابخانهها از دستورهای زیر استفاده کنید:
bash
pip install numpy matplotlib simpy scipy
۲. شبیهسازی پایهای: شبیهسازی یک سیستم صف با SimPy
برای شروع، بیایید یک شبیهسازی ساده از یک سیستم صف را انجام دهیم. فرض کنید که مشتریان به یک بانک مراجعه میکنند و باید در صف منتظر بمانند تا یک کارمند به آنها خدمات دهد.
گام ۱: تعریف محیط و موجودیتها
ابتدا، محیط شبیهسازی و رفتار مشتریان را تعریف میکنیم. در SimPy، محیط (environment) برای مدیریت زمان و رویدادها استفاده میشود.
python
import simpy import random# زمان بین ورود مشتریان (به طور میانگین)
ARRIVAL_INTERVAL = 5
# زمان سرویسدهی (به طور میانگین)
SERVICE_TIME = 3
# تعریف رفتار مشتری defcustomer(env, name, counter): print(f’{name} وارد بانک شد در زمان {env.now}‘) with counter.request() as req: yield req print(f’{name} در حال دریافت خدمات است در زمان {env.now}‘) yield env.timeout(SERVICE_TIME) print(f’{name} بانک را ترک کرد در زمان {env.now}‘)
# تعریف محیط شبیهسازی و اجرا
env = simpy.Environment()
counter = simpy.Resource(env, capacity=1) # تنها یک کارمند در بانک
env.process(setup(env, counter))
env.run(until=20) # شبیهسازی را برای 20 واحد زمانی اجرا کن
توضیح کد:
simpy.Environment(): محیطی را ایجاد میکند که در آن شبیهسازی انجام میشود.
counter = simpy.Resource(env, capacity=1): یک منبع (resource) به نام “counter” را تعریف میکند که نشاندهنده کارمند بانک است. ظرفیت ۱ به معنای این است که تنها یک مشتری میتواند در هر زمان خدمات دریافت کند.
customer(env, name, counter): فرآیند مشتری که وارد بانک میشود، خدمات میگیرد و سپس آن را ترک میکند.
env.process(customer(...)): فرآیند مشتری را به محیط اضافه میکند تا در شبیهسازی اجرا شود.
env.run(until=20): شبیهسازی را برای ۲۰ واحد زمانی اجرا میکند.
۳. مصور سازی دادههای شبیهسازی با Matplotlib
اکنون بیایید دادههای شبیهسازی شده را با استفاده از Matplotlib مصور کنیم. فرض کنید میخواهیم تعداد مشتریان در صف را در هر لحظه از زمان نمایش دهیم.
گام ۲: ایجاد شبیهسازی و جمعآوری دادهها
python
import simpy import random import matplotlib.pyplot as pltARRIVAL_INTERVAL = 5
SERVICE_TIME = 3
# لیست برای ذخیره تعداد مشتریان در صف در هر لحظه
queue_lengths = []
time_points = []
# رفتار مشتری defcustomer(env, name, counter): with counter.request() as req: yield req yield env.timeout(SERVICE_TIME)
# ثبت تعداد مشتریان در صف در هر لحظه defmonitor_queue(env, counter): whileTrue:
queue_lengths.append(len(counter.queue))
time_points.append(env.now) yield env.timeout(1) # هر یک واحد زمانی ثبت کن
دیدگاهتان را بنویسید