توضیحات
Modelling hierarchical decision making framework for operation of active distribution grids
توضیحات کلی
همانطور که قبلا اعلام شده بود، شبیه سازی با استفاده از GAMS انجام شدهاست.
برای حل مسئله در این نرم افزار، از سلور (Solver) معروف CPLEX استفاده شده است.
بنابراین قبل از ران کردن برنامه، توجه داشته باشید که این سلور بر روی گمز شما باید به صورت کامل (Full) کرک شدهباشد.
در ادامه روند شبیه سازی به صورت خط به خط توضیح داده شدهاست.
دقت شود که در جلوی عبارات، توضیح مختصری نیز به صورت کامنت نوشته شدهاست که برای فهم ساده تر کدنویسی میباشد.
همانند مقاله، شبیهسازی به دو روش Bi_level و centralized انجام شدهاست که هر یک از شبیهسازیهای مربوط نیز با همین اسم ذخیرهشدهاست.
در ادامه ابتدا شبیهسازی Bi_level توضیح داده شده و در اخر نیز تفاوتهای کدنویسی آن با روش centralized بیان میشود.
توضیحات شبیهسازی Bi_level
مرحله اول، شامل تعریف دادههای ورودی مسئله میباشد.
در برنامه گمز، دادهها به چهار شکل: مجموعهها، پارامترها، جدولها و اعداد اسکالر تعریف میشوند.
مجموعهها برای تعریف اندیسها بکار میروند.
به عنوان مثال برای تعریف تعداد ساعات شبیهسازی که شامل 1 الی 24 ساعت میباشد، از یک مجموعه با نام T استفاده شدهاست.
فرمت تعریف مجموعه به صورت زیر میباشد:
Set
T SET of Time /1*24/
در ابتدا نام مجموعه تعریف میشود که برای ساعات شبیهسازی با T نامگذاری شدهاست، در ادامه میتوان یک توضیح به صورت کامنت برای مجموعه تعریف کرد که در اینجا SET of Time آمدهاست، آوردن این توضیحات اختیاری بوده و نیازی نیست حتما آورده شود.
در نهایت اعضای مجموعه تعریف میشود که به صورت /1*24/ تعریف شده و به معنای اعداد بین 1 الی 24 میباشد.
مجموعههای دیگر شامل تعداد سناریوهای سرعت باد (Sw)، تعداد سناریوهای مربوط به عدم قطعیت بار (Sl)، تعداد کل سناریوها (S)، تعداد ریزشبکهها (J) و تعداد متغیرهای دوگان (I) میباشد که به صورت زیر تعریف شدهاست.
Sw SET Of Wind Speed Senario /1*5/
Sl SET Of Load Senario /1*7/
S SET Of Senario /1*35/
J SET Of MG /1*3/
I set of greater than or equal to zero constraints /1*19/
فرمت تعریف سایر ورودیها نیز مشابه مجموعهها میباشد.
سرعت باد به صورت یک پارامتر و به صورت Parameter V(T) تعریف شدهاست.
زیرا سرعت باد به صورت ساعتی میباشد.
دادههای مربوط به سرعت باد از مرجع [23] مقاله بیس برداشته شدهاست.
اطلاعاتی که به صورت برداری هستن، به صورت پارامتر تعریف میشوند.
پارامتر را میتوان مانند V(T)، بلافاصله بعد از تعریف مقداردهی کرد و یا در ابتدا تعریف کرده و در جای دیگه مقدار دهی کرد.
ورودیها دیگر نظیر میانگین سرعت باد نرمالیزه شده در هر سناریو Va(sw)، توان باد در هر سرعت و سناریو Pw(T,sw)، احتمال رخداد هر یک از سناریوهای سرعت باد Piw(sw)، احتمال رخداد هر یک ازسناریوهای بار Piload(Sl) و توان نامی توربین بادی در هر یک از میکروگریدها Pr(J) به صورت زیر پارامتری تعریف شدهاست.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
برای تعریف اعداد ثابت نیز از فرمت SCALAR استفاده میشود.
به عنوان مثال، سرعت وصل توربین بادی Vi، سرعت نامی توربین بادی Vr، سرعت قطع توربین بادی Vo و سرعت باد در هر سناریو Vas به صورت اسکالر و مطابق کد زیر تعریف شدهاست.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
در مرحله بعدی، توان توربین بادی بر اساس سرعت باد در سناریو و مطابق رابطه 40 مقاله، به صورت زیر محاسبه شدهاست.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
در گمز برای تعریف حلقه تکرار از Loop استفاده میشود.
در کد بالا، یک حلقه تکرار برای هر ساعت و یک حلقه تکرار نیز برای هر سناریو نوشته شده است تا توان توربین بادی برای سرعت و هر سناریو محاسبه شود.
در گمز برای تعریف دادههای چندبعدی یا اصطلاحا ماتریسها، از فرمت Table استفاده میشود.
به عنوان مثال، دادههای جدول 3 مقاله به صورت Table با نام DATA(T,*) نامگذاری شدهاست.
تعداد سطرهای جدول برابر تعداد ساعات یعنی T میباشد ولی چون ستونها با اسمهای متفاوت نامگذاری شدهاست، در زمان تعریف جدول، نام ستونها با * نشان دادهشدهاست.
دادههای این جدول به ترتیب شامل میانگین بار مصرفی میکروگریدها در هر ساعت (D1,D2,D3)، قیمت خرید برق از بازار برای DISCO (Pm)، و قیمت قطع بار (LC) میباشد.
در ادامه، دادههای جدول DATA در پارامترهای جداگانه ریخته شدهاست.
برای این کار سه پارامتر به ترتیب برای هزینه قطع بار با نام CIL(J,T)، هزینه خرید برق از بازار عمدهفروشی با نام RoM(T) و میانگین تقاضای هر ریزشبکه با نام Dmg(T,J) تعریف شدهاست.
در ادامه دادههای جدول DATA در این پارامترها ریخته شدهاست. این کار به صورت کد زیر انجام شدهاست.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
درصد انحراف معیار تغییرات بار با Delta تعریف شدهاست که برابر 5 درصد میانگین تقاضا میباشد.
مقدار توان مصرفی هر یک از میکروگریدها در هر سناریوی بار و در هر ساعت در پارامتر Ds(J,T,Sl) ذخیرهشدهاست.
این کار مطابق شکل 9 مقاله، به صورت زیر انجام شدهاست.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
به عنوان مثال بر اساس شکل 9، توان مصرفی در سناریو 1 برابر میباشد.
بخشی از گزارش در اینجا حذف شده است.
این حالت برای سناریوهای دیگر نیز صادق میباشد.
برای سرعت باد 5 سناریو و برای بار 7 سناریو تعریف شدهاست.
بنابراین تعداد کد سناریوها برابر 5 ضرب در 7 یعنی 35 سناریو خواهدبود.
احتمال رخداد هر سناریو، با ضریب احتمال رخداد سناریوهای بادی در سناریوهای بار بدست میآید که در پارامتر Pi(S) ذخیره میشود.
مقدار بار و توان بادی در هر سناریو که قبلا محاسبه شدهاند، به صورت کد زیر در متغیرهای Pdemand(J,T,S) و PWT(J,T,S) ذخیره میشود.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
دادههای جدول 1 نیز به صورت پارامتر و مطابق کد زیر ذخیره شدهاست.
در این کدها، برای هر متغیر، یک توضیح کوتاه نیز نوشته شدهاست.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
برخی دادههای اسکالر نیز در ادامه تعریف شدهاست که شامل حداکثر توان مبادلهای بین Disco و ریزشبکه (PTmax)، حداکثر توان مبادلهای بین Disco و بازار عمده فروشی (PMmax)، حداکثر بار قابل قطع به صورت درصد از بار کل (PILmax)، حداکثر قیمت فروش برق به ریزشبکهها (pDmax) و دو عدد بزرگ M1 و M2 میباشند که به صورت زیر تعریف شدهاست.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
در مرحله بعد، متغیرهای مسئله (Variable) تعریف میشود.
متغیر به پارامترهایی گفته میشود که مجهول بوده و با حل مسئله به دنبال پیدا کردن آنها هستیم.
به عنوان مثال مقدار تابع هدف که به دنبال ماکزیمم کردن آن هستیم در متغیر Z ریخته میشود.
تمام متغیرها مطابق نام آنها در مقاله نامگذاری شدهاند و توضیح مربوط به آنها نیز در جلوی آنها نوشته شدهاست.
متغیرها به صورت زیر تعریف میشوند.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
بعد از تعریف ورودیها و متغیرها، معادلات (Equation) تعریف میشود.
برای تعریف معادلات، ابتدا اسم آنها تعریف میشود.
اسم تمام معادلات بر اساس شماره معادلات در مقاله تعریف شدهاست.
به عنوان مثال، EQ21 مروبط به معادله 21 مقاله بوده و EQC1 نیز مربوط به متغیر C1 میباشد.
معادلات مربوط به متغیر C، در ضمیمه مقاله آمدهاست.
بعد از تعریف اسم معادلات، خود معادلات کدنویسی میشود.
در کدنویسی از برخی حروف اختصاری استفاده شدهاست که عباتند از:
- =e= علامت تساوی (=) میباشد و برای معادلات بکار میرود.
- =l= علامت کوچکتر مساوی (<=) میباشد و برای معادلات بکار میرود.
- =g= علامت بزرگتر مساوی (>=) میباشد و برای معادلات بکار میرود.
- eq علامت تساوی میباشد و برای مجموعهها بکار میرود.
- le علامت کوچکتر مساوی (<=) میباشد و برای مجموعهها بکار میرود.
- ge علامت بزرگتر مساوی (>=) میباشد و برای مجموعهها بکار میرود.
- gt علامت بزرگتر مطلق (>) میباشد و برای مجموعهها بکار میرود.
- Sum علامت جمع بوده و درایهها یک متغیر را بر اساس اندیس مشخص شده جمع میکند. به عنوان مثال، sum(S,P(J,T,S)) به معنی جمع درایههای ستون S متغیر P میباشد.
- ord مرتبه یک مجموعه را برمیگرداند. به عنوان مثال، ord(T) یک عدد است که برابر مقدار T میباشد. دقت شود که جنس عدد و مجموعه در گمز تفاوت دارد.
- $ معادل if میباشد.
به عنوان مثال، EQ25_2(J,T,S)$(ord(T) eq 1) به معنی این است که این معادله تنها زمانی باید درنظر گرفته شود که مقدار T برابر یک باشد.
مجدد تاکید میشود که تمام معادلات مطابق معادلات مقاله نوشته شده و نامگذاری نیز مطابق نامگذاری مقاله میباشد.
بعد از پایان فرآیند تعریف معادلات، نام مدل تعریف میشود.
نام مدل را میتوان به صورت اختیاری انتخاب کرد.
برای شبیهسازی مورد نظر، مدل با نام Bi_Level و به صورت زیر تعریف شدهاست.
MODEL Bi_Level /ALL/;
در این کد، ALL به معنای این است که تمام معادلات تعریف شده مربوط به مدل Bi_Level بوده و باید درنظر گرفته شوند.
در صورتی که بخواهیم تعداد محدودی از معادلات در یک مدل درنظر گرفته شود، نام آن معادلات به جای ALL نوشته میشود.
مرحله بعد شامل تعریف روش حل و Solver مورد استفاده برای حل مسئله میباشد.
شبیهسازی مورد نظر خطی بوده و در دارای متغیرهای پیوسته و باینری میباشد بنابراین از نوع برنامهریزی خطی صحیح مختلط یا همان MILP میباشد که در گمز به صورت MIP شناخته میشود.
قویترین Solver برای حل این نوع مسائل، Cplex میباشد که برای شبیه سازی این مسئله نیز استفاده شدهاست.
نوع مسئله و Solver مورد استفاده به صورت زیر تعریف شدهاست.
Option MIP=CPLEX;
برای افزایش سرعت شبیهسازی، میتوان تنظیم کرد که گمز از تمام پردازندههای سیستم استفاده کند.
این کار به صورت زیر انجام میشود.
Option threads=0;
اگر مقدار threads=2 باشد، به معنی این است که گمز تنها باید از دو پردازنده استفاده کند.
همچنین میتوان تنظیم کرد که بهینهسازی تا جایی ادامه داشته باشد که بهترین جواب ممکن بدست آید.
این کار مطابق کد زیر انجام میشود.
option optcr=0;
متغیر optcr معیار بهینگی نسبی است که اگر صفر باشد، نشان دهندهی این است که مسئله به بهینهترین حالت ممکن رسیدهاست.
بنابراین دستور بالا به گمز میفهماند که باید بهینهسازی را تا جایی که امکان دارد ادامه دهد تا بهترین جواب ممکن بدست آید.
در نهایت هدف بهینهسازی نیز به صورت زیر تعریف میشود.
…
کد در اینجا نیامده و باید پروژه خریداری شود.
معنی دستور بالا این است که مدل Bi_Level باید با روش MIP حل شود به صورتی که مقدار Z بیشینهسازی شود.
در نهایت برای نمایش خروجیها از دستور Display استفاده میشود.
برای فهم سادهتر خروجیها، متغیرهای خروجی محاسبه شده و در چند پارامتر دیگر ذخیره شده است. این کار برای تبدیل متغیرهای سه بعدی به متغیرهای دو تکبعدی انجام شدهاست.
به عنوان مثال، Pch(J,T,S) در PPch(J,T) ذخیره شدهاست.
با ران کردن هر یک از کدها، بهینهسازی شروع شده و بعد از پایان، خروجیها نمایش داده میشود.
تنظیم شدهاست که متغیرهای PPch,PPdch,EE,PPdch,PPIL,PPD,PM,PPDG,PPw,C_operation,pD در خروجی نمایش داده شود.
بعد از پایان بهینهسازی، نتایج به صورت زیر نمایش داده میشود.
…
مشخص است که در زیر Display که با بیضی قرمز مشخصاست، نام متغیرهایی که برای نمایش تنظیم شده، آمده است.
با کلیک بر روی هر یک از متغیرها، مقدار آن در سمت راست نمایش داده میشود.
بر اساس نتایج مشخص است که برای این شبیهسازی، مقدار هزینه بهرهبرداری 11833 بدست آمده است که بسیار نزدیک به مقدار بدست آمده در مقاله میباشد.
علت اختلاف ناچیز، تفاوت جزئی در برخی ورودیها نظیر سرعت باد است.
برای فراهم کردن امکان پلات گرفتن از خروجیها، با استفاده از کد زیر، خروجیها به صورت gdx ذخیره شده است.
execute_unload ‘Bi_Level.gdx’
برای رسم خروجیها، لازم است فایل Bi_Level.gdx از طریق گزینه File، گزینه open و از مسیر زیر باز شود:
Documentsgamsdirprojdir
در شکلهای زیر، فرآیند پلات کردن متغیر pD به صورت نمونه نشان داده شدهاست.
…
…
…
نتایج بدست آمده نشان میدهد که نتایج شبیه سازی تقریبا برابر نتایج مقاله شدهاست.
تمام پارامترها و متغیرها را میتوان مطابق روند بالا، به صورت شکل نمایش داد.
تذکر: دقت شود که در گمز، برای یک ماتریس یا بردار، درایههای صفر در نظر گرفته نمیشود.
به عبارت دیگر، در زمان رسم خروجی به صورت شکل، خروجیهای صفر حذف شده و ترتیب خروجیها به هم میریزد.
بنابراین برای مقایسه نتایج با مقاله، نتایج عددی نشان داده شده در بخش Display را معیار قرار دهید.
توضیحات شبیهسازی Centralised
همانطور که در مقاله توضیح داده شدهاست، در شبیهسازی Centralised فرض شدهاست که مدیریت ریزشبکهها نیز بر عهده Disco میباشد.
بنابراین تابع هزینه این بخش، از تفاضل رابطه (1) و رابطه (5) مقاله به صورت زیر بدست میآید:
قسمتی از گزارش در اینجا نیامده است.
ورودیها و سایر کدنویسیها برای هر دو شبیهسازی مشابه هم میباشد.
با توجه به اینکه در این شبیهسازی متغیر باینری وجود ندارد، مسئله را میتوان به صورت برنامهریزی خطی (LP) حل کرد که این کار نیز انجام شدهاست.
توجه داشته باشید که برای رسم نتایج خروجی در این شبیهسازی، فایل Centralised.gdx باید مطابق روند ارائه شده برای شبیهسازی Bi_Level باز شود.
همانطور که در بالا مشاهده میشود گزارش بسیار کاملی برای این شبیه سازی تهیه شده است.
کلید واژه:
decision making, distributed power generation, duality (mathematics), nonlinear programming
شبیه سازی مقاله
Modelling hierarchical decision making framework for operation of active distribution grids
توسط کارشناسان سایت متلبی تهیه شده است و به تعداد محدودی قابل فروش می باشد.
سفارش انجام پروژه مشابه
درصورتیکه این محصول دقیقا مطابق خواسته شما نمی باشد،. با کلیک بر روی کلید زیر پروژه دلخواه خود را سفارش دهید.
دیدگاهها
هیچ دیدگاهی برای این محصول نوشته نشده است.