مخزن، شود. ، شانس، نخبه، نفت

و SL اعمال می شود و نتایج با یکدگر مقایسه می شود. در ادامه این کار با الگوریتم های معین و مبتنی بر گرادیان همانند روش تندترین سقوط تکرار می گردد.
فصل پنجم این پژوهش به معرفی الگوریتم های بهینه سازی ترکیبی اختصاص داده شده است. در این فصل ادغام درونیاب خطی با الگوریتم ژنتیک و تندترین سقوط برای کاهش تعداد ارزیابی های تابع هدف و کاهش بار محاسبای مسئله، پیشنهاد داده می شود.
در فصل ششم اطلاعات ارزشمندی نظیر بازدهی چاه های تزریق و ضرایب اختصاص میان تزریق کننده ها و تولید کننده ها که تنها از مخزن مدل شده بر پایه SL بدست می آید، معرفی می گردد. سپس با این اطلاعات سودمند روشی پیشنهاد می شود تا الگوریتم بهینه سازی کارآمد تر باشد و این کارایی منجر به کاهش تعداد ارزیابی های تابع هدف و همگرایی سریع تر الگوریتم می شود.
در فصل هفتم به کمک اصول کنترل فازی و همچنین اطلاعات سودمند مخزن مدل شده بر پایه SL روشی برای مینیمم سازی میزان تولید آب در بازه زمانی تولید نفت پیشنهاد می شود. این روش پیشنهادی بر خلاف روش های بهینه سازی تصادفی نیازی به محاسبه زیاد تابع هدف ندارد. همچنین برتری این روش نسبت به روش های مبتنی بر گرادیان سادگی پیاده سازی آن و عدم نیاز به گرادیان تابع هدف نسبت به متغییرهای تصمیم گیری می باشد.
فصل آخر، فصل هشتم، به نتیجه گیری و بیان پیشنهادات اختصاص داده شده است.
تعریف مسئله و مروری بر تاریخچه مکان یابی بهینه چاه ها
2-1- تعریف مسئله مکان یابی چاه های نفت
آز آنجا که تقاضا برای نفت روز به روز افزایش می یابد و همچنین فرآیند تولید نفت بسیار چالش برانگیز و هزینه بر شده است، توسعه بهینه مخازن نفت امر بسیار ضروری تلقی می شود. توسعه بهینه مخازن نفتی شامل تعیین بهینه تعداد، نوع، موقعیت، میزان نرخ چاه ها و نحوه حفر آن ها به منظور ماکزیمم کردن بک تابع هدف می باشد. نمونه ای از توابع هدف مورد استفاده میزان تولید تجمعی نفت یا سود حاصل از برداشت آن می باشد. عملیات بهینه سازی بسیار چالش برانگیز است زیرا تعداد چاه های مورد نیاز و نوع آن ها (افقی، عمودی، چند لایه؛ تولید کننده یا تزریق کننده) می تواند متفاوت باشد. حضور عدم قطعیت های زمین شناسی که منجر به ایجاد عدم قطعیت در مدل مخزن و در نظر گرفتن چندین تحقق مختلف برای مخزن می شود، نیز یکی از عوامل مهم تشدید کننده پیچیدگی مسئله بهینه سازی می باشد. همچنین مسئله مکان یابی بهینه چاه ها یک مسئله غیر خطی و عموماً شامل ماکزیمم یا مینیمم های محلی زیادی می باشد. زمان محاسباتی در این نوع مسائل بهینه سازی بسیار قابل توجه می باشد، از آنجا که مقدار تابع هدف برای سناریوهای مختلف توسعه مخازن نفتی باید محاسبه شود. هر بار ارزیابی تابع هدف نیازمند یک بار اجرای مدل مخزن می باشد، و برای مخزن های بزرگ با مدل پیچیده زمان اجرای شبیه سازی مدل می تواند بسیار بزرگ باشد. در صنعت کلیدی ترین تصمیمات مهندسان مخزن این است که در کدام مکان مخزن، چاه حفر شود تا سود حاصل از برداشت و یا توابع هدف دیگر ماکزیمم شود. در واقع در عمل با شبیه سازی های مختلف مخزن عملکرد هر کدام از سناریو های توسعه مخزن بررسی می شود. اما با افزایش تعداد چاه ها جهت مکان یابی ، تعداد پاسخ های ممکن بسیار زیاد می شود. در نتیجه به یک الگوریتم بهینه سازی محاسباتی نیاز است. روش های بهینه سازی مختلفی برای تعیین موقعیت مناسب یک چاه در مخزن ارائه شده است. در ادامه مروری بر کارهای صورت گرفته در این راستا خواهیم داشت. اما پیش از آن لازم است مروری بر روش های بهینه سازی متداول و پرکاربرد در حل مسئله مکان یابی چاه ها داشته باشیم.
2-2- مروری بر روش های بهینه سازی
2-2-1- الگوریتم ژنتیک
الگوریتم ژنتیک روش یادگیری بر پایه تکامل بیولوژیک است. این الگوریتم در سال 1970 توسط John Holland معرفی گردید. این روش به نام الگوریتم تکاملی25 نیز خوانده می شود. الگوریتم ژنتیک، روش بهینه سازی الهام گرفته از طبیعت جاندار است که می توان در طبقه بندی ها، از آن به عنوان یک روش عددی، جستجوی مستقیم و تصادفی یاد کرد. این الگوریتم، الگوریتمی مبتنی بر تکرار است و اصول اولیه آن از علم ژنتیک اقتباس گردیده است و با تقلید از تعدادی از فرآیند های مشاهده شده در تکامل طبیعی، اختراع شده است و به طور موثری از معرفت قدیمی موجود در یک جمعیت استفاده می کند تاحل های جدید و بهبود یافته را ایجاد کند. اساس این الگوریتم را می توان قانون تکامل داروین “بقا بهترین” دانست که می گوید موجودات ضعیف تر از بین می روند و موجودات قوی تر باقی می مانند. یکی از مهمترین ویژگی های الگوریتم ژنتیک کاربرد آن در مسائلی با فضای جستجوی بزرگ و درجه پیچیدگی بالا می باشد. این الگوریتم در مسائل متنوعی نظیر بهینه سازی، شناسایی و کنترل سیستم، آموزش شبکه های عصبی مصنوعی و سیستم های مبتنی بر تصمیم و قاعده به کار می رود.
یکی از ویژگی های این الگوریتم که آن را از سایر روش ها متمایز می سازد این است که الگوریتم ژنتیک در هر تکرار چند نقطه از فضای جستجو را در نظر می گیرد، بنابراین شانس اینکه به یک ماکزیمم محلی همگرا شود کاهش می یابد. به عبارت دیگر این روش، با ترکیب کردن تصادفی بهترین پایه های هر نسل، توانایی تشخیص روند حرکت به سمت پاسخ های بهینه را دارد. بر خلاف آن، در بیشتر روش های جستجوی مرسوم نظیر روش گرادیان، قاعده تصمیم حاکم به این صورت عمل می کند که از یک نقطه به نقطه دیگر حرکت می کند. این روش ها در فضای جستجو دارای چند بیشینه، ممکن است به یک ماکزیمم محلی همگرا شوند. در مجموع امکان به تله افتادن الگوریتم ژنتیک در مینیمم محلی کمتر از سایر روش هاست. اما این روش از لحاظ محاسباتی پر هزینه می باشد و تضمینی برای رسیدن به جواب بهینه وجود ندارد.
الگوریتم ژنتیک کار خود را با ایجاد یک جمعیت اولیه از پاسخ های ممکن شروع می کند. جواب های پیشنهادی به صورت پارامتری بیان و متغییر های توصیف کننده هر یک از ان ها در کنار یکدیگر قرار داده می شوند و “کروموزومی” را تشکیل می دهند که نشان دهنده آن پاسخ در فرآیند های ارزیابی الگوریتم ژنتیک می باشد. مرحله بعد ارزیابی میزان تابع برازندگی26 برای هر یک از متغییرها و تخصیص احتمالات انتخاب به گونه ای می باشد که شانس انتخاب کروموزوم های با توابع برازندگی بهتر در مقایسه با کروموزوم هایی که تابع برازندگی نامناسب تری دارند بیشتر باشد. کروموزوم های با توابع برازندگی بهتر به عنوان والد27 انتخاب می شوند و برای ترکیب مجدد با یکدیگر جفت می شوند. اپراتوری که وظیفه ترکیب کروموزوم های والد را بر عهده دارد، اطلاعات والدها را با یکدیگر ترکیب می کند و باعث به وجود آوردن کروموزم های فرزند28 می شود که نسل بعد را شکل می دهند. بدین ترتیب یک مجموعه جدید از بردارهای جواب از روی بهترین جواب های مرحله قبل ساخته می شود. بنابراین به طور کلی هر نسل نسبت به نسل قبل از خصوصیات بهتری خواهد داشت. تکامل کروموزوم ها در طی نسل ها باعث حرکت به سمت پاسخ های بهینه می شود.
هرچند کروموزوم هایی که تابع برازندگی بهتری دارند برای انتقال به نسل بعد از شانس بهتری برخوردارند، شانس انتخاب شدن به عنوان والد برای سایر کروموزوم ها هم وجود دارد. از طرف دیگر فرزندانی که در هر نسل ایجاد می شوند لزوماً دارای خصوصیات بهتر نسبت به والدین خود نخواهند داشت. این موضوع باعث شکل گیری مکانیزمی می شود که قابلیت حفظ تنوع در میان جمعیت نسل را داشته باشد و به الگوریتم ژنتیک این امکان را می دهد که بهتر بتواند از دام پاسخ های بهینه محلی رهایی یابد.
در الگوریتم ژنتیک معمولا کروموزوم ها (یا همان اعضای یک جمعیت) به صورت رشته ای از بیت ها نمایش داده می شود تا اعمال اپراتور های ژنتیکی بر روی آن ساده تر باشد.
فضای فنوتیپ29: به مقادیر واقعی متغیر ها گفته می شود.
فضای ژنوتیپ30: به مقادیر انکد شده یا کروموزوم ها گفته می شود که توسط الگوریتم ژنتیک مورد استفاده قرار می گیرد.
باید راهی برای تبدیل این دو نحوه نمایش به یکدیگر بدست اورده شود. در شکل 2-1 این دو فضای متغیرها نمایش داده شده است.
شکل 2-1: نمایش متغیرها در دو فضای ژنوتیپ و فنوتیپ
2-2-1-1- عملگرهای الگوریتم ژنتیک
الگوریتم ژنتیک استاندارد که الگوریتم ژنتیک دودویی31 هم نامیده می شود، برای ایجاد یک نسل جدید، از اپراتور های زیر استفاده می کند.
رمز گذاری32
این مرحله شاید مشکل ترین مرحله حل مساله به روش الگوریتم ژنتیک باشد. الگوریتم ژنتیک به جای این که بر روی پارامترها یا متغیرهای مساله کار کند، با شکل کد شده آن ها سروکار دارد. یکی از روش های کد کردن، کد کردن دودویی می باشد که در آن هدف تبدیل جواب مساله به رشته ای از اعداد باینری است.
ارزیابی33
تابع برازندگی هر رشته را با یک مقدار عددی ارزیابی می کند که کیفیت آن را مشخص می نماید. هر چه کیفیت رشته جواب بالاتر باشد، مقدار برازندگی جواب بیشتر است و احتمال مشارکت برای تولید نسل بعدی نیز افزایش خواهد یافت.
عملگر تولید مجدد یا انتخاب34
در مرحله انتخاب، یک جفت از کروموزوم ها برگزیده می شوند تا با هم ترکیب شوند. عملگر انتخاب رابط بین دو نسل است و بعضی از اعضای نسل کنونی را به نسل آینده منتقل می کند. بعد از انتخاب، عملگر های ژنتیکی روی دو عضو برگزیده اعمال می شوند. معیار در انتخاب اعضا ارزش تطابق آن ها می باشد اما روند انتخاب حالتی تصادفی دارد.
شاید انتخاب مستقیم و ترتیبی به این شکل که بهترین اعضا دو به دو انتخاب شوند در نگاه اول روش مناسبی به نظر برسد اما باید به نکته ای توجه داشت. در الگوریتم ژنتیک ما با ژن ها روبه رو هستیم. یک عنصر با تطابق پایین اگرچه در نسل خودش عضو مناسبی نمی باشد اما ممکن است شامل ژن هایی خوب باشد و اگر شانس انتخاب شدنش صفر باشد، این ژن های خوب نمی توانند به نسل های بعد منتقل شوند. پس روش انتخاب باید به گونه ای باشد که به این عضو نیز شانس انتخاب شدن بدهد. راه حل مناسب، طراحی روش انتخاب به گونه ای است که احتمال انتخاب شدن اعضای با تطابق بالاتر بیشتر باشد. روش های متدوال انتخاب عبارتند از: انتخاب چرخ رولت، انتخاب بولتزمن، نخبه سالاری و انتخاب رقابتی.
انتخاب چرخ رولت
انتخاب چرخ رولت که اولین بار توسط هالند پیشنهاد شد یکی از مناسب ترین انتخاب های تصادفی بوده که ایده آن احتمال انتخاب می باشد.احتمال انتخا متناظر با هر کروموزوم بر اساس برازندگی آن محاسبه شده است که اگر f_k مقدار برازندگی کروموزوم k ام باشد، احتمال بقای متناظر با آن کروموزوم عبارت است از:
P_k=f_k/(∑_(i=1)^n▒f_i ) (2.1)
حال کروموزوم ها را بر اساس P_k مرتب کرده و q_k که همان مقادیر تجمعی P_k می باشد به صورت زیر به دست می آید.
q_k=∑_i^k▒P_i (2.2)
چرخ رولت به این صورت عمل می کند که برای انتخاب هر کروموزوم یک عدد تصادفی بین صفر و یک تولید کرده و عدد مذکور در هر بازه ای که قرار گرفت، کروموزوم متناظر با آن انتخاب می شود.
انتخاب نخبه سالاری
ایده نخبه سالاری، ویژگی تازه ای به پروسه انتخاب اضافه می کند. در نخبه سالاری، بهترین عضو هر جمعیت زنده می ماند و در جمعیت بعد حضور دارد. به عبارت دیگر، عضوی که بالاترین تطابق را دارد به طور خودکار به جمعیت جدید منتقل می شود. این روش در سال 1975 توسط کند دی جونز معرفی شد. اعمال نخبه سالاری در الگوریتم ژنتیک معمولا باعث بهبود کارایی آن می شود.
انخاب رقابتی
این روش تعدادی از اعضای جمعیت را به تصادف انتخاب می کند و سپس اگر شرطی خاص برقرار باشد، بهترین یا تعدادی از بهترین های آن ها را به عنوان والد بر می گزیند. اگر شرط برقرار نشود، بدترین عضو یا تعدادی از بدترین ها در تشکیل جمعیت آینده به عنوان والد در نظر گرفته می شوند.
شکل استاندارد این روش، رقابت دوتایی یا باینری است که به شکل زیر می باشد:
2 عضو به تصادف انتخاب می شود.
مقدار r به تصادف بین 0 و 1 انتخاب می شود.
پارامتر 00) ثابت انعکاس و c مرکز n+1 نقطه می باشد و از رابطه زیر بدست می آید:
c=1/n ∑_(i=1)^n▒x_i (2.7)
در ادامه مقدار تابع هدف به ازای نقطه جدید x_r ، یعنی f_r محاسبه می شود. گام بعد با توجه به مقدار f_r به یکی از صورت های زیر خواهد بود:
اگر f_1≥f_r≥f_n باشد، نقطه x_(n+1) که در واقع بدترین نقطه می باشد، در تکرار بعد با نقطه x_r جایگزین می گردد.
اگر f_r≥f_1 باشد، آنگاه نقطه x_r بهترین نقطه در جمعیت است. در این صورت فرض بر این می شود که انعکاس، در جهت نقطه بهینه است. بنابراین یک گام گسترش48 انجام می شود:
x_e=c+β(x_r-c) (2.8)
سپس مقدار تابع هدف در نقطه x_e ، یعنی f_e محاسبه می شود. لازم به ذکر است که β ضریب گسترش است و مقدار آن بزرگتر از یک می باشد. در این مرحله نیز دو حالت ممکن است رخ بدهد:
اگر f_e≥f_r باشد، آنگاه گسترش موفقیت آمیز بوده است و x_e جایگزین x_(n+1) می شود.
اگر f_e≤f_r باشد، آنگاه گسترش موفقیت آمیز نبوده است و x_r جایگزین x_(n+1) می شود.
اگر f_n≥f_r باشد، الگوریم بزرگ است و باید منقبض شود.
اگر f_r≥f_(n+1) باشد، آنگاه:
x_c=c+γ(x_(n+1)-c) (2.9)
اگر f_rs(θ_A) در آن صورت نقطه D به مرکز BC، نزدیکتر انتخاب می شود.
اگر s(θ_D )s(θ_A) در آن صورت نقطه D به مرکز BC، دورتر انتخاب می شود.
الگوریتم فوق توسط Nelder و Mead توسعه داده شده است. در زیر خلاصه گام به گام این الگوریتم برای یک مسئله مینیمم سازی در یک فضای دو بعدی آورده شده است:
مراحل الگوریتم Simplex در فضای دو بعدی برای یافتن مینیمم s(θ):
سه نقطه A,B,C با فاصله مساوی انتخاب می شوند.
s(θ_A) ، s(θ_B) و s(θ_C) محاسبه می شوند.
نقطه ای که s آن از سایرین بزرگتر می باشد، انتخاب می شود. (فرض کنید نقطه A انتخاب می شود.)
قرینه نقطه A نسبت به ضلع BC محاسبه می شود و D نامیده می شود.
s(θ_D) محاسبه می شود.
s(θ_B) ، s(θ_C) و s(θ_D) مقایسه شده و بزرگترین s انتخاب می شود.
الگوریتم مجدداً تکرار می شود تا جایی که به یک نقطه مشخص همگرا شود یا تغییرات s بسیار ناچیز باشد.
روش فوق بر مبنای محاسبه مستقیم تابع هزینه در هر نقطه می باشد و به گرادیان آن هیچ نیازی ندارد. پیشنهاد می شود تنها در مواردی که محاسبه گرادیان تابع هزینه بسیار مشکل باشد از روش فوق استفاده شود.
2-2-5- الگوریتم Hook Jeeves
الگوریتم HJ یک روش بهینه سازی بر مبنای جستجوی مستقیم می باشد و بر اساس محاسبه تابع هزینه عمل می کند و به مشتق آن نیازی ندارد. ایده این روش این است که برای جستجوی مقدار بهینه θ در یک فضای p بعدی، در p بعد مستقل به دنبال جواب θ باشد. به عبارت دیگر این الگوریتم از نقطه اولیه ▁θ_a شروع می کند و در یک جهت مشخص حرکت می کند تا θ_1 مینیمم تابع S(θ_1) را بیابد. اگر مقدار S(θ_1) در راستای حرکت افزایش یافت، جهت حرکت عوض می شود و اگر S(θ_1) تغییر چندانی نداشت گام حرکت49 کوچک تر می شود. سپس در راستای پارامتر θ_2 حرکت می کند و با θ_1 ثابت شده، θ_2 به گونه ای پیدا می شود که S(θ_2) حداقل شود. این روند تا آخرین پارامتر یعنی θ_p ادامه می یابد به نحوی که به بردار ▁θ_b برسیم. از این نقطه مجدداً الگوریتم فوق تکرار می شود. در شکل 2-14 نحوه جستجوی این الگوریتم در یک فضای جستجوی دو بعدی نمایش داده شده است.
شکل 2-14: نحوه جستجوی الگوریتم HJ در فضای جستجوی دو بعدی [10]
الگوریتم HJ دارای دو نوع حرکت برای رفتن به سمت پاسخ بهینه می باشد: حرکت اکتشافی50 و حرکت الگویی51 . در شکل بالا حرکت اکتشافی با پیکان با رنگ سیاه و حرکت الگویی با رنگ قرمز نشان داده شده است. حرکت اکتشافی در واقع تخمینی از مشتق52 را ارائه می دهد. همان طور که در شکل 2-14 نشان داده شده است الگوریتم از یک نقطه دلخواه (دایره با رنگ قرمز) شروع می شود و در یک جهت، حرکت اکتشافی انجام می دهد و تابع هزینه ارزیابی می شود. اگر الگوریتم بتواند به نقطه ای با تابع هدف مطلوب تر برسد، سپس حرکت اکتشافی در جهت دیگر فضای مسئله زده می شود. اگر دو حرکت اکتشافی، موفقیت آمیز باشد سپس یک حرکت الگویی انجام می شود. اگر حرکت الگویی منجر به پاسخ مطلوب تر نشد مجدداً از همان نقطه حرکت اکتشافی تکرار می شود. برای اطلاعات بیشتر در مورد الگوریتم HJ به مراجع [11و12] مراجعه شود.
در زیر خلاصه گام به گام این روش آورده شده است:
یک تخمین اولیه