برمجة عشوائية

في مجال الاستمثال، تعتبر **البرمجة العشوائية** الهيكل الأساسي لحل المشاكل المتعلقة بالنمذجة القائمة على عدم التأكد. في حين أن مشاكل النمذجة المحددة تصاغ باستخدام بارامترات معلومة. وتشمل مشاكل الواقع بعض البارامترات غير المعلومة، في حال وقوع البارامترات ضمن حدود معينة تكون هناك طريقة واحدة لحل هذا النوع من المشاكل تسمى النمذجة القوية (Robust Optimization)، والهدف من البرمجة العشوائية هو العثور على حل مناسب وأمثل لجميع البيانات. نماذج البرمجة العشوائية متشابهة في الأسلوب لكن تأخذ في عين الاعتبار حقيقة أن التوزيعات الاحتمالية التي تحكم البيانات معلومة أو يمكن حسابها. والهدف هنا هو إيجاد خطة مناسبة لكل أو بالكاد كل البيانات وهذه الخطة تتوقع بعض القرارات والمتغيرات العشوائية. عموما هذه النماذج تتم صياغتها وحلها نظريا وعدديا وتحليلها لتوفير معلومات مفيدة لمتخذي القرار.

## المشاكل ذات المرحلتين
الفكرة الأساسية التي تقوم عليها مشاكل البرمجة العشوائية ذات المرحلتين هي أن القرارات المثلى يجب أن تكون قائمة على البيانات المتاحة في الوقت الذي تم فيه اتخاذ القرار ويجب ألا تعتمد على الملاحظات المستقبلية.

الصيغة العامة للمشاكل ذات المرحلتين توصف كالتالي


\min_{x\in X}\{ g(x)= f(x) + E[Q(x,\xi)]\}


حيث Q(x,\xi)  هي القيمة المثلى للمشكلة ذات المرحلة الثانية


\min_{y}\{ q(y,\xi)| T(\xi)x+W(\xi) y = h(\xi)\}


مشاكل البرمجة الخطية العشوائية يمكن صياغتها كالآتي


\begin{array}{llr}
\min\limits_{x\in \mathbb{R}^n}   &g(x)= c^T x + E[Q(x,\xi)]    &   \\
\text{subject to} & Ax    =    b &\\
		    & x     \geq 0 &
\end{array}


حيث Q(x,\xi)  هي القيمة المثلى للمشكلة ذات المرحلة الثانية


\begin{array}{llr}
\min\limits_{y\in \mathbb{R}^m}   & q(\xi)^T y     &   \\
\text{subject to} & T(\xi)x+W(\xi)y    =    h(\xi) &\\
		    & y     \geq 0 &
\end{array}


في هذه الصيغة x\in \mathbb{R}^n هو المتجه الخاص بمتغيرات القرار في المرحلة الأولى و y\in \mathbb{R}^m هو المتجه الخاص بـمتغيرات القرار في المرحلة الثانية. في هذه الصيغة; في حاله المرحلة الاولي نكون بحاجه لاتخاذ قرار x حالا قبل إدراك المعلومات غير المؤكدة \xi. في المرحلة الثانية بعد إدراك \xi, نقوم بتحسين الأداء عن طريق حل المشكلة المناسبة.

في الخطوة الأولى نقوم بأمثلة الـ c^Tx الخاصة بالمرحلة الأولى إلى جانب الـ c^Tx الخاص بالمرحلة الثانية وهذا يمكننا من عرض مشاكل المرحلة الثانية على أنها مشكلة نمذجة، حيث أنها تقوم بوصف الحل الافتراضي الأمثل في حالة أن تكون المعلومات غير مؤكدة.

### فرض التوزيع
صياغة مشاكل المرحلتين التي تم شرحها مسبقا تفترض أن المعلومات الخاصة بالمرحلة الثانية يمكن وصفها على أنها متجه عشوائي ذات توزيع احتمالي معلوم. على سبيل المثال \xi من الممكن أن يكون معلومات تم الوصول إليها عن طريق معلومات مسبقة مع العلم أن التوزيع لم يتغير مع طول الفترة الزمنية. في مثل هذه الحالات من الممكن حساب التوزيع الاحتمالي المطلوب والقيام بالنمذجة ويمكن أن تفسر باستخدام قانون الأرقام الكبيرة.

### التقسيم
لحل مشاكل النمذجة العشوائية ذات المرحلتين عددياً، نحتاج غالبا لفرض أن المتجه العشوائي يحتوي على عدد من الحالات الممكنة المسماة بسيناريوهات حيث أن \xi_1,\dots,\xi_K مناظره للاحتمالات p_1,\dots,p_K وبذلك ممكن أن تصاغ دالة الهدف (Objective function) الآتي:


E[Q(x,\xi)]=\sum\limits_{k=1}^{K} p_kQ(x,\xi_k)


و بالمثل مشاكل المرحلة الثانية ممكن أن تصاغ كمشكله برمجة خطية كبيرة (وهذا ما يطلق عليه التحديد المكافئ للمشكلة العشوائية).

## البرمجة العشوائية الخطية

هي حالة خاصة بمشاكل المرحلتين الاعتيادية للبرمجة العشوائية. البرمجة العشوائية الخطية قائمة على تجميع المشاكل الخطية ذات الفترات المتعددة كل منها له نفس البناء لكن باختلاف بسيط في البيانات. البرمجة الخطية ذات الفترتين تقوم بعرض الـk^{th} سيناريو في الصيغة الآتية:

	
\begin{array}{lccccccc}
\text{Minimize} & f^T x & + & g^T y & + & h_k^Tz_k &  &  \\ 	
\text{subject to} & Tx & + & Uy &  &  & = & r \\ 	
 &  &  & V_k y & + & W_kz_k & = & s_k \\ 
 & x & , & y & , & z_k & \geq & 0
\end{array}


المتجهين x و y يشملان متغيرات الفترة الاولي حيث انه يجب اختيار قيمتهم فورا. المتجه z_k يحتوي على جميع المتغيرات للفترات التالية. القيود Tx + Uy = r تشمل متغيرات الفترة الأولى ولا تتغير من سيناريو لأخر، القيود الخرى تتضمن متغيرات الفترات الأخرى وتختلف من سيناريو لأخر وتعكس عدم التأكد من المستقبل.
 لاحظ أن حل مشاكل البرمجة الخطية للفترتين مكافئه لفرض الـ k^{th} سيناريو في الفترة الثانية مع عدم التأكد.

### التحديد المكافئ للمشكلة العشوائية
باستخدام عدد محدود من السيناريوهات، يمكن وصف مشاكل البرمجة الخطية العشوائية ذات المرحلتين على أنها مشاكل برمجه خطيه كبيرة. هذه الصيغة غالبا ما يطلق عليها التحديد المكافئ للمشكلة العشوائية. التحديد المكافئ هو أي عملية حسابية يمكن أن تستخدم لحساب الحل الأمثل للمرحلة الأولى. على سبيل المثال نجعل الاحتمالية p_k  لكل سيناريو حيث k=1,\dots,K ثم نقوم بتقليل القيمة المتوقعة للهدف كالآتي


\begin{array}{lccccccccccccc}
\text{Minimize} & f^T x & + & g^T y & + & p_1h_1^Tz_1 & + & p_2h_2^Tz_2 & + & \cdots & + & p_Kh_K^Tz_K &  &  \\ 
\text{subject to} & Tx & + & Uy &  &  &  &  &  &  &  &  & = & r \\ 
 &  &  & V_1 y & + & W_1z_1 &  &  &  &  &  &  & = & s_1 \\ 
 &  &  & V_2 y &  &  & + & W_2z_2 &  &  &  &  & = & s_2 \\ 
 &  &  & \vdots &  &  &  &  &  & \ddots &  &  &  & \vdots \\ 
 &  &  & V_Ky &  &  &  &  &  &  & + & W_Kz_K & = & s_K \\ 
 & x & , & y & , & z_1 & , & z_2 & , & \ldots & , & z_K & \geq & 0 \\ 
\end{array}


لكل سيناريو k يوجد متجه z_k مختلف والمتغيرات x و y لا تتغير من سيناريو لأخر.

## بناء السيناريوهات

من الممكن بناء سيناريوهات عن طريق أراء خبير. يجب أن يكون عدد السيناريوهات معتدلًا ليكون من السهل حلها بمجهود أقل. غالبا ما يكون الحل الأمثل القائم على بعض السيناريوهات يوفر خطط أحسن سيناريو واحد.

في نظرية أخرى بعض القياسات تم حسابها لضمان أن الحل الذي تم الحصول عليه يقوم بحل المشكلة الأصلية بدقة مناسبة. عادة في التطبيقات، الحل الأمثل للمرحلة الأولى فقط هو قيمة معينة.

نفترض أن \xi تشمل d عناصر عشوائية مستقلة، كل منها له ثلاث حالات ممكنة لذلك يكون عدد السيناريوهات K=3^d .النمو الطبيعي لعدد السيناريوهات يجعل تحسين النماذج بالاستناد إلى رأي خبير صعبًا للغاية.

### أخذ العينات بطريقة مونت كارلو
تستخدم طريقة مونت كارلو لتقليل السيناريوهات لحجم معقول. بفرض أن عدد السيناريوهات كبير جدا أو حتى لا نهائي وبفرض أيضا أننا نستطيع استخراج عينات \xi^1,\xi^2,\dots,\xi^N لعدد N من التكرارات للمتجه العشوائي \xi


\hat{q}_N(x) = \frac{1}{N} \sum_{j=1}^N Q(x,\xi^j)


حيث أن المشكلة ذات المرحلة الأولى تصاغ كالآتي


\begin{array}{rlrrr}
\hat{g}_N(x)=&\min\limits_{x\in \mathbb{R}^n}   & c^T x + \frac{1}{N} \sum_{j=1}^N Q(x,\xi^j)    &   \\
&\text{subject to} & Ax    &=&    b \\
&		    & x     &\geq& 0
\end{array}


و تعرف هذه الصيغة بتقريب متوسط العينة.

## الاستدلال الإحصائي
بفرض أن مشكلة البرمجة العشوائية تكون كالتالي


\min\limits_{x\in X}\{ g(x) = f(x)+E[Q(x,\xi)] \}


بفرض أن هناك عينات \xi^1,\dots,\xi^N لعدد N حلول للمتجه العشوائي \xi . العينة العشوائية من الممكن أن توصف على أنها معطيات سابقة لعدد N ملاحظات ل\xi أو يمكن استنباطها بطريقة مونت كارلو ويمكن صياغة تقريب متوسط العينة كالآتي:


\min\limits_{x\in X}\{ \hat{g}_N(x) = f(x)+\frac{1}{N} \sum_{j=1}^N Q(x,\xi^j) \}


### اتساق مقدرات تقريب متوسط العينة
بفرض أن مجموعة X من مشاكل تقريب متوسط العينة ثابتة، بمعنى أن تكون مستقلة عن العينة. وبجعل \vartheta^* و S^* القيمة الأمثل والمجموعة الأمثل للحلول بالترتيب.

# بفرض أن g: X \rightarrow \mathbb{R} هو تسلسل القيم الحقيقية للدوال
# إذا كان الـ objective الخاص بـ تقريب متوسط العينة \hat{g}_N(x) يتقارب مع objective المشكلة الحقيقية حيث تكون الاحتمالية = 1 N \rightarrow \infty
# •	بفرض أن:
#* المجموعة S من الحلول الأمثل للمشاكل الحقيقية واردة في الC
#* الدالةg(x) محدودة القيمة ومتصلة عند الـ C
#* المتسلسلة الخاصة بالدالة \hat{g}_N(x) تقترب من الـ g(x) أن تكون الاحتمالية 1 لكل N \rightarrow \infty

## التطبيقات البيولوجية
البرمجة الديناميكية العشوائية تستخدم لنمذجة سلوك الحيوان في مجالات مختلفة مثل البيئة السلوكية. الاختبارات التجريبية لنمذجة السلوك الأمثل للبحث عن المؤن، التحولات الحياتية مثل الطيور الوليدة أو وضع البيض في الطفيليات، وظهرت نتائج النمذجة في شرح تطور عملية أخذ القرار السلوكي. هذه النماذج عادة ما تكون متعددة المراحل وليس من مرحلتين فقط.

## التطبيقات الاقتصادية
- التطبيقات الاقتصادية: البرمجة الديناميكية العشوائية أداة مهمة في فهم عملية اتخاذ القرار تحت ظرف عدم التأكد. تراكم رأس المال في حالة عدم التأكد تعتبر مثالًا. عاده ما يستخدم من قبل الاقتصاديين لتحليل المشاكل الحيوية الاقتصادية والتي يدخل فيها عدم التأكد مثل المناخ.

## مراجع

Stochastic programming

## قراءات أخرى
* John R. Birge and François V. Louveaux. *Introduction to Stochastic Programming*. Springer Verlag, New York, 1997.
* 
* G. Ch. Pflug: *Optimization of Stochastic Models. The Interface between Simulation and Optimization*. Kluwer, Dordrecht, 1996.
* Andras Prekopa. Stochastic Programming. Kluwer Academic Publishers, Dordrecht, 1995.
* Andrzej Ruszczynski and Alexander Shapiro (eds.) (2003) *Stochastic Programming*. Handbooks in Operations Research and Management Science, Vol. 10, Elsevier.
* 
* Stein W. Wallace and William T. Ziemba (eds.) (2005) *Applications of Stochastic Programming*. MPS-SIAM Book Series on Optimization 5
* 

تصنيف:استمثال رياضي
تصنيف:برمجة