تفاوت بین سهام اساسی و غیر مبتنی بر چیست؟

  • 2021-08-28

برنامه نویسی خطی مشکل پیدا کردن یک بردار X است که یک تابع خطی f t x را با محدودیت های خطی به حداقل می رساند:

به گونه ای که یک یا چند مورد از موارد زیر:

الگوریتم Linprog داخلی نقطه

الگوریتم Linprog 'نقطه داخلی' بسیار شبیه به الگوریتم QuadProg-point-convex است. همچنین ویژگی های بسیاری را با الگوریتم Linprog '-Point-Legacy "به اشتراک می گذارد. این الگوریتم ها همان طرح کلی را دارند:

پیش بینی ، به معنای ساده سازی و تبدیل مسئله به یک فرم استاندارد.

یک نقطه اولیه ایجاد کنید. انتخاب یک نقطه اولیه به ویژه برای حل کارآمد الگوریتم های نقطه داخلی بسیار مهم است و این مرحله می تواند وقت گیر باشد.

تکرارهای تصحیح پیش بینی کننده برای حل معادلات KKT. این مرحله به طور کلی وقت گیر است.

پیش بینی شده

این الگوریتم ابتدا سعی می کند با از بین بردن افزونگی ها و ساده سازی محدودیت ها ، مشکل را ساده کند. وظایف انجام شده در مرحله پیش بینی می تواند موارد زیر را شامل شود:

بررسی کنید که آیا هر متغیر دارای مرزهای بالا و پایین مساوی است یا خیر. در این صورت ، امکان سنجی را بررسی کرده و متغیرها را تعمیر و حذف کنید.

بررسی کنید که آیا هرگونه محدودیت نابرابری خطی فقط یک متغیر را شامل می شود. اگر چنین است ، امکان سنجی را بررسی کنید و سپس محدودیت خطی را به یک محدود تغییر دهید.

بررسی کنید که آیا هرگونه محدودیت برابری خطی فقط یک متغیر را شامل می شود. در این صورت ، امکان سنجی را بررسی کرده و متغیر را تعمیر و حذف کنید.

بررسی کنید که آیا ماتریس محدودیت خطی دارای ردیف صفر است یا خیر. اگر چنین است ، امکان سنجی را بررسی کنید و سپس ردیف ها را حذف کنید.

تعیین کنید که آیا مرزها و محدودیتهای خطی سازگار هستند.

بررسی کنید که آیا متغیرها فقط به عنوان اصطلاحات خطی در عملکرد هدف ظاهر می شوند و در هیچ محدودیت خطی ظاهر نمی شوند. در این صورت ، امکان سنجی و محدودیت را بررسی کنید و سپس متغیرها را در مرزهای مناسب آنها برطرف کنید.

با اضافه کردن متغیرهای SLACH ، هر محدودیت نابرابری خطی را به محدودیت های برابری خطی تغییر دهید.

اگر الگوریتم یک مشکل غیرقابل نفوذ یا بی حد و مرز را تشخیص دهد ، متوقف می شود و یک پیام خروج مناسب را صادر می کند.

این الگوریتم ممکن است به یک نقطه عملی واحد برسد ، که نشان دهنده راه حل است.

اگر الگوریتم در مرحله پیش بینی یک مشکل غیرقابل نفوذ یا بی حد و مرز را تشخیص ندهد ، و اگر پیش بینی راه حل را تولید نکرده باشد ، الگوریتم به مراحل بعدی خود ادامه می دهد. پس از رسیدن به یک معیار توقف ، الگوریتم مشکل اصلی را بازسازی می کند و هرگونه تحول پیش روی را خنثی می کند. این مرحله آخر مرحله Postolve است.

برای سادگی ، اگر مشکل در مرحله پیش بینی حل نشود ، الگوریتم همه مرزهای محدود محدود را به صفر تغییر می دهد.

نقطه اولیه را ایجاد کنید

برای تنظیم نقطه اولیه ، x0 ، الگوریتم موارد زیر را انجام می دهد.

X0 را به موارد (n ، 1) اولیه کنید ، جایی که n تعداد عناصر بردار عملکرد هدف f است.

همه اجزای محدود را تبدیل کنید تا حد پایین تر 0 داشته باشند.

برای مؤلفه هایی که فقط یک محدود دارند ، در صورت لزوم مؤلفه را اصلاح کنید تا به شدت در محدوده قرار بگیرد.

برای نزدیک شدن X0 به مسیر مرکزی ، یک مرحله اصلاح کننده پیش بینی کننده را انجام دهید ، و سپس متغیرهای حاصل و Slack را تغییر دهید تا در هر مرز به خوبی دراز بکشید. برای جزئیات بیشتر در مورد مسیر مرکزی ، به Nocedal و Wright [7] ، صفحه 397 مراجعه کنید.

پیش بینی کننده

مشابه الگوریتم نقطه داخلی Fmincon ، الگوریتم نقطه داخلی سعی می کند نقطه ای را پیدا کند که شرایط Karush-Kuhn-Tucker (KKT) در آن وجود داشته باشد. برای توصیف این معادلات برای مشکل برنامه نویسی خطی ، شکل استاندارد مشکل برنامه نویسی خطی را پس از پیش پردازش در نظر بگیرید:

min x f t x موضوع< A ¯ x = b ¯ x + t = u x , t ≥ 0.

اکنون فرض کنید که همه متغیرها حداقل یک محدوده محدود دارند. در صورت لزوم ، با تغییر و نفی مؤلفه ها ، این فرض بدان معنی است که تمام اجزای X دارای حد پایین 0 هستند.

¯ ماتریس خطی گسترده است که شامل نابرابری های خطی و برابری خطی است. B ¯ بردار برابری خطی مربوطه است. A ¯ همچنین شامل اصطلاحاتی برای گسترش بردار X با متغیرهای Slack است که محدودیت های نابرابری را به محدودیت های برابری تبدیل می کنند:

a ¯ x = (a e q 0 a i) (x 0 s) ،

جایی که x0به معنای بردار X اصلی است.

t بردار شلیک هایی است که مرزهای بالایی را به برابری تبدیل می کند.

Lagrangian برای این سیستم شامل بردارهای زیر است:

y ، چند برابر Lagrange مرتبط با برابری خطی

V ، چند برابر Lagrange مرتبط با محدوده پایین (محدودیت مثبت)

W ، چند برابر Lagrange مرتبط با حد بالایی

Lagrangian است

l = f t x - y t (a ¯ x - b ¯) - v t x - w t (u - x - t).

بنابراین ، شرایط KKT برای این سیستم است

f - a ¯ t y - v + w = 0 a ¯ x = b ¯ x + t = u v i x i = 0 w i t i = 0 (x ، v ، w ، t) ≥ 0.

الگوریتم LinProg از یک کنوانسیون علامت متفاوت برای ضربهای Lagrange برگشتی از این بحث استفاده می کند. این بحث از همان علامت بیشتر ادبیات استفاده می کند. به لامبدا مراجعه کنید.

این الگوریتم ابتدا گامی از فرمول نیوتن-رافسون پیش بینی می کند ، و سپس یک مرحله اصلاح کننده را محاسبه می کند. اصلاح کننده سعی در کاهش باقیمانده در معادلات مکمل غیرخطی داردizi= 0. مرحله نیوتن-رافسون است

(0 - A ¯ t 0 - I I A ¯ 0 0 0 - I 0 - I 0 0 0 0 0 0 0 0 0 W 0 T) (Δ x Δ y δ t Δ V Δ W) = - (f - a¯ t y - v + w a ¯ x - b ¯ u - x - t v x w t) = - (r d r p r u b r v x r w) ، (1)

جایی که X ، V ، W و T به ترتیب ماتریس های مورب هستند که به ترتیب با بردارهای X ، V ، W و T مطابقت دارند. بردارهای باقیمانده در سمت راست معادله عبارتند از:

rub، باقیمانده محدود

rvx، باقیمانده مکمل کمتری

rwt، باقیمانده مکمل محدود

نمایشگر تکراری این مقادیر را گزارش می کند:

نفوذ پذیری اولیه = ‖ R P ‖ 1 + ‖ R U B ‖ 1 infeacibility دوگانه = ‖ R D ∞.

برای حل معادله 1 ، ابتدا آن را به فرم ماتریس متقارن تبدیل کنید

( - D a ¯ t a ¯ 0) (Δ x Δ y) = - (r r p) ، (2)

d = x - 1 v + t - 1 w r = - r d - x - 1 r v x + t - 1 r w t + t - 1 w r u b.

تمام معکوس های ماتریس در تعاریف D و R برای محاسبه ساده هستند زیرا ماتریس ها مورب هستند.

برای به دست آوردن معادله 2 از معادله 1 ، توجه داشته باشید که ردیف دوم معادله 2 همان ردیف ماتریس دوم معادله است. 1. ردیف اول معادله 2 از حل دو ردیف آخر معادله 1 برای Δ V و Δ W می آید، و سپس حل برای Δ t.

معادله 2 متقارن است ، اما به دلیل اصطلاح - D قطعی نیست. بنابراین ، شما نمی توانید آن را با استفاده از یک فاکتورسازی cholesky حل کنید. چند مرحله دیگر به یک معادله متفاوت منجر می شود که قطعی مثبت است و از این رو می توان با فاکتورسازی کولزکی به طور مؤثر حل کرد.

مجموعه دوم ردیف های معادله 2 است

و اولین مجموعه ردیف ها است

- D Δ x + a ¯ t δ y = - r.

Δ x = d - 1 a ¯ t δ y + d - 1 r

a ¯ d - 1 a ¯ t δ y = - a ¯ d - 1 r - r p. (3)

معمولاً کارآمدترین روش برای یافتن مرحله نیوتن ، حل معادله 3 برای Δ y با استفاده از فاکتورسازی cholesky است. فاکتورسازی کولزکی امکان پذیر است زیرا ماتریس ضرب Δ y آشکارا متقارن است و در صورت عدم وجود دژنراسیون ، قطعی مثبت است. پس از آن ، برای یافتن مرحله نیوتن ، جایگزین برگشت برای یافتن Δ x ، Δ t ، Δ v و Δ w. با این حال ، هنگامی که یک ستون متراکم دارد ، می تواند به جای آن برای حل معادله 2 کارآمدتر باشد. الگوریتم نقطه داخلی Linprog الگوریتم راه حل را بر اساس چگالی ستون ها انتخاب می کند.

برای جزئیات بیشتر الگوریتم ، به Mehrotra مراجعه کنید [6].

پس از محاسبه مرحله اصلاح شده نیوتن ، این الگوریتم محاسبات بیشتری را برای به دست آوردن هر دو مرحله جریان طولانی تر انجام می دهد و هم برای مراحل بعدی بهتر آماده می شود. این محاسبات اصلاحات متعدد می تواند عملکرد و استحکام را بهبود بخشد. برای جزئیات بیشتر ، به Gondzio [4] مراجعه کنید.

الگوریتم اصلاح کننده پیش بینی کننده عمدتاً مشابه نسخه کامل QuadProg "داخلی-نقطه-Convex" است ، به جز اصطلاحات درجه دوم. به تصحیح کامل پیش بینی کننده مراجعه کنید.

شرایط توقف

الگوریتم اصلاح کننده پیش بینی کننده تکرار می شود تا زمانی که به نقطه ای برسد که امکان پذیر باشد (محدودیت ها را در تحمل برآورده می کند) و اندازه های مرحله نسبی کوچک است. به طور خاص ، تعریف کنید

ρ = حداکثر (1 ، ‖ A ¯ ‖ ، ‖ F ‖ ، ‖ B ¯ ‖).

الگوریتم وقتی تمام این شرایط راضی می شود متوقف می شود:

‖ r p ‖ 1 + ‖ r u b ‖ 1 ≤ ρ tolcon ‖ r d ‖ ∞ ρ tolfun r c ≤ tolfun ،

r c = max i (min (| x i v i | ، | x i | ، | v i |) ، min (| t i w i | ، | t i | ، | w i |)).

rcاساساً اندازه باقیمانده های مکمل XV و TW را اندازه گیری می کند که هر بردار صفرها در یک محلول هستند.

برنامه نویسی خطی و لک داخلی

مقدمه

روش داخلی-لیسم بر اساس لیپول ([52]) است که نوعی الگوریتم تصحیح پیش بینی کننده مهروترا ([47]) ، یک روش داخلی دوتایی است.

الگوریتم اصلی

این الگوریتم با استفاده از یک سری مراحل پیش پردازش آغاز می شود (به پیش پردازش مراجعه کنید). پس از پیش پردازش ، مشکل فرم دارد

min x f t x به گونه ای که< A ⋅ x = b 0 ≤ x ≤ u . (4)

محدودیت های مرزهای بالا به طور ضمنی در ماتریس محدودیت a گنجانده شده است. با افزودن متغیرهای Slack Primal S ، معادله 4 می شود

min x f t x به گونه ای که< A ⋅ x = b x + s = u x ≥ 0 , s ≥ 0. (5)

که از آن به عنوان مشکل اولیه یاد می شود: X از متغیرهای اولیه تشکیل شده و S از متغیرهای Slack Primal تشکیل شده است. مشکل دوگانه است

حداکثر b t y - u t w به گونه ای که< A T ⋅ y − w + z = f z ≥ 0 , w ≥ 0 , (6)

جایی که Y و W از متغیرهای دوگانه تشکیل شده و Z از شلیک های دوگانه تشکیل شده است. شرایط بهینه برای این برنامه خطی ، یعنی معادله اولیه 5 و معادله دوگانه 6 ،

f (x ، y ، z ، s ، w) = (a ⋅ x - b x + s - u a t ⋅ y - w + z - f x i z i s i w i) = 0 ، x ≥ 0 ، z ≥ 0 ، s ≥ 0 ، w ≥0 ، (7)

الگوریتم LinProg از یک کنوانسیون علامت متفاوت برای ضربهای Lagrange برگشتی از این بحث استفاده می کند. این بحث از همان علامت بیشتر ادبیات استفاده می کند. به لامبدا مراجعه کنید.

معادلات درجه دوم xizi= 0 و Siwi= 0 شرایط مکمل برای برنامه خطی نامیده می شود. معادلات دیگر (خطی) شرایط امکان سنجی نامیده می شود. کمیت

شکاف دوگانگی است ، که باقیمانده قسمت مکمل F هنگام (x ، z ، s ، w) ≥ 0 را اندازه گیری می کند.

این الگوریتم یک الگوریتم دوتایی اولیه است ، به این معنی که برنامه های اولیه و دوگانه همزمان حل می شوند. این می تواند یک روش شبیه نیوتن در نظر گرفته شود ، که بر روی سیستم خطی-چهارگانه F (X ، Y ، Z ، S ، W) = 0 در معادله 7 اعمال می شود ، در حالی که در همان زمان تکرار X ، Z ، W وS مثبت ، بنابراین نام روش داخلی.(تکرار در منطقه کاملاً داخلی است که توسط محدودیت های نابرابری در معادله 5 نشان داده شده است.)

The algorithm is a variant of the predictor-corrector algorithm proposed by Mehrotra. Consider an iterate v = [ x;y;z;s;w ] , where [ x;z;s;w ] >0 ابتدا جهت به اصطلاح پیش بینی را محاسبه کنید

Δ v p = - (f t (v)) - 1 f (v) ،

که جهت نیوتن است ؛سپس جهت به اصطلاح اصلاحی

Δ v c = - (f t (v)) - 1 f (v + Δ v p) - μ e ^ ،

where μ > 0 is called the centering parameter and must be chosen carefully. e ^ is a zero-one vector with the ones corresponding to the quadratic equations in F ( v ), i.e., the perturbations are only applied to the complementarity conditions, which are all quadratic, but not to the feasibility conditions, which are all linear. The two directions are combined with a step length parameter α >0 و V را به روز کنید تا iterate v + جدید را بدست آورید:

V + = V + α (Δ V P + Δ V C) ،

جایی که پارامتر طول مرحله α به گونه ای انتخاب شده است که

در حل جهت پیش بینی/اصلاح کننده قبلی ، الگوریتم یک فاکتور مستقیم (پراکنده) را در اصلاح فاکتورهای cholesky از A · A محاسبه می کند. اگر A ستون های متراکم داشته باشد ، در عوض از فرمول شرمن-موریسون استفاده می کند. اگر این راه حل کافی نباشد (باقیمانده خیلی بزرگ است) ، یک عامل LDL از یک سیستم تقویت شده از معادلات مرحله را برای یافتن راه حل انجام می دهد.(به مثال 4 مراجعه کنید - ساختار D در صفحه مرجع عملکرد MATLAB ® LDL.)

الگوریتم سپس حلقه می زند تا تکرارها همگرا شوند. معیارهای اصلی توقف استاندارد است:

حداکثر (‖ r b ‖ حداکثر (1 ، ‖ b ‖) ، ‖ r f ‖ max (1 ، ‖ f ‖) ، ‖ r u ‖ max (1 ، ‖ u ‖) ، | f t x - b t y + u t w w| حداکثر (1 ، | f t x | ، | b t y - u t w |)) ≤ t o l ،

r b = a x - b r f = a t y - w + z - f r u =< x >+ S - U

are the primal residual, dual residual, and upper-bound feasibility respectively ( x >به معنای X با مرزهای محدود محدود) ، و

f t x - b t y + u t w

تفاوت بین مقادیر هدف اولیه و دوگانه است و TOL تحمل است. مبلغ در معیارهای توقف ، کل خطاهای نسبی را در شرایط بهینه در معادله 7 اندازه گیری می کند.

اندازه گیری نفوذپذیری اولیه ||حرفb||، و اندازه گیری دوتایی دوگانه ||حرفf||، جایی که هنجار هنجار اقلیدسی است.

پیش پردازش

این الگوریتم ابتدا سعی می کند با از بین بردن افزونگی ها و ساده سازی محدودیت ها ، مشکل را ساده کند. وظایف انجام شده در مرحله پیش بینی می تواند موارد زیر را شامل شود:

بررسی کنید که آیا هر متغیر دارای مرزهای بالا و پایین مساوی است یا خیر. در این صورت ، امکان سنجی را بررسی کرده و متغیرها را تعمیر و حذف کنید.

بررسی کنید که آیا هرگونه محدودیت نابرابری خطی فقط یک متغیر را شامل می شود. اگر چنین است ، امکان سنجی را بررسی کنید و سپس محدودیت خطی را به یک محدود تغییر دهید.

بررسی کنید که آیا هرگونه محدودیت برابری خطی فقط یک متغیر را شامل می شود. در این صورت ، امکان سنجی را بررسی کرده و متغیر را تعمیر و حذف کنید.

بررسی کنید که آیا ماتریس محدودیت خطی دارای ردیف صفر است یا خیر. اگر چنین است ، امکان سنجی را بررسی کنید و سپس ردیف ها را حذف کنید.

تعیین کنید که آیا مرزها و محدودیتهای خطی سازگار هستند.

بررسی کنید که آیا متغیرها فقط به عنوان اصطلاحات خطی در عملکرد هدف ظاهر می شوند و در هیچ محدودیت خطی ظاهر نمی شوند. در این صورت ، امکان سنجی و محدودیت را بررسی کنید و سپس متغیرها را در مرزهای مناسب آنها برطرف کنید.

با اضافه کردن متغیرهای SLACH ، هر محدودیت نابرابری خطی را به محدودیت های برابری خطی تغییر دهید.

اگر الگوریتم یک مشکل غیرقابل نفوذ یا بی حد و مرز را تشخیص دهد ، متوقف می شود و یک پیام خروج مناسب را صادر می کند.

این الگوریتم ممکن است به یک نقطه عملی واحد برسد ، که نشان دهنده راه حل است.

اگر الگوریتم در مرحله پیش بینی یک مشکل غیرقابل نفوذ یا بی حد و مرز را تشخیص ندهد ، و اگر پیش بینی راه حل را تولید نکرده باشد ، الگوریتم به مراحل بعدی خود ادامه می دهد. پس از رسیدن به یک معیار توقف ، الگوریتم مشکل اصلی را بازسازی می کند و هرگونه تحول پیش روی را خنثی می کند. این مرحله آخر مرحله Postolve است.

برای سادگی ، الگوریتم همه مرزهای پایین را به صفر تغییر می دهد.

در حالی که این مراحل پیش پردازش می تواند برای سرعت بخشیدن به قسمت تکراری الگوریتم ، در صورت نیاز به ضرب های Lagrange ، مراحل پیش پردازش را خنثی کند ، زیرا چند برابر کننده محاسبه شده در طول الگوریتم برای مشکل تبدیل شده است و نه اصلی. بنابراین ، در صورت عدم درخواست چند برابر ، این تحول محاسبه نمی شود و ممکن است برخی از زمان محاسباتی را صرفه جویی کند.

الگوریتم دوگانه دوگانه

در سطح بالا ، الگوریتم Linprog 'Dual-Simplex' اساساً یک الگوریتم Simplex را بر روی مشکل دوگانه انجام می دهد.

الگوریتم با پیش پردازش همانطور که در پیش پردازش شرح داده می شود ، آغاز می شود. برای جزئیات بیشتر ، به اندرسن و اندرسن [1] و Nocedal و Wright [7] ، فصل 13 مراجعه کنید. این پیش پردازش مشکل برنامه نویسی خطی اصلی را به شکل معادله 4 کاهش می دهد:

min x f t x به گونه ای که< A ⋅ x = b 0 ≤ x ≤ u .

A و B نسخه های تبدیل شده از ماتریس های محدودیت اصلی هستند. این مشکل اولیه است.

امکان سنجی اولیه را می توان از نظر عملکرد + تعریف کرد

x + = < x if x >0 0 اگر x ≤ 0.

اندازه گیری نفوذپذیری اولیه است

نفوذ پذیری اولیه = ((lb - x) +) 2 + ((x - ub) +) 2 + ((a x - b) +) 2 + |aeq x - beq |2

همانطور که در معادله 6 توضیح داده شده است ، مشکل دوگانه یافتن بردارها Y و W و یک بردار متغیر Slack Z است که حل می شود

حداکثر b t y - u t w به گونه ای که< A T ⋅ y − w + z = f z ≥ 0 , w ≥ 0.

الگوریتم LinProg از یک کنوانسیون علامت متفاوت برای ضربهای Lagrange برگشتی از این بحث استفاده می کند. این بحث از همان علامت بیشتر ادبیات استفاده می کند. به لامبدا مراجعه کنید.

اندازه گیری دوتایی دوگانه است

دوتایی دوتایی = ‖ a t y + z - w - f ‖ 2.

به خوبی شناخته شده است (برای مثال ، به [7] مراجعه کنید) که هر راه حل محدود از مشکل دوگانه راه حلی برای مشکل اولیه ارائه می دهد ، و هر راه حل محدود از مشکل اولیه ، راه حل مشکل دوگانه را ارائه می دهد. علاوه بر این ، اگر مشکل اولیه یا دوگانه بدون مرز باشد ، مشکل دیگر غیرقابل نفوذ است. و اگر یا مشکل اصلی یا دوگانه غیرقابل نفوذ باشد ، مشکل دیگر غیرقابل نفوذ است یا بی حد و مرز است. بنابراین ، در صورت وجود ، این دو مشکل از نظر بدست آوردن یک راه حل محدود معادل هستند. از آنجا که مشکلات اولیه و دوگانه از نظر ریاضی معادل هستند ، اما مراحل محاسباتی متفاوت است ، بهتر است با حل مسئله دوگانه مشکل اولیه را حل کنیم.

برای کمک به کاهش انحطاط (به Nocedal و Wright [7] ، صفحه 366) ، الگوریتم دوتایی Simplex با اختلال در عملکرد هدف آغاز می شود.

فاز 1 الگوریتم دوتایی Simplex یافتن یک نقطه امکان پذیر دوگانه است. این الگوریتم این کار را با حل یک مشکل برنامه نویسی خطی کمکی انجام می دهد.

در فاز 1 ، الگوریتم با حل یک مشکل برنامه نویسی خطی کمکی کمکی ، یک راه حل اولیه عملی اولیه را پیدا می کند (برای تعریف یک تعریف) به متغیرهای اساسی و غیرعادی مراجعه کنید). عملکرد هدف از مشکل کمکی عملکرد مجازات خطی p = ∑ j p j (x j) است.

P J (x j) =< x j − u j if x j >u j 0 if l j ≤ x j ≤ u j l j − x j if l j >X j.

P (x) اندازه گیری می کند که یک نقطه X شرایط مرز پایین و بالا را نقض می کند. مشکل کمکی است

min x ∑ j p j موضوع< A ⋅ x ≤ b A e q ⋅ x = b e q .

مشکل اصلی دارای یک نقطه پایه امکان پذیر است اگر و فقط اگر مشکل کمکی دارای حداقل مقدار 0 باشد.

این الگوریتم با یک روش اکتشافی که در صورت لزوم متغیرهای Slack و مصنوعی را اضافه می کند ، یک نقطه اولیه برای مشکل کمکی پیدا می کند. سپس الگوریتم از این نقطه اولیه به همراه الگوریتم Simplex برای حل مشکل کمکی استفاده می کند. راه حل نقطه اولیه برای فاز 2 الگوریتم اصلی است.

در فاز 2 ، حل کننده بارها و بارها یک متغیر ورودی و متغیر ترک را انتخاب می کند. این الگوریتم متغیر ترک را مطابق تکنیکی که توسط فارست و گلدفارب [3] به نام قیمت گذاری دوتایی به نام دوگانه پیشنهاد شده است ، انتخاب می کند. این الگوریتم با استفاده از تغییر تست نسبت هریس که توسط کوبستین پیشنهاد شده است ، متغیر ورودی را انتخاب می کند [5]. برای کمک به کاهش انحطاط ، الگوریتم می تواند آشفتگی های اضافی را در فاز 2 معرفی کند.

در فاز 2 ، الگوریتم الگوریتم Simplex را ، از نقطه اولیه از فاز 1 شروع می کند تا مشکل اصلی را حل کند. در هر تکرار ، الگوریتم شرایط بهینه را آزمایش می کند و اگر راه حل فعلی بهینه باشد متوقف می شود. اگر راه حل فعلی بهینه نباشد ، الگوریتم

یک متغیر را به نام متغیر ورود ، از متغیرهای غیربازی انتخاب می کند و ستون مربوطه از غیرباز را به پایه اضافه می کند (برای تعاریف به متغیرهای اساسی و غیرعادی مراجعه کنید).

متغیرهای متغیر را از متغیرهای اصلی انتخاب می کند و ستون مربوطه را از پایه خارج می کند.

راه حل فعلی و مقدار هدف فعلی را به روز می کند.

این الگوریتم با حل دو سیستم خطی ضمن حفظ امکان سنجی محلول ، متغیرهای ورودی و ترک را انتخاب می کند.

این الگوریتم هنگامی که هیچ پیشرفتی در فرآیند محلول فاز 2 وجود ندارد ، تشخیص می دهد. این تلاش می کند تا با انجام خدمات محدود محدود ادامه یابد. برای توضیح این بخش از الگوریتم ، به Applegate ، Bixby ، Chvatal و Cook مراجعه کنید [2].

حل کننده تکراری ، تلاش برای حفظ امکان سنجی دوگانه ضمن کاهش نفوذپذیری اولیه ، تا زمانی که محلول برای کاهش مشکل کاهش یافته ، هم امکان پذیر باشد و هم امکان پذیر است. این الگوریتم آشفتگی هایی را که معرفی کرده است باز می کند. اگر راه حل (به مشکل آشفته) برای مشکل بدون فشار (اصلی) غیرقابل تحمل باشد ، پس حل کننده با استفاده از الگوریتم های اولیه Simplex یا فاز 1 امکان سنجی دوگانه را بازیابی می کند. سرانجام ، حل کننده مراحل پیش پردازش را برای بازگشت راه حل به مشکل اصلی باز می کند.

متغیرهای اساسی و غیرعادی

در این بخش اصطلاحات مبانی ، عدم کارآیی و راه حل های اساسی امکان پذیر برای یک مشکل برنامه نویسی خطی تعریف شده است. این تعریف فرض می کند که مشکل به شکل استاندارد زیر آورده شده است:

min x f t x به گونه ای که< A ⋅ x = b , l b ≤ x ≤ u b .

(توجه داشته باشید که A و B ماتریس و بردار نیستند که نابرابری ها را در مشکل اصلی تعریف می کنند.) فرض کنید که A یک ماتریس m-n ، از رتبه m است< n , whose columns are a 1، آ2, . an >وادفرض کنید که< a i 1 , a i 2 , . , a i m >مبنایی برای فضای ستون A است ، با مجموعه فهرست B = i1، من2, . im >، و آن n = \ b مکمل b است. زیرمجاز aBمبنای و زیرمجاز مکمل A نامیده می شودNبه عنوان غیر بوزی نامیده می شود. بردار متغیرهای اساسی x استBو بردار متغیرهای غیر باری x استNواددر هر تکرار در فاز 2 ، الگوریتم یک ستون از مبنای فعلی را با یک ستون از غیرباسی جایگزین می کند و متغیرهای x را به روز می کندBو xNبر این اساس.

اگر x یک راه حل برای · x = b و تمام متغیرهای غیر باری در x استNبرابر با مرزهای پایین یا بالایی آنها هستند ، x به عنوان یک راه حل اساسی خوانده می شود. اگر علاوه بر این ، متغیرهای اصلی در xBمرزهای پایین و بالایی آنها را برآورده کنید ، به طوری که x یک نقطه امکان پذیر است ، X به عنوان یک راه حل عملی اساسی نامیده می شود.

منابع

[1] اندرسن ، E. D. ، و K. D. Andersen. پیش بینی در برنامه نویسی خطی. ریاضی. برنامه نویسی 71 ، 1995 ، صص 221–245.

[2] Applegate ، D. L. ، R. E. Bixby ، V. Chvátal and W. J. Cook ، مشکل فروشنده مسافرتی: یک مطالعه محاسباتی ، انتشارات دانشگاه پرینستون ، 2007.

[3] فارست ، J. J. ، و D. Goldfarb. الگوریتم های SIMPLEX EDGEST برای برنامه نویسی خطی. ریاضی. برنامه نویسی 57 ، 1992 ، صص 341-374.

[4] Gondzio ، J. "اصلاحات چند مرکزیت در یک روش دوتایی اولیه برای برنامه نویسی خطی."بهینه سازی و برنامه های کاربردی محاسباتی ، دوره 6 ، شماره 2 ، 1996 ، صص 137-156. موجود در https://www. maths. ed. ac. uk/~gondzio/نرم افزار/اصلاح کننده ها.

[5] Koberstein ، A. پیشرفت در الگوریتم دوتایی Simplex برای حل مشکلات LP در مقیاس بزرگ: تکنیک هایی برای اجرای سریع و پایدار. بهینه محاسباتی. و برنامه 41 ، 2008 ، صص 185-204.

[6] Mehrotra ، S. "در مورد اجرای یک روش نقطه داخلی دوتایی."مجله سیام در مورد بهینه سازی ، جلد. 2 ، 1992 ، صص 575-601.

[7] Nocedal ، J. ، و S. J. Wright. بهینه سازی عددی ، چاپ دوم. سری اسپرینگر در تحقیقات عملیات ، Springer-Verlag ، 2006.

  • نویسنده : خانم نرگس شاه محمد
  • منبع : digitalprintedgraphics.website
  • بدون دیدگاه

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.