بهرهبرداری و طراحی بهینهی سیستم انرژی-آب یکپارچه
تعیین اندازهی بهینهی تجهیزات و برنامهی بهرهبرداری ساعتی یک سیستم یکپارچهی بادی، خورشیدی، باتری، شبکه، و آبشیرینکن با افق پنجساله، با استفاده از مدلسازی ریاضی مشترک سایزینگ و عملیات و با نگاه به کاهش اثرات زیستمحیطی و انتشار کربن.
📋 معرفی پروژه
هدف: طراحی و بهرهبرداری بهینهی یک سیستم یکپارچهی انرژی-آب برای:
- ✅ کاهش هدررفت تولید تجدیدپذیر (بادی و خورشیدی) با استفاده از باتری و بار انعطافپذیر آبشیرینکن
- ✅ تعیین اندازهی اقتصادی تجهیزات (توربین، پنل، باتری، آبشیرینکن، مخزن آب)
- ✅ تدوین برنامهی ساعتی بهینهی بهرهبرداری در افق پنجساله
- ✅ کاهش وابستگی به شبکه و هزینهی تأمین آب
- ✅ کاهش انتشار کربن با افزایش سهم تجدیدپذیر در تأمین برق و آب
اگر با مبانی مدلسازی ریاضی مسائل بهینهسازی آشنا نیستید، دوره مدلسازی مسائل بهینهسازی پیشزمینهی خوبی میدهد.
تصویر بالا ساختار کلی سیستم را نشان میدهد: باد و خورشید تولید متغیر دارند، شبکه نقش پشتیبان را بازی میکند، و باتری و آبشیرینکن دو دارایی انعطافپذیرند که مازاد تولید تجدیدپذیر را جذب میکنند — یکی بهصورت مستقیم (ذخیرهی برق) و دیگری بهصورت غیرمستقیم (تبدیل به آب و ذخیره در مخزن). هرچه سهم این جذب مازاد تجدیدپذیر بیشتر باشد، وابستگی به برق شبکه (و انتشار کربن ناشی از آن) کمتر میشود.
🎯 ۱۰ تحویل پروژه
تحویل ۱: مدلسازی ریاضی سیستم و تدوین مسئله
اهداف:
- تعریف ریاضی مسئلهی بهینهسازی
- مشخص کردن متغیرهای تصمیم، تابع هدف و قیود
- تفکیک دو لایهی تصمیم: سایزینگ (سرمایهگذاری) و بهرهبرداری (عملیات)
خروجی:
- گزارش مدل ریاضی
- فرمولبندی موازنهی برق و موازنهی آب
- فرمولبندی دینامیک ذخیرهسازها (SOC باتری، سطح مخزن آب)
تحویل ۲: جمعآوری و پردازش دادهها
اهداف:
- جمعآوری یا تولید پروفایلهای ساعتی باد، تابش خورشیدی، قیمت برق، و تقاضای آب
- جمعآوری ضریب انتشار کربن برق شبکه (kg CO₂ به ازای هر kWh)، ثابت یا ساعتی
خروجی:
- فایل داده شامل: پروفایلهای تجدیدپذیر، قیمت برق، تقاضای آب، ضریب انتشار کربن شبکه
- نمودارهای توصیفی منابع و تقاضا
تحویل ۳: کدنویسی مدل بهرهبرداری پایه (Baseline)
اهداف:
- پیادهسازی موازنهی توان بدون باتری و بدون انعطاف در بار آبشیرینکن
- تعیین سناریوی مبنا برای مقایسه
خروجی:
# کد Pyomo:
# - متغیرهای: توان تجدیدپذیر، مبادله با شبکه، توان آبشیرینکن (ثابت)
# - قیود: موازنهی توان، محدودیت شبکه
# - هدف: کمینهسازی هزینهی خرید برق
- کد کامل + نتایج baseline
- میزان هرزروی تجدیدپذیر و میزان انتشار کربن در سناریوی مبنا (نقطهی مرجع برای مقایسه)
تحویل ۴: مدلسازی باتری و آبشیرینکن
اهداف:
- اضافهکردن متغیرهای باتری (شارژ/دشارژ/SOC) و آبشیرینکن (توان، تولید آب)
- تدوین قید مخزن آب و تبدیل برقبهآب
خروجی:
# متغیرهای جدید:
m.soc[t] # سطح شارژ باتری در زمان t
m.p_charge[t], m.p_discharge[t]
m.p_desal[t] # توان مصرفی آبشیرینکن
m.water_tank[t] # سطح مخزن آب
- قیود: حد SOC، بازده شارژ/دشارژ، حداقل/حداکثر بار آبشیرینکن، موازنهی مخزن
- کد اولیه با تحلیل قیود
تحویل ۵: تدوین هدف (Objective Function) چندجزئی
اهداف:
- تعریف اجزای هدف:
- کمینهسازی هزینهی خالص مبادله با شبکه
- کمینهسازی هرزروی تجدیدپذیر
- کمینهسازی انتشار کربن ناشی از خرید برق از شبکه
- جریمهی کمبود آب
خروجی:
- فرمول ریاضی اجزای هدف، از جمله جزء انتشار کربن: (ضریب انتشار × توان خریداریشده از شبکه در هر ساعت)
- ترکیب وزندار اجزا (هزینه، هرزروی، کربن، کمبود آب)
- بحث در مورد trade-off بین هزینه، قابلیت اطمینان تأمین آب، و کاهش انتشار کربن
تحویل ۶: حل مسئله برای یک بازهی کوتاه (Test Case)
اهداف:
- اجرای مدل روی یک بازهی کوتاه (مثلاً یک هفته)
- تصحیح syntax و logic errors
- بررسی معقولبودن رفتار باتری و مخزن آب
خروجی:
# نتایج:
# - برنامهی ساعتی شارژ/دشارژ باتری
# - برنامهی تولید آب و سطح مخزن
# - مقایسهی هرزروی با سناریوی baseline
- نمودارهای dispatch stack و سطح مخزن
- مقایسه با baseline
تحویل ۷: افق سال نماینده و قید تناوبی
اهداف:
- کاهش افق ۵ ساله به یک سال نماینده (۸۷۶۰ ساعت) با ضرب هزینهی عملیاتی در ۵
- تعریف قید تناوبی (cyclic) برای SOC باتری و سطح مخزن آب، تا سال بدون پرش غیرواقعی تکرار شود
- بحث محدودیتهای این سادهسازی (بدون تخریب تجهیزات، بدون رشد تقاضا، بدون تنزیل زمانی)
خروجی:
- فرمولبندی قید تناوبی: و مشابه آن برای مخزن آب
- گزارش کوتاه دربارهی فرضهای سادهسازی و اعتبار آنها
تحویل ۸: بهینهسازی مشترک سایز و عملیات
اهداف:
- تعریف ظرفیت هر تجهیز بهعنوان متغیر تصمیم مدل (نه پارامتر ورودی ثابت)
- حل یکجای مسئله: تعیین سایز بهینه و برنامهی ساعتی عملیات در یک solve واحد
خروجی:
# متغیرهای سایز (بدون اندیس زمانی):
m.wind_capacity, m.pv_capacity
m.battery_energy_capacity, m.desal_capacity
# در قیود هر ساعت ظاهر میشوند، مثلاً:
# p_wind[t] <= wind_capacity * cf_wind[t]
- جواب بهینهی مشترک سایز و عملیات، بدون نیاز به مقایسهی دستی چند سناریوی کاندید
- گزارش زمان و اندازهی حل (تعداد متغیر، زمان اجرا)
تحویل ۹: تحلیل سناریو و حساسیت
اهداف:
- بررسی نتایج در سناریوهای مختلف:
- افزایش نفوذ تجدیدپذیر
- تغییر قیمت باتری و آبشیرینکن
- رشد تقاضای آب در طول افق
- تغییر وزن جزء کربن در تابع هدف و اثر آن بر سایز تجهیزات و انتشار کل
خروجی:
- جداول تحلیل حساسیت
- نمودارهای اثر متغیرهای کلیدی بر هزینه، هرزروی، و انتشار کربن
- منحنی موازنهی هزینه در برابر کاهش کربن (cost–carbon trade-off curve)
- توصیههای برنامهریزی
تحویل ۱۰: گزارش نهایی و ارائه
اهداف:
- خلاصهی تمام یافتهها
- توصیههای عملی برای سایزینگ و بهرهبرداری
- جمعبندی اثر زیستمحیطی طرح (میزان کاهش انتشار کربن نسبت به سناریوی مبنا)
- راهکارهای توسعهی آینده (مثلاً افزودن عدمقطعیت)
خروجی:
- گزارش نهایی ۱۰ صفحهای، شامل بخش اثرات زیستمحیطی
- ارائه و اسلایدهای خلاصه
- کد کامل با مستندات
- فایلهای داده و نتایج
📊 نتایج انتظاری
پس از تکمیل پروژه، باید بتوانید:
✅ مسئلهی سایزینگ و بهرهبرداری سیستم انرژی-آب را به شکل ریاضی فرموله کنید ✅ کد Pyomo برای حل مدل عملیاتی و مدل سایزینگ تولید کنید ✅ الگوریتم بهینهسازی مشترک سایزینگ و عملیات را برای مسائل بزرگمقیاس پیادهسازی کنید ✅ نتایج را تفسیر کنید و توصیههای عملی دربارهی اندازهی تجهیزات ارائه دهید ✅ میزان کاهش انتشار کربن ناشی از طرح را کمّی کنید و آن را در کنار هزینه گزارش دهید ✅ گزارش حرفهای و ارائهی قابل قبول برای صنعت تدوین کنید
📁 فایلهای پروژه
| تحویل | فایل | توضیح |
|---|---|---|
| ۱ | model_formulation.pdf | مدل ریاضی کامل |
| ۲ | system_data.xlsx | پروفایلهای تجدیدپذیر، قیمت، تقاضای آب، ضریب انتشار شبکه |
| ۳ | baseline_dispatch.py | کد baseline بدون باتری/انعطاف |
| ۴-۶ | storage_desal_model_v*.py | نسخههای مختلف مدل عملیاتی |
| ۷-۸ | joint_sizing_operation_model.py | مدل مشترک سایزینگ و عملیات با قید تناوبی |
| ۹ | sensitivity_analysis.py | تحلیل حساسیت، شامل منحنی هزینه-کربن |
| ۱۰ | final_report.pdf + presentation.pptx | گزارش و ارائه، شامل بخش اثرات زیستمحیطی |
🚀 شروع کار
پیش از شروع کدنویسی، مرور یادداشت مدلسازی ریاضی و اهمیت آن کمک میکند مسئله را درست فرموله کنید. برای اجرای کد بدون نصب چیزی روی سیستم خودتان، راهنمای Google Colab و برای انتخاب سالور مناسب، یادداشت سه روش عملی استفاده از سالورها در Pyomo را ببینید. اگر میخواهید فراتر از سناریوهای قطعی بروید و عدمقطعیت تولید تجدیدپذیر یا تقاضای آب را هم صریح در مدل وارد کنید، دوره مدلسازی عدمقطعیت ابزار لازم را میدهد.
سوالات متداول
آیا برای این پروژه لازم است پیشزمینهی قوی در سیستم قدرت داشته باشم؟
نه لزوماً؛ آنچه بیشتر لازم است آشنایی با مفاهیم پایهی برنامهریزی خطی و مختلط-عدد صحیح است. در دوره سیستم قدرت پیشرفته این مفاهیم از پایه و با مثالهای عملی روی پایتون آموزش داده میشوند تا کسی که پیشزمینهی بهینهسازی دارد هم بتواند وارد این حوزه شود.
آیا نیاز به دانش تخصصی در حوزهی آبشیرینکن دارم؟
نه؛ در این پروژه آبشیرینکن با یک ضریب سادهی تبدیل برقبهآب (kWh به ازای هر متر مکعب) مدل میشود و جزئیات فرآیندی (مانند فشار غشا یا شیمی آب) وارد مدل نمیشوند. تمرکز پروژه روی جنبهی بهینهسازی سیستمی است، نه طراحی فرآیندی آبشیرینکن.
اثر زیستمحیطی و کاهش کربن چطور در مدل لحاظ میشود؟
با تعریف یک ضریب انتشار کربن برای برق خریداریشده از شبکه (بر حسب kg CO₂ به ازای هر kWh) و افزودن جزء متناظر آن به تابع هدف چندجزئی. هرچه سیستم بیشتر از تجدیدپذیر و ذخیرهساز بهجای شبکه استفاده کند، این جزء کوچکتر میشود. در تحویل ۹ میتوان وزن این جزء را تغییر داد و منحنی موازنهی هزینه در برابر کاهش کربن را ترسیم کرد تا مشخص شود چه مقدار کاهش انتشار با چه هزینهی اضافی بهدست میآید.
ثبتنام و دریافت پروژه
برای دریافت پروژه و راهنمایی، در تلگرام به آیدی @pypyid در تلگرام در تماس باشید.