إنشاء قاعدة مخصصة - معلمة القرار العابر
Last updated
Last updated
قم بلصق التعليمة البرمجية التالية ثم انقر فوق زر الحفظ
``بايثون معلمة القرار العابر للفئة (المعلمة): تقوم «"» بإرجاع إحدى القيمتين وفقًا للخطوة الزمنية الحالية
يمكن استخدام «المعلمة» هذه لنمذجة حدث قرار منفصل
يحدث ذلك في تاريخ معين. قبل هذا التاريخ «قبل»
يتم إرجاع القيمة، وبعد هذا التاريخ يتم إرجاع القيمة «بعد».
البارامترات
----------
decision_date: سلسلة أو باندا. timestamp
تاريخ بدء القرار.
قبل المعلمة: المعلمة
القيمة التي يجب استخدامها قبل تاريخ القرار.
المعلمة اللاحقة: المعلمة
القيمة التي سيتم استخدامها بعد تاريخ القرار.
earliest_date: سلسلة أو باندا. طابع زمني أو لا شيء
أقرب تاريخ يمكن تعيين المتغير إليه. الإعدادات الافتراضية هي «model.timestepper.start»
latest_date: سلسلة أو باندا. timestamp أو لا شيء
آخر تاريخ يمكن ضبط المتغير عليه. الإعدادات الافتراضية هي «model.timestepper.end»
decision_freq: سلسلة تردد الباندا (الافتراضي «AS»)
تحديد التواريخ الممكنة. على سبيل المثال، ستقوم كلمة «AS» بإنشاء تواريخ مجدية كل
السنة بين «الأقدم»_التاريخ» و «الأحدث»_تاريخ`. يتم استخدام وظائف «الباندا»
داخليًا لحسابات تاريخ دلتا.
«"»
ديف __بدأ__(الذات، النموذج، القرار_التاريخ، قبل_المعلمة، بعد_المعلمة، الأقدم_التاريخ = لا شيء، الأحدث_التاريخ = لا شيء، القرار_التردد = 'as'، **kargs):
فائق (معامل القرار العابر، الذات).__بدأ__(الموديل، **kwargs)
الذات._قرار_التاريخ = لا شيء
القرار الذاتي_التاريخ = القرار_تاريخ
إن لم يكن هو المثال (before_parameter، المعلمة):
رفع ValueError («يجب أن تكون القيمة «قبل» مثيل المعلمة. ')
قبل_الباراميتر.parents.add (الذات)
قبل الذات_المعلمة = قبل_معيار
إن لم يكن هو المثال (after_parameter، المعلمة):
رفع ValueError («يجب أن تكون قيمة `after` عبارة عن مثيل معلمة.»)
after_parameter.parents.add (الذات)
بعد الذات_المعلمة = بعد_معيار
# يتم استخدام هذه المعلمات في الغالب إذا تم استخدام هذه الفئة كمتغير.
الذات._أقرب_التاريخ = لا شيء
الذات. في أقرب وقت_التاريخ = الأقدم_تاريخ
الذات._آخر_التاريخ = لا شيء
الأحدث الذاتي_التاريخ = الأحدث_تاريخ
القرار الذاتي_التكرار = القرار_تكرار
الذات._مجدية_التواريخ = لا شيء
حجم العدد الصحيح الذاتي = 1 # تحتوي هذه المعلمة على متغير صحيح واحد
تاريخ قرار def ():
ديف جيت (الذات):
عودة الذات._قرار_تاريخ
اختبار def (الذات، القيمة):
إذا كان المثال (القيمة، طابع PD.timestamp):
الذات._قرار_التاريخ = القيمة
وإلا:
الذات._قرار_التاريخ = pd.to_datetime (القيمة)
عودة السكان المحليين ()
قرار_التاريخ = الخاصية (**تاريخ_القرار ()
تاريخ def الأقدم ():
ديف جيت (الذات):
إذا كانت الذات._أقرب_التاريخ ليس بلا شيء:
عودة الذات._أقرب_تاريخ
وإلا:
إرجاع self.model.timestepper.start
اختبار def (الذات، القيمة):
إذا كان المثال (القيمة، طابع PD.timestamp):
الذات._أقرب_التاريخ = القيمة
وإلا:
الذات._أقرب_التاريخ = pd.to_datetime (القيمة)
عودة السكان المحليين ()
أقرب_التاريخ = الخاصية (**أقرب تاريخ ())
أحدث تاريخ_ديف ():
ديف جيت (الذات):
إذا كانت الذات._آخر_التاريخ ليس بلا شيء:
عودة الذات._آخر_تاريخ
وإلا:
إرجاع self.model.timestepper.end
اختبار def (الذات، القيمة):
إذا كان المثال (القيمة، طابع PD.timestamp):
الذات._آخر_التاريخ = القيمة
وإلا:
الذات._آخر_التاريخ = pd.to_datetime (القيمة)
عودة السكان المحليين ()
آخر_التاريخ = الخاصية (**أحدث تاريخ_()
إعداد def (self):
super (معامل القرار العابر، الذاتي) .setup ()
# الآن قم بإعداد التواريخ الممكنة عند استخدام هذا الكائن كمتغير.
الذات._مجدية_التواريخ = تاريخ pdf_النطاق (الذاتي. الأقدم)_التاريخ، آخر تاريخ_ذاتي،
freq=القرار الذاتي_التكرار)
القيمة الافتراضية (self، ts، scenario_index):
إذا كانت الإجابة لا شيء:
v = قبل الذات_المعلمة. get_القيمة (فهرس_السيناريو)
إليف. تاريخ_الوقت>= تاريخ_القرار الذاتي:
v = بعد الذات_المعلمة. get_القيمة (فهرس_السيناريو)
وإلا:
v = قبل الذات_المعلمة. get_القيمة (فهرس_السيناريو)
إرجاع v
ديف جيت_عدد صحيح_الحدود الدنيا (الذات):
إرجاع np.array ([0،]، dtype=np.int)
ديف جيت_عدد صحيح_الحدود العليا (الذات):
إرجاع np.array ([len) (self)._مجدية_التواريخ) - 1،]، dtype=np.int)
مجموعة ديف_عدد صحيح_المتغيرات (الذات والقيم):
# قم بتحديث تاريخ القرار بالتاريخ الممكن المقابل
القرار الذاتي_التاريخ = الذات._التواريخ الممكنة [القيم [0]
ديف جيت_عدد صحيح_المتغيرات (الذات):
إرجاع np.array ([self._مجدية_مواعيد. احصل على_القفل (القرار الذاتي)_التاريخ)،]، dtype=np.int)
تفريغ def (ذاتي):
البيانات = {
«أقرب وقت ممكن_«التاريخ»: «self.onersy»_صيغة date.iso ()،
«الأحدث_«التاريخ»: «self.latest»_صيغة date.iso ()،
«قرار_التاريخ: «القرار الذاتي»_صيغة date.iso ()،
«قرار_«التردد»: القرار الذاتي_تكرار
}
إرجاع البيانات
@classmethod
تحميل def (cls، النموذج، البيانات):
قبل_المعلمة = التحميل_المعلمة (النموذج، data.pop ('before_parameter'))
بعدما_المعلمة = التحميل_المعلمة (النموذج، data.pop ('after_parameter'))
إرجاع cls (الطراز)، قبل_المعلمة = قبل_المعلمة، بعد_المعلمة = بعد_المعلمة، **البيانات)
معلمة القرار العابر. التسجيل ()
الآن عند تشغيل هذه الشبكة في WaterStrategy، سيتم تسجيل المعلمة TranscientDecision. 
تأكد بعد حفظ القاعدة المخصصة الخاصة بك، من عرضها على الجانب الأيسر، في هذه الحالة تحت **المعلمة** الجزء
<figure><img src="../../.gitbook/assets/image (52).png" alt=""><figcaption></figcaption></figure>
## استخدام معامل القرار العابر
في هذه الحالة، سنضاعف الحجم الأقصى لـ **خزان جديد** __1234567890____ بدءًا من `2045-1__-01-__-01`
انتقل إلى **خزان جديد** storage node و «تحرير» **الحد الأقصى للحجم**
<figure><img src="../../.gitbook/assets/image (53).png" alt="" width="446"><figcaption></figcaption></figure>
حدد في **خيارات** التبويب **بيور\_المعلمة**
<figure><img src="../../.gitbook/assets/image (54).png" alt="" width="271"><figcaption></figcaption></figure>
قم بلصق التعليمة البرمجية التالية وانقر **وفر**
{ «النوع»: «معامل القرار العابر»، «بعد_المعلمة»:»خزان جديد:الحد الأقصى_المجلد بعد»، «قبل_المعلمة»:»خزان جديد:الحد الأقصى_المجلد قبل»، «تاريخ_القرار»: «2045--01--01», «آخر تاريخ_تاريخ»: «2045--01--01» }
تتضمن المعلمة TranscientDecision السمات `قبل ذلك_المعلمة» و «بعد_المعلمة `التي سيتعين علينا إنشاؤها على النحو التالي:
<figure><img src="../../.gitbook/assets/image (55).png" alt=""><figcaption></figcaption></figure>
سيتم فتح مربع نص صغير، عندما نتمكن من كتابة اسم الجديد **PWR\_المعلمة**، في هذه الحالة\
\_\_**خزان جديد\_\_:الحد الأقصى\_الحجم من قبل.** انقر **أدخل**. \
<figure><img src="../../.gitbook/assets/image (57).png" alt="" width="375"><figcaption></figcaption></figure>
WaterStrategy سيفتح نافذة المعلمة ويلصق الكود التالي و **وفر**
**\_\_خزان جديد\_\_:الحد الأقصى\_المجلد قبل: **
{ «النوع»: «المعلمة الثابتة»، «القيمة»: 120000 }
<figure><img src="../../.gitbook/assets/image (58).png" alt=""><figcaption></figcaption></figure>
كرر لإنشاء الحد الأقصى للحجم بعد المعلمة
**\_\_خزان جديد\_\_:الحد الأقصى\_مستوى الصوت بعد: **
{ «النوع»: «المعلمة الثابتة»، «القيمة»: 240000 }
كخطوة أخيرة، تحتاج «معلمة القرار العابر» إلى **نسبة الحجم الأولية** بالنسبة إلى storage node حيث ترث المعلمة القيم الأولية من العقدة، في هذه الحالة سنقوم بالإعداد لـ **0.99**
<figure><img src="../../.gitbook/assets/image (59).png" alt="" width="423"><figcaption></figcaption></figure>
## النتائج
كما نرى في الصورة التالية، فإننا نجمع بين سيناريوهات pywr باستخدام تغير المناخ وزيادة حجم الخزان المختار من 120.000 مل إلى 240.000 مل في الأول من يناير 2045.
<figure><img src="../../.gitbook/assets/image (60).png" alt=""><figcaption><p>حجم المحاكاة (خزان جديد)</p></figcaption></figure>