خانه نمونه‌ها اسکرین‌شات‌ها راهنمای کاربر لوگوی Bluesky YouTube
OghmaNano شبیه‌سازی سلول‌های خورشیدی آلی/پروسکایتی، OFETها و OLEDها دانلود

برازش داده‌های تجربی

1. نمای کلی

همان‌طور که می‌توانید معادله دیود را به یک منحنی JV تاریک برازش کنید تا فاکتور ایده‌آلی را استخراج کنید، OghmaNano به شما اجازه می‌دهد مدل‌های کامل دستگاه را مستقیماً به داده‌های تجربی برازش کنید. با کالیبره کردن شبیه‌سازی نسبت به اندازه‌گیری‌های خود، می‌توانید پارامترهای فیزیکی معنادار—تحرک‌ها، چگالی‌های حالت تله، مقاومت‌های تماس، ضرایب بازترکیب—را در یک چارچوب خودسازگار بازیابی کنید. در مقایسه با فرمول‌های تحلیلی ساده، یک برازش مبتنی بر فیزیک کوپل نوری–الکتریکی را حفظ می‌کند و بینش غنی‌تر و قابل‌اعتمادتری درباره سازوکارهای حاکم بر عملکرد ارائه می‌دهد. این آموزش روند کار برازش در OghmaNano را معرفی می‌کند و نشان می‌دهد چگونه متغیرها را انتخاب کنید، کمینه‌سازها را برگزینید و برازش‌های کارآمد و بازتولیدپذیر اجرا کنید.

2. اولین برازش شما

OghmaNano چندین شبیه‌سازی دمو را شامل می‌شود که نشان می‌دهند چگونه مدل‌ها را به داده‌های تجربی برازش کنید. یکی از این دموها از یک مدل ساده رانش–نفوذ به‌عنوان مثال استفاده می‌کند. برای دسترسی به آن، روی آیکون شبیه‌سازی جدید در نوار File کلیک کنید تا پنجره شبیه‌سازی جدید باز شود (شکل ??). از اینجا، روی دسته اسکریپت‌نویسی و برازش دوبار کلیک کنید تا پوشه‌ای که در شکل ?? نشان داده شده است باز شود. مثال برازش و استخراج پارامتر را انتخاب کنید تا یک پروژه نمایشی بارگذاری شود. هنگام باز شدن، یک شبیه‌سازی ساده سلول خورشیدی را اجرا می‌کند (شکل ??). اگرچه این دمو روی یک سلول خورشیدی تمرکز دارد، موتور برازش را می‌توان برای هر شبیه‌سازی و هر مجموعه داده تجربی به‌کار برد.

پنجره 'شبیه‌سازی جدید' که دسته‌های مختلف دستگاه را در OghmaNano نشان می‌دهد. دسته 'اسکریپت‌نویسی و برازش' برجسته شده است.
پنجره شبیه‌سازی جدید. برای دسترسی به مثال‌های برازش، دسته اسکریپت‌نویسی و برازش را انتخاب کنید.
پوشه 'اسکریپت‌نویسی و برازش' باز شده است و 'مثال برازش و استخراج پارامتر' را برجسته می‌کند.
داخل پوشه اسکریپت‌نویسی و برازش. برای بارگذاری یک پروژه نمایشی، روی مثال برازش و استخراج پارامتر دوبار کلیک کنید.

وقتی شبیه‌سازی جدید را ذخیره کردید، پنجره اصلی شبیه‌سازی ظاهر خواهد شد (??). از اینجا، به نوار Automation بروید (که با قرمز مشخص شده است) و آیکون برازش به آزمایش را انتخاب کنید تا به پنجره برازش ?? دسترسی پیدا کنید.

نوار Automation در OghmaNano با آیکون 'برازش به آزمایش' که برجسته شده است، و یک ساختار دستگاه سلول خورشیدی سه‌بعدی که در پنجره اصلی نمایش داده شده است.
نوار Automation در OghmaNano که آیکون برازش به آزمایش را نشان می‌دهد. انتخاب این گزینه پنجره اصلی برازش را باز می‌کند.
پنجره برازش OghmaNano با یک منحنی JV تجربی که در فضای کاری بارگذاری شده است.
پنجره برازش در نخستین باز شدن، که یک مجموعه داده تجربی JV روشنِ واردشده را آماده برازش نشان می‌دهد.

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

💡 تمرین عملی: استفاده از پنجره برازش

  1. کار 1 – یک تکرار: روی دکمه یک تکرار کلیک کنید تا نمای برازش به‌روزرسانی شود (??a). در زبانه Delta = Experiment − Simulation، منحنی JV شبیه‌سازی‌شده (آبی) را خواهید دید که روی منحنی JV تجربی (قرمز) قرار گرفته است، به‌همراه منحنی سبز delta که به‌صورت نقطه‌به‌نقطه به شکل \( \Delta(V) = J_{\mathrm{exp}}(V) - J_{\mathrm{sim}}(V) \) تعریف می‌شود. یک نقطه شروع خوب زمانی است که منحنی سبز در سراسر بازه ولتاژ به صفر نزدیک باشد.
  2. کار 2 – اجرای برازش: دکمه اجرای برازش را فشار دهید تا کمینه‌ساز خودکار آغاز شود (با فشردن دوباره آن اجرا متوقف می‌شود). در طول چند گام اول ممکن است خطا برای مدت کوتاهی افزایش یابد، اما سپس باید با همگرا شدن منحنی‌های شبیه‌سازی‌شده و تجربی کاهش یابد. به زبانه پیشرفت برازش بروید تا خطا را بر حسب تکرار رسم کنید (??b)؛ این نمودار همچنین برای رسم خارجی در fitlog.csv در پوشه شبیه‌سازی ذخیره می‌شود. روی یک پیکربندی معمولی این مرحله حدود ~30 s طول می‌کشد.
پنجره برازش OghmaNano که منحنی‌های JV شبیه‌سازی‌شده (آبی)، تجربی (قرمز) و delta (سبز) را پس از اجرای یک تکرار برازش نشان می‌دهد.
a) پس از یک تکرار برازش: منحنی‌های JV شبیه‌سازی‌شده (آبی)، تجربی (قرمز) و delta (سبز).
پنجره پیشرفت برازش OghmaNano که تابع خطا را در حال کاهش در تکرارهای متوالی نشان می‌دهد و بیانگر همگرایی است.
b) پیشرفت برازش: کاهش تابع خطا با شماره تکرار که همگرایی را نشان می‌دهد.

3. افزودن و حذف داده‌ها

پنجره اصلی برازش یک نوارابزار از فرمان‌ها را فراهم می‌کند که نحوه افزودن، مدیریت و برازش آزمایش‌ها را کنترل می‌کنند. این دکمه‌ها به شما امکان می‌دهند مجموعه داده‌ها را وارد یا حذف کنید، پیکربندی کنید کدام پارامترها تغییر داده شوند، و فرایند برازش را آغاز یا متوقف کنید. مهم‌ترین گزینه‌ها عبارت‌اند از:

4. نوار کمینه‌ساز

نوار کمینه‌ساز کنترل الگوریتم بهینه‌سازی مورد استفاده در طول برازش را فراهم می‌کند. از این زبانه می‌توانید انتخاب کنید کدام کمینه‌ساز به کار رود (برای مثال، Nelder–Mead downhill simplex پیش‌فرض) و تنظیمات آن را پیکربندی کنید. این نوار همچنین ابزارهایی برای مدیریت متغیرهای برازش، تکرار پارامترها، و اعمال قواعد ریاضی برای مقید کردن برازش در بر می‌گیرد. با تنظیم این گزینه‌ها می‌توانید نحوه‌ای را که الگوریتم فضای پارامتر را کاوش می‌کند کنترل کنید، میان سرعت و دقت تعادل برقرار کنید، و اطمینان یابید که قیود فیزیکی معنادار در طول فرایند برازش اعمال می‌شوند.

پنجره برازش OghmaNano که زبانه Minimizer را با گزینه‌هایی برای متغیرهای برازش، متغیرهای تکراری، قوانین برازش و انتخاب کمینه‌ساز (Nelder–Mead برجسته شده) نشان می‌دهد.
زبانه Minimizer در پنجره برازش که در آن می‌توانید الگوریتم بهینه‌سازی را انتخاب کنید (برای مثال Nelder–Mead) و قواعد، تکرار متغیرها و تنظیمات کمینه‌ساز را پیکربندی کنید.

5. تنظیم متغیرهایی که باید برازش شوند

پنجره Fit variables در OghmaNano که فهرستی از پارامترهای فعال و غیرفعال مانند چگالی بار، تحرک، چگالی‌های تله و مقاومت‌ها را همراه با کنترل‌هایی برای min، max، تابع خطا و مقیاس لگاریتمی نشان می‌دهد.
پنجره Fit variables. این رابط به شما امکان می‌دهد انتخاب کنید کدام پارامترها در طول برازش تغییر داده شوند، و بازه‌های مجاز، جریمه‌های خطا و مقیاس‌بندی آن‌ها را مشخص کنید. فعال یا غیرفعال کردن متغیرها در اینجا مستقیماً کنترل می‌کند که کمینه‌ساز چگونه فضای پارامتر را کاوش کند.

برای باز کردن پنجره Fit variables، به نوار Minimizer در پنجره برازش (شکل ??) بروید و روی Fitting variables کلیک کنید. این پنل (شکل ??) به شما اجازه می‌دهد انتخاب کنید کدام پارامترها در طول برازش تغییر داده شوند و کران‌های آن‌ها را تعیین کنید. برای سرعت و پایداری، با یک مجموعه کوچک از پارامترهای متقارن شروع کنید؛ فقط پس از آن‌که یک برازش اولیه معقول به دست آوردید، پارامترهای بیشتری اضافه کنید (یا عدم تقارن وارد کنید).

جدول Fit variables شامل هفت ستون است: فعال‌شده، متغیر، حداقل، حداکثر، تابع خطا، مقیاس لگاریتمی، و متغیر (JSON).

6. تکرار متغیرها

پنجره Duplicate variables در OghmaNano که جدولی را نشان می‌دهد که متغیرهای مبدأ، مانند تحرک الکترون یا چگالی‌های تله، را به متغیرهای مقصد نگاشت می‌کند تا تقارن در طول برازش حفظ شود.
پنجره Duplicate variables. این ابزار مقادیر را از یک متغیر مبدأ به یک متغیر مقصد کپی می‌کند و تضمین می‌کند پارامترها در طول برازش متقارن باقی بمانند (برای مثال، تطبیق تحرک‌های الکترون و حفره).

پنجره Duplicate variables را از نوار Minimizer (??) باز کنید. این ابزار در هر تکرار، یک پارامتر مبدأ را به یک پارامتر مقصد آینه می‌کند. در مثال دستگاه متقارن، فقط پارامتر سمت الکترون را برازش می‌کنیم و از Duplicate variables استفاده می‌کنیم تا مقدار آن را به پارامتر متناظرِ سمت حفره کپی کنیم و آن‌ها را در سراسر برازش برابر نگه داریم (نگاه کنید به ??).

ستون Function y = f(x) مشخص می‌کند که مقدار مبدأ x چگونه پیش از نوشته شدن در مقصد y تبدیل شود. مقدار پیش‌فرض x یک کپی مستقیم انجام می‌دهد؛ مثال‌هایی مانند 2*x (دو برابر کردن مقدار) یا x + 0.05 (اعمال یک offset) نیز ممکن هستند.

7. قوانین برازش

پنجره Fit rules (??) که از نوار Minimizer قابل دسترسی است، به شما امکان می‌دهد قیود ریاضی را به فرایند برازش اعمال کنید. هرگاه یک شرط نقض شود، قوانین یک جریمه به تابع خطا اضافه می‌کنند. برای مثال، می‌توانید اعمال کنید که یک پارامتر باید همیشه از پارامتر دیگری بزرگ‌تر باشد، یا اگر یک متغیر از یک بازه قابل‌قبول خارج شود جریمه اعمال کنید. این کار به حفظ معناداری فیزیکی برازش کمک می‌کند و از کاوش کمینه‌ساز در ترکیب‌های پارامتری غیرواقعی جلوگیری می‌کند.


پنجره Fit rules در OghmaNano که جدولی را نشان می‌دهد که در آن می‌توان قیودی مانند x > y را بین متغیرها تعریف کرد، همراه با گزینه‌هایی برای فعال یا غیرفعال کردن هر قانون.
پنجره Fit rules. در اینجا کاربران می‌توانند قیودی مانند x > y را برای اعمال روابط بین پارامترها تعریف کنند. اگر یک قانون نقض شود، یک خطای اضافی به برازش افزوده می‌شود و کمینه‌ساز را به یک ناحیه معتبر از فضای پارامتر بازمی‌گرداند.

💡 نکته‌ها و ترفندهای کلیدی برای برازش:

  1. به‌طور کلی، برازش یک فرایند دشوار است که به صبر زیاد و تنظیم دقیق دستی نیاز دارد. انتظار نداشته باشید با یک کلیک همه‌چیز خودبه‌خود کار کند — برای رسیدن به برازش‌های خوب باید با دقت کار کنید.
  2. اگر برازش کار نمی‌کند، ممکن است فرضیات فیزیکی شما درباره دستگاه نادرست باشند. مدل فقط داده‌های فیزیکی معقول را برازش می‌کند، بنابراین اگر چیزی یک مرتبه بزرگی اختلاف دارد، در فرضی که از مدل می‌خواهید انجام دهد بازنگری کنید. برای مثال، اگر اصلاً نمی‌توانید \(J_{sc}\) را در یک سلول خورشیدی منطبق کنید، آیا ممکن است ماده شما به‌سادگی فوتون کافی جذب نکند تا به مقدار مطلوب \(J_{sc}\) برسد؟
  3. مجموعه داده‌های مختلف، انواع مختلفی از اطلاعات را فراهم می‌کنند. برای مثال، منحنی JV تاریک یک سلول خورشیدی بینش‌هایی درباره مقاومت شنت، مقاومت سری، و برخی جزئیات تحرک/بازترکیب فراهم می‌کند. منحنی JV روشن، با این حال، تقریباً هیچ اطلاعاتی درباره مقاومت شنت فراهم نمی‌کند، بنابراین انتظار نداشته باشید برآوردهای دقیقی از \(R_{shunt}\) به شما بدهد. همیشه پیش از تفسیر پارامترهای برازش‌شده، به این فکر کنید که داده شما چه اطلاعاتی در خود دارد.
  4. فرایند برازش به این صورت عمل می‌کند: 1) اجرای یک شبیه‌سازی؛ 2) محاسبه اختلاف بین نتایج عددی و تجربی؛ 3) تنظیم پارامترها؛ 4) اجرای دوباره شبیه‌سازی و بررسی این‌که آیا خطا کاهش یافته است؛ 5) اگر خطا کاهش یابد، تغییر پارامتر پذیرفته می‌شود و فرایند تکرار می‌شود. این کار می‌تواند صدها یا هزاران تکرار طول بکشد. بنابراین، شبیه‌سازی‌های منفرد باید سریع اجرا شوند. برای مثال، اگر مش شما 1000 نقطه دارد، برای برازش آن را به 10 کاهش دهید؛ اگر 1000 گام زمانی دارید، آن را به 100 کاهش دهید. هر افزایش سرعت در شبیه‌سازی پایه، فرایند برازش را نیز سریع‌تر می‌کند.
  5. نوشتن فایل‌ها روی دیسک کندترین بخش هر فرایند محاسباتی است. حتی SSDهای مدرن نیز حدود 30× کندتر از حافظه اصلی هستند (برای مثال 456 MB/s در برابر 12,800 MB/s برای PC3-12800). استفاده از درایوهای USB، ذخیره‌سازی شبکه‌ای، یا خدمات ابری مانند OneDrive/Dropbox این مسئله را حتی بدتر می‌کند. برای سرعت بیشتر، همیشه شبیه‌سازی‌ها را روی یک SSD محلی ذخیره کنید (نه روی درایو شبکه‌ای یا مکانیکی).
  6. تعداد فایل‌هایی را که شبیه‌سازی شما تولید می‌کند به حداقل برسانید. خروجی‌های غیرضروری مانند snapshots، خروجی نوری، یا پوشه‌های دینامیکی را خاموش کنید. یک شبیه‌سازی خوب پیکربندی‌شده باید فقط حدود 50 فایل تولید کند. اگر صدها فایل می‌بینید، بررسی کنید چرا.
  7. اگرچه برازش را می‌توان در GUI انجام داد، اما اغلب کند است. یک روش خوب این است که برازش‌ها را در GUI تنظیم کنید اما آن‌ها را از خط فرمان اجرا کنید (دستورالعمل‌ها در ادامه داده شده‌اند).
  8. از آنجا که برازش فایل‌های زیادی را روی دیسک می‌نویسد، نرم‌افزارهای آنتی‌ویروس می‌توانند با اسکن هر فایل باعث کندی شوند. در صورت بروز این مشکل، پوشه شبیه‌سازی خود را از اسکن بلادرنگ مستثنا کنید.

👉 گام بعدی: اکنون به بخش B ادامه دهید تا با روش‌های پیشرفته‌تر برازش آشنا شوید.