payamvha/North_RAG huggingface dataset:
نماها، اغتشاش در جریان هوا در این نواحی به وجود می‌آید که برای اجتناب از این مسئله بایستی از استقرار دریچه‌ها در گوشهٔ ساختمان خودداری کرد. ولی در بقیه دالان اختلاف فشار کمی وجود دارد که این مسئله به تهویه هوا کمک می‌کند. همچنین برای کارایی بیشتر، بهتر است که درچه‌های ورود و خروج هوا به صورت شطرنجی نزدیک کف و سقف باشند. در طول راهرو حائل‌هایی بین هر اتاق قرار می‌گیرد که از عبور صدا از اتاقی به اتاق دیگر جلوگیری کند. در این نماها، فضای میانی بین دو جداره داخلی و خارجی به صورت افقی و عمودی بین چند اتاق متصل
و خارجی به صورت افقی و عمودی بین چند اتاق متصل و یکی است. گاهی اوقات این فضا ممکن است در دور تا دور ساختمان بدون هیچ تقسیم‌کننده میانی چرخیده شود. در فصل‌های سرد می‌توان بازشوهای بالا و پایین را بست که با استفاده از خاصیت گل خانه‌ای، باعث ایجاد گرما کرد. این نماها معمولاً در جاهایی که سر و صدای محیط بالا است، کاربرد بیشتری دارند از آنجایی که در جداره خارجی نما بازشویی ندارد، باید اتاق‌های پشت نما را به صورت مکانیکی تهویه کرد. باید به مسئله سر و صدای عبوری از طریق فضای میانی توجه داشت. در این مدل نما، دو
از طریق فضای میانی توجه داشت. در این مدل نما، دو حالت تهویه جدار خارجی و منطقه حائل بیشتری کاربرد دارند. بررسی عملکرد نمای دو پوسته به عنوان سیستم غیرفعال خورشیدی (اثر گلخانه‌ای). نمای دوپوسته شامل عناصری مشابه عناصر تشکیل دهنده گلخانه‌ها است. با این تفاوت که حفره میانی آن قابل زیستن نیست. وقتی نور خورشید به پوسته خارجی برخورد می‌کند، بخشی از آن منعکس یا جذب و قسمتی از آن نیز عبور داده می‌شود. اشعه‌های خورشید که از پوسته خارجی عبور می‌کنند توسط پوسته داخلی جذب شده و درجه حرارت آن را بالا می‌برند سپس در
جذب شده و درجه حرارت آن را بالا می‌برند سپس در جهات مختلف ساطع می‌شود. پس از مدتی درجه حرارت جداره خارجی شیشه‌ای با جذب پرتوهای حفره میانی و همچنین جذب قسمتی از نور خورشید بالا می‌رود. حال بخشی از این پرتوهای جذب شده در هر دو سمت شیشه ساطع می‌شوند. بخشی از این تابش بدین طریق به دام می‌افتد که درجه حرارت هوای فضای داخلی را به علت رسانش انتقالی بین دیواره‌ها و هوای پوسته‌ها افزایش می‌دهد. اثر پارامترهای مختلف نمای دو پوسته بر روی اثر گلخانه‌ای در تحقیقات مختلفی مورد بحث و بررسی قرار گرفته‌است. منابع.
مختلفی مورد بحث و بررسی قرار گرفته‌است. منابع. Wikipedia contributors, "Facade," Wikipedia, The Free Encyclopedia, (accessed February ۲۸, ۲۰۱۰).
نقطه نخستین بُعد یک اثر هنری است و در علوم مختلف دارای تعاریف گوناگونی است. نقطه از دیدگاه فیزیکی-ریاضی. موجودی است موهوم با ابعاد فیزیکیِ صفر که نه درازا دارد، نه پهنا، نه ژرفا و نه بلندا، ولیکن به‌طور قراردادی به‌وسیلهٔ لکه‌ای بسیار کوچک که به‌زحمت شایان دیدن باشد ترسیم می‌شود. نقطه از دیدگاه هنر. موجودیست حقیقی و واقعی که می‌تواند درازا و پهنا یا ژرفا داشته باشد و فقط می‌تواند یکی از این دو ابعاد فیزیکی-ریاضی را به خود تخصیص دهد؛ یعنی یا تنها درازا یا پهنا یا بلندا یا درازا و پهنا داشته باشد. در نتیجه از
یا بلندا یا درازا و پهنا داشته باشد. در نتیجه از لحاظ هنری نقطه موجودی‌ست جاندار و دارندهٔ روح زیرا همه چیز می‌تواند نقطه باشد از بی‌نهایت کوچک تا بی‌نهایت بزرگ حتی انسان. مفاهیم دیگر. نقطه به‌عنوان ساده‌ترین و ناچیزترین عنصر تصویری در شرایط خاصی جلوه‌های تازه به خود می‌گیرد و نمود آن متغیر می‌شود و حتی ارزش تصویری تازه‌ای پیدا می‌کند. یک نقطه دارای انرژی تصویری است و هرگاه برای قوه بینایی مطرح شود و ادراک گردد موجودیت خود را اعلام کرده‌است. در ضمن هرگاه شروع به رشد نماید جلوهٔ خط یا عناصر دیگر را به خود
به رشد نماید جلوهٔ خط یا عناصر دیگر را به خود می‌گیرد. هر نقطه‌ای دارای مفهوم و جلوهٔ خاص تصویری است از جمله: دارای «مرکزیت» و «ایستا» است، به‌ویژه اگر به‌صورت واحد در سطح یا در فضا مطرح شود. هرگاه قطره‌ای از یک مایع رنگین، مانند جوهر، بر روی سطحی می‌افتد، شکلی که حاصل می‌شود نقطه را تصویر می‌کند حتی اگر به‌صورت دایره یا شکل هندسی مشخص نباشد. نقطه دارای انرژی است که انرژی آن بسیار متراکم و در درون آن نهفته‌است. در موسیقی فاصله‌های بین سکوت و صدا را نقطه می‌دانند. نقطه دارای ارزش نسبی است. بستگی دارد در چه
نقطه دارای ارزش نسبی است. بستگی دارد در چه شرایطی و در چه فضایی مطرح شده باشد. به همین جهت نقطه ممکن است گاهی به‌صورت سطح جلوه داشته‌باشد یا عکس آن اتفاق بیفتد. تراکم (تجمع). وقتی در یک تصویر، نقاط مشابه به‌صورت یکنواختی پراکنده شده‌باشند، در نتیجه جاذبهٔ بصری ایجاد نمی‌شود اما اجتماع و تراکم نقاط در بعضی قسمت‌ها توجه مخاطب را به این بخش‌ها در کادر بیشتر جذب کرده و تیرگی و روشنی و حرکت را در این قسمت‌ها به خوبی نشان می‌دهد. بی‌نهایت نقطهٔ مختلف ایجاد تاریکی روشنی می‌کند. بخشی که در آن تراکم نقطه کمتر است
روشنی می‌کند. بخشی که در آن تراکم نقطه کمتر است روشنتر دیده می‌شود و بخشی که در آن تراکم نقطه بیشتر است تیره‌تر دیده می‌شود. تفرق نقاط. از تراکم و تفرق نقاط (انبساط نقاط) می‌توان طرح‌هایی را به وجود آورد. بدین طریق که در میان تعدادی نقطهٔ پراکنده نقاطی را به هم نزدیکتر نمود یا اینکه اندازهٔ نقاطی را نسبت به نقاط اطرافش بزرگتر در نظر گرفت. وجود نوعی ارتباط متقابل در میان آن‌ها برای ایجاد تأثیر مثبت و هماهنگی الزامی است در غیر این صورت عدم ارتباط میان آن‌ها نوعی اغتشاش بصری ایجاد خواهد شد که مانع از
آن‌ها نوعی اغتشاش بصری ایجاد خواهد شد که مانع از تأثیرگذاری متمرکز بر مخاطب می‌شود. تعادل. نقطه ساده‌ترین عنصر بصری است و نخستین و مهم‌ترین کارکرد آن این است که وضع و مکان را در فضا بیان می‌کند. موقعیت نقطه و حتی رنگ آن نیز ازنظر ترکیب در کادر بسیار حائز اهمیت است؛ برای مثال، نقطهٔ زرد به بالای کادر یا تصویر گرایش دارد و نقطهٔ آبی، به‌دلیل سنگینی و خوی آرامشیِ رنگش، به پایین سقوط یا رسوب می‌کند، و چنین است که نقطهٔ سرخ به‌طرف چپ و سبز به‌طرف راست میل می‌کند. تکرار منظم نقاط و ایجاد نقش‌ونگار. اگر گروه‌های
تکرار منظم نقاط و ایجاد نقش‌ونگار. اگر گروه‌های چندتایی از نقاط را به‌عنوان یک واحد منظماً تکرار کنیم و گسترش دهیم، ایجاد نقش خواهد کرد، و این از دیگر کارکردهای نقطه است. ترتیب نقاط: حرکت بصری. از گردهم‌آیی پراکندگی کنارهم‌چیدن، بزرگ و کوچک کردن و دور و نزدیک کردن نقاط می‌توان احساس بصری حرکت (پیچیده، سیال، منقطع، متصل و…) را القا کرد.
در نظریه بهینه‌سازی ریاضیاتی، دوگانگی بدین معنی است که مسائل بهینه‌سازی را می‌توان از هر یک از دو دیدگاه مسئلهٔ اصلی (the primal problem) و مسئلهٔ دوگان (the dual problem) نگریست (اصل دوگانگی). راه حل مسئله ی دوگان کران پایینی برای راه حل مسئلهٔ اصلی (minimization) ارائه می‌کند. هرچند به‌طور معمول دلیلی ندارد که مقادیر بهینهٔ مسائل اصلی و دوگان برابر باشند. به اختلاف این دو شکاف دوگانگی (duality gap) گویند. البته در مسائل بهینه‌سازی محدب (convex optimization problems)، شکاف دوگانگی تحت یک شرط می‌تواند صفر
problems)، شکاف دوگانگی تحت یک شرط می‌تواند صفر باشد؛ بنابراین راه حل مسئلهٔ دوگان کرانی برای مقدار راه حل مسئلهٔ اصلی است؛ وقتی مسئله محدب (convex) است و یک constraint qualification را تأمین می‌کند در این صورت مقدار یک راه حل بهینهٔ مسئلهٔ اصلی توسط مسئلهٔ دوگان داده می‌شود. تاریخچه. به گفتهٔ George Dantzig نظریهٔ دوگانگی برای بهینه‌سازی خطی بلافاصله پس از آنکه Dantzing مسئلهٔ برنامه‌ریزی خطی را ارائه داد، توسط جان فون نویمان، پیش‌بینی شده بود. Von Neumann اشاره کرد که از اطلاعات نظریه بازی‌های خودش
اشاره کرد که از اطلاعات نظریه بازی‌های خودش استفاده کرده‌است و پیش‌بینی کرده که ماتریس مجموع صفر دو نفره معادل با برنامه‌ریزی خطی است. ابتدا در سال ۱۹۴۸ اثبات‌های پیچیده‌ای توسط Albert W. Tucker و گروهش منتشر شد. مسئلهٔ دوگانگی Dual Problem. معمولاً مسئلهٔ دوگانگی اشاره با مسئلهٔ دو گانگی لاگرانژی دارد؛ ولی مسائل دوگانگی دیگری نیز، مانند و مسئله ی دوگانگی Fenchel، مورد استفاده قرار می‌گیرند. مسئلهٔ دوگانگی لاگرانژی با تشکیل لاگرانژین (Lagrangian)، با استفاده از ضرایب نامنفی لاگرانژی، به منظور افزودن قیدها
از ضرایب نامنفی لاگرانژی، به منظور افزودن قیدها به تابع هدف و سپس حل کردن آن برای برخی مقادیر متغیر اصلی که لاگرانژین را کمینه می‌کند، به دست می‌آید. این راه حل متغیرهای اصلی (the primal variables) را به عنوان تابعی از ضرایب لاگرانژ ارائه می‌دهد که به آن‌ها متغیرهای دوگان (dual varibales) می‌گویند؛ بنابراین مسئلهٔ جدید این است که تابع هدف را نسبت به متغیرهای دوگان در شرایط حاصل از متغیزهای دوگان (مثلاً حداقل نامنفی بودن آنها) بیشینه کنیم. معمولاً با داشتن دو زوج دوگانه (dual pairs) از فضاهای محدب محلی مجزا
زوج دوگانه (dual pairs) از فضاهای محدب محلی مجزا (separated locally convex spaces) formula_1 و formula_2 و تابع formula_3 می‌توانیم مسئلهٔ اصلی (primal problem) را به صورت یافتن formula_4 به‌طوری‌که formula_4 برابر formula_6، تعریف کنیم. اگر constraint conditions وجود داشته باشد، امکان اعمال آن‌ها به تابع formula_7 به واسطهٔ قرار دادن formula_8 که در آن formula_9 تابع مشخصه (indicator function) است وجود دارد. آنگاه formula_10 را به عنوان یک تابع اغتشاش (perturbation function) به صورتی که در آن formula_11
function) به صورتی که در آن formula_11 است، در نظر گرفت. شکاف دوگانگی عبارت از اختلاف سمت راست و چپ نامعادلهٔ formula_12 است که در آن مزدوج محدب (convex conjugate) در هر دو متغیر و formula_13 نشانگر سوپریمم (کوچکترین کران بالا) است. شکاف دوگانگی (duality gap). شکاف دوگانگی عبارت از تفاوت بین متغیرهای هر راه حل اصلی و هر راه حل دوگان است. اگر formula_14 مقدار دوگان ی بهینه و formula_15 مقداراصلی ی بهینه باشد، آنگاه شکاف دوگانگی برابر formula_16 است. این مقدار همیشه بزرگتر با مساوی صفر است. شکاف دوگانگی صفر
همیشه بزرگتر با مساوی صفر است. شکاف دوگانگی صفر است اگر و تنها اگر دوگانگی قوی (Strong duality) وجود داشته باشد. در غیر اینصورت شکاف اکیداً مثبت است و دوگانگی ضعیف (weak duality) وجود دارد. در بهینه‌سازی رایانشی (computational) یک شکاف دوگانگی دیگر نیز معمولاً مطرح است که برابر اختلاف مقدار بین هر راه حل دوگان و مقدار یک تکرار (iterate) امکان‌پذیر ولی زیر بهینه (suboptimal) برای مسئلهٔ اصلی می‌باشد. این شکاف دوگانهٔ جایگزین اختلاف بین مقدار یک تکرار امکان‌پذیر، ولی زیر بهینهٔ فعلی برای مسئلهٔ اصلی و مقدار
ولی زیر بهینهٔ فعلی برای مسئلهٔ اصلی و مقدار مسئلهٔ دوگان، را محدود می‌کند؛ مقدار مسئلهٔ دوگان، در شرایطregularity conditions برابر با مقدارconvex relaxation مسئلهٔ اصلی است: Convex relaxation موجب مطرح شدن مطلب ذیل می‌شود: جایگزین کردن یک مجموعهٔ امکان‌پذیر غیر محدب (a non-convex feasible set) با پوش محدب بستهٔ (closed convex hull) آن، و با جایگزین کردن یک تابع غیر محدب با Convex closure آن که تابعی است که این سرلوحه (epigraph) را دارد که عبارت از پوش محدب بستهٔ تابع اصلی هدف اصلی است. مورد خطی the linear
بستهٔ تابع اصلی هدف اصلی است. مورد خطی the linear case. مسائل برنامه‌ریزی خطی، مسائل بهینه‌سازی هستند که در آن‌ها تابع هدف و محدودیت‌ها همگی خطی‌اند. در مسائل اصلی تابع هدف یک ترکیب خطی از "n" متغیر است. در چنین مسائلی "m" محدودیت وجود دارد که هر کدام یک کران بالا بر ترکیب خطی "n" متغیر اعمال می‌کند. مقصود بیشینه کردن مقدار تابع هدف مربوط به محدودیت هاست. یک "راه حل" عبارت است از برداری (یک لیست) از "n" مقدار که مقدار بیشینه برای تابع هدف را حاصل می‌کند. در مسئلهٔ دوگان، تابع هدف یک ترکیب خطی از "m" مقدار
مسئلهٔ دوگان، تابع هدف یک ترکیب خطی از "m" مقدار است که مشخص‌کنندهٔ محدودهٔ "m" محدودیت مسئلهٔ اصلی است. "n" محدودیت دوگان وجود دارند که هر کدام یک کران پایین بر ترکیب خطی "m" متغیر دوگان اعمال می‌کند. رابطهٔ بین مسئلهٔ اصلی و مسئلهٔ دوگان. در حالت خطی در مسئلهٔ اصلی از هر نقطهٔ زیر بهینهٔ که تمام محدودیت‌ها را فراهم می‌کند یک جهت یا زیر فضایی از جهت‌ها برای حرکت وجود دارد که تابع هدف را افزایش می‌دهد. آنچنان که بیان شده‌است حرکت کردن در هر چنین جهتی، تفاوت بین راه حل پیشنهادی و یک یا چند محدودیت را حذف
بین راه حل پیشنهادی و یک یا چند محدودیت را حذف می‌کند. یک "امکان‌ناپذیر" از راه حل پیشنهادی همانی است که از یک یا چند محدودیت فراتر می‌رود. در مسئلهٔ دوگان، بردار دوگان ضرب می‌کند ثابت‌هایی را که موقعیت محدودیت‌ها را در مسئلهٔ اصلی مشخص می‌کنند. تغییر دادن تابع دوگان در مسئلهٔ دوگان معادل با بازبینی کران‌های بالا در مسئلهٔ اصلی است. به این ترتیب کوچکترین کران بالا یافت می‌شود. به این معنا که بردار دوگان کمینه شده تا تفاوت بین مکان پیشنهادی محدودیت‌ها و موقعیت بهینهٔ واقعی از میان بردارد. یک مقدار
و موقعیت بهینهٔ واقعی از میان بردارد. یک مقدار امکان‌ناپذیر از بردار دوگان آنی است که خیلی کم است. چنین مقداری موقعیت‌های پیشنهادی یک یا تعداد بیشتری از محدودیت‌ها را در جاهایی که موقعیت بهینهٔ واقعی را در بر نمی‌گیرد، تعیین می‌کند. این شهود به وسیلهٔ معادلات برنامه‌ریزی خطی: دوگانگی (Linear programming: Duality) به صورت فرمال درآمده‌است. تفسیر اقتصادی. اگر مسئلهٔ اصلی برنامه‌ریزی خطی را به عنوان مسئلهٔ تخصیص منابع کلاسیک در نظر بگیریم، دوگان آن را می‌توان به عنوان مسئلهٔ ارزش‌گذاری منابع در نظر گرفت. حالت
عنوان مسئلهٔ ارزش‌گذاری منابع در نظر گرفت. حالت غیر خطی. در برنامه‌ریزی غیر خطی محدودیت‌ها الزاماً خطی نیستند. با این حال، بسیاری از همان اصول صدق می‌کنند. به منظور کسب اطمینان از اینکه مقدار بیشینهٔ سراسری یک مسئلهٔ غیر خطی می‌تواند به آسانی یافت شود، فرمولاسیون مسئله معمولاً به این نیاز دارد که تابع محدب بوده و مجموعه‌های سطح پایین فشرده داشته باشد. این اهمیت شرایط Karush–Kuhn–Tucker را نشان می‌دهد. این شرایط، شرط‌های ضروری برای یافتن بهینه‌های محلی برای مسائل برنامه‌ریزی غیر خطی را ارائه می‌دهد. همچنین
مسائل برنامه‌ریزی غیر خطی را ارائه می‌دهد. همچنین شرایط اضافه‌ای وجود دارند (constraint qualification) که به منظور امکان‌پذیر شدن تعریف جهتی به سوی راه حل بهینه، ضروری‌اند. یک راه حل بهینه آنی است که یک بهینهٔ محلی است ولی احتمالاً یک بهینهٔ سراسری نیست. اصل قوی لاگرانژی: دوگانگی لاگرانژی. برای یک مسئلهٔ برنامه‌ریزی غیر خطی داده شده با فرم استاندارد با دامنهٔ formula_18 که Interior غیر تهی، دارد، "تابع لاگرانژین" formula_19 به صورت formula_20 تعریف می‌شود. بردارهای formula_21 و formula_22 را "متغیرهای
بردارهای formula_21 و formula_22 را "متغیرهای دوگان" یا "بردارهای ضرایب لاگرانژ" مرتبط با مسئله می‌نامند. "تابع دوگان لاگرانژ" formula_23 به صورت formula_24 زیر تعریف می‌شود. تابع دوگان "g" مقعر است حتی هنگامی که مسئلهٔ آغازین محدب نیست. تابع دوگان کرانهای پایین مقدار بهینهٔ formula_15 مسئلهٔ آغازین را می‌دهد؛ برای formula_26 هر و هر formula_22 داریم: formula_28 اگر یک constraint qualification مثل شرط Slater برقرار باشد و مسئلهٔ اصلی مقعر باشد آنگاه دوگانگی قوی داریم، یعنی formula_29. مسائل محدب. برای یک
قوی داریم، یعنی formula_29. مسائل محدب. برای یک مسئلهٔ کمینه‌سازی محدب با شرایط نامعادلهٔ مسئلهٔ دوگان لاگرانژیformula_31 است که تابع هدف تابع دوگان لاگرانژ است. به شرط این که توابع formula_7 و formula_33 به صورت پیوسته مشتق پذیر باشند، اینفیمم هنگامی که گرادیان برابر صفر باشد رخ می‌دهد. مسئلهٔ formula_34 مسئلهٔ دوگان Wolfe نامیده می‌شود. شاید حل این مسئله با کامپیوتر دشوار باشد، زیرا تابع هدف در متغیرهای مشترک formula_35 مقعر نیست. همچنین شرط تساوی formula_36 معمولاً غیر خطی است، بنابراین مسئلهٔ دوگان
معمولاً غیر خطی است، بنابراین مسئلهٔ دوگان Wolfe به‌طور معمول یک مسئلهٔ بهینه‌سازی غیر مقعر است. در هر صورت دوگانگی ضعیف برقرار است. حل مسئله بهینه‌سازی از طریق دوگان. در حل مسئله بهینه‌سازی به روش معادل سازی، یک مسئله معادل برای مسئله استاندارد تعریف می‌کنیم که پاسخ آن بسیار راحت‌تر از مسئله اولیه به دست می‌آید؛ برای به دست آوردن مسئله معادل روند مشخصی وجود ندارد اما برای برخلاف آن در حل مسئله بهینه‌سازی از طریق دوگان یک روند مشخص برای به دست آوردن مسئله دوگان وجود دارد. برای هر مسئله بهینه‌سازی می‌توان
دوگان وجود دارد. برای هر مسئله بهینه‌سازی می‌توان یک معادل محدب تعریف کرد. . پاسخ این مسئله یک کران پایین روی مسئله اصلی ارائه می‌دهد و در حالت محدب دقیقاً همان جواب است. مسئله اصلی. فرم استاندارد یک مسئله بهینه‌سازی به صورت زیر می‌باشد:formula_37formula_38به این مسئله، مسئله اصلی می‌گویند. متغیر بهینه‌سازی formula_4، را پارامتر اولیه گویند. formula_40 قیود نامساوی می‌باشند. تابع لاگرانژی. تابع لاگرانژی که یک مجموعه وزن دار از تابع هدف و قیود است را بفرم زیر نمایش می‌دهند:formula_41لاگرانژی تابعی از
زیر نمایش می‌دهند:formula_41لاگرانژی تابعی از پارامتر اولیه و یک متغیر اضافه formula_42 می‌باشد که به آن متغیر دوگان گویند. تابع دوگان. با کمک تابع لاگرانژی می‌توان یک تابع جدید (تنها از متغیر دوگان) بنام تابع دوگان ساخت. این تابع را می‌توان بفرم زیر نمایش داد:formula_43g به صورت حداقل نقطه‌ای تعریف می‌شود پس مقعر است. به ازای هرformula_44 داریم:formula_45 . تابع formula_46 کران پایینی از تابع هدف در ناحیه شدنی ارائه می‌دهد را ارائه می‌دهد. در این حالت می‌توان مسئله دوگان را به صورت ضمنی حل کرد. در واقع
مسئله دوگان را به صورت ضمنی حل کرد. در واقع مسئله فوق نامقید، با تابع هدف محدب (از متغیرformula_4) است، بنابراین بهینهٔ سراسری را می‌توان با برابر صفر قرار دادن مشتق تابع هدف نسبت به formula_4 به دست آورد. مسئله دوگان. از آنجا که کران پایین برای هر formula_49 صادق است، باید به دنبال بهترین آن بود، که آن بزرگترین کران پایین است:formula_50به دست آوردن کران پایین از طریق مسئله دوگان ساده‌تر است زیرا محاسبه formula_51 با قیود کمتری همراه است. مسئله پیدا کردن بهترین کران پایین به صورت زیر تعریف
پیدا کردن بهترین کران پایین به صورت زیر تعریف می‌شود:formula_52این مسئله، مسئله دوگان نامیده می‌شود. مقدار بهینه آن formula_14، مقدار بهینه دوگان نام دارد. همان‌طور که در بالا بیان شد، formula_46 مقعر است. این به آن معنی است که مسئله دوگان، که شامل حداکثرسازی formula_46، یک مسئله بهینه‌سازی محدب می‌باشد. مسائل با قیود تساوی. در این حالت یک قید دیگر به صورت formula_56به مسئله اصلی افزوده می‌شود. برای حل آن به روش دوگان، متغیر دوگان formula_57 را تعریف می‌کنند و باکمک آن تابع دوگان را تشکیل می‌دهیم؛ یعنی در
و باکمک آن تابع دوگان را تشکیل می‌دهیم؛ یعنی در تابع دوگان جمله formula_58 افزوده می‌شود. متغیر formula_57 شرط formula_60 را ندارد.
واگذاری یا تفویض در برنامه‌نویسی شیءگرا، به «ارزیابی» یک عضو (ویژگی یا شگرد) از یک شیء (گیرنده) در زمینه شیء اصلی دیگر (فرستنده) گفته می‌شود. واگذاری را می‌توان به صورت صریح انجام داد، در این حالت شیء فرستنده به شیء گیرنده ارسال می‌شود، این موضوع را می‌توان در هر زبان شیءگرا انجام داد؛ یا اینکه واگذاری را به صورت ضمنی انجام داد، این کار از طریق «قواعد جستجوی عضو» در آن زبان انجام می‌شود، که نیاز به پشتیبانی‌هایی توسط آن زبان در آینده دارد. واگذاری ضمنی، شگرد اساسی برای استفاده مجدد از رفتار، در برنامه‌نویسی
اساسی برای استفاده مجدد از رفتار، در برنامه‌نویسی مبتنی بر پیش‌الگو است، و این موضوع مشابه با وراثت در برنامه‌نویسی مبتنی بر کلاس است. معروف‌ترین زبان‌هایی که از واگذاری در سطح زبان پشتیبانی می‌کنند، در درجه اول، زبان سلف است که از مفهوم واگذاری از طریق مفهوم « ی والد » استفاده می‌کند، این اسلات‌ها، بر اساس جستجوی شگرد در «فراخوانی‌های خودی» استفاده می‌شوند، و سپس زبان جاوا اسکریپت است ( را ببینید). نماینده‌ها در سی شارپ در یک نگاه می‌توان گفت نماینده‌ها (Delegates) نوع داده‌ای در دات نت هستند که برای
(Delegates) نوع داده‌ای در دات نت هستند که برای نگهداری آدرس متدها استفاده می‌شوند. اینچنین متصور بشید که یک متغیر از یک نوع داده‌ایِ نماینده (delegate) تعریف می‌کنید، سپس تعدادی متد (هم امضاء با نماینده) را به آن اضافه می‌کنید. سپس با invoke کردن، همه متدها اجرا می‌شوند. " دقت شود که متدها سریال و نه موازی اجرا می‌شوند. معمولاً به ترتیب اضافه کردن. " امضای متد. هر متد دارای یک نوع داده‌ای برگشتی (void راهم یک نوع داده‌ای در نظر بگیرید) و صفر یا چند آرگومان ورودی/خروجی می‌باشد. این دو ویژگی امضای یک متد
ورودی/خروجی می‌باشد. این دو ویژگی امضای یک متد نامیده می‌شود. توجه شود که تعداد آرگومان‌ها، نوع داده‌ای آرگومان‌ها، ورودی یا خروجی بودن آرگومان و جابه جایی موقعیت آرگومان‌ها امضای متد را تغییر می‌دهند. در سی شارپ ما قادر به نوشتن متدهای بی‌نام و نوع‌های داده‌ای نامشخص (ANONYMOUS Types) هستیم. سی شارپ در این زمینه کاملاً قوی عمل می‌کند. تعریف نماینده و ثبت متدها در متغیر نماینده. شیوه تعریف یک نماینده به صورت زیر است: public delegate void MyDelegate(int n); از تعریف بالا متوجه می‌شویم که این نماینده متدهایی
تعریف بالا متوجه می‌شویم که این نماینده متدهایی که امضای آن‌ها شامل: نوع برگشتی void و یک آرگومان ورودی از نوع int باشد را می‌پذیرد. نماینده‌ها یک نوع داده‌ای مستقل هستند یعنی می‌توان آن‌ها را مثل کلاس‌ها و شمارنده مستقیماً در یک فضای نام (namespace) ایجاد کرد و لزومی ندارد که حتماً داخل یک کلاس تعریف شوند. تعریف نماینده در یک فرم ویندوزی namespace Rme_Delegates public delegate void MyDelegate(int n);// تعریف نماینده public partial class Form1: Form private MyDelegate _delVar;// تعریف متغیر از روی نماینده
MyDelegate _delVar;// تعریف متغیر از روی نماینده public Form1() InitializeComponent(); private void MethodXWYZ(int no) this.listBox1.Items.Add("MethodXWYZ: "+no); protected virtual void MethodEXPse(int pwr) this.listBox1.Items.Add("MethodEXPse: " + (pwr * pwr)); }; متغیر خصوصی _delVar در شروع کار مقدار null دارد. متد تعریف شده را با علامت + به _delVar اضافه می‌کنیم: _delVar += new MyDelegate(this.MethodXWYZ); به نحوه اضافه کردن متد به متغیر نماینده توجه کنین!!! فقط نام متد به تنهایی لازم است. کلمه this
کنین!!! فقط نام متد به تنهایی لازم است. کلمه this اختیاری است. و خلاصه تر: روش اول گویا تر است _delVar += this.MethodXWYZ; _delVar += this.MethodEXPse; روش حذف متد نیز استفاده از - (منها) است بدین صورت: _delVar -= this.MethodXWYZ; _delVar -= this.MethodEXPse; در ضمن: اگه نیاز به ثبت فقط یک متد در متغیرنماینده دارید از = (مساوی، انتساب) استفاده کنید: _delVar = this.MethodEXPse; فراخوانی (invoke) متدهای یک متغیر نماینده. قبل از فراخوانی هر متغیر نماینده باید از تهی نبودن آن اطمینان حاصل کنید. این مسئله در
از تهی نبودن آن اطمینان حاصل کنید. این مسئله در برنامه‌های چند نخی خیلی بیشتر مورد نیاز است. فراخوانی یک متغیر نماینده‌ای همانند فراخوانی متد می‌باشد با این تفاوت که این بار پرانتز را جلوی یک متغیر باز می‌کنیم نه یک متد! مثال زیر نحوه فراخوانی را نمایش می‌دهد: if (_delVar != null) _delVar(25); بدین طریق متدهای ثبت شده در متغیر یکی پس از دیگری با مقدار (اینجا ۲۵) اجرا می‌شوند. متدهای بی نام. نحوه اضافه کردن (ثبت کردن) متد به نماینده‌ها در (۲ تعریف نماینده و ثبت متدها در متغیر نماینده) توضیح داد شد. اما در
ثبت متدها در متغیر نماینده) توضیح داد شد. اما در برنامه‌نویسی‌های حرفه‌ای همیشه روال کار بدین صورت نیست. تعریف زیاد متدهای کوچک وقت گیر و باعث پیچیده‌تر شدن کد و در نهایت سردرگمی می‌شود. متدهای بی نام ترفندی است که کامپایلر سی شارپ و نه صرفاً CRL جهت رفع این مشکل به کار می‌برد. این مورد در LINQ بیشتر فواید خود را نشان می‌دهد. در کل زمانی که به متدهای خطی نیاز باشد و آدرس و نام و نشان متد مهم نباشد از متدهای بی نام استفاده می‌شود. متدهای بی نام در دو دسته قرار می‌گیرند: متدهای زیر را در نظر بگیرید: private
می‌گیرند: متدهای زیر را در نظر بگیرید: private static void methodOne() Console.WriteLine("Empty method"); private static void methodTwo(int number) if (number &gt;= ۱۰) Console.WriteLine("Yes"); else Console.WriteLine("No"); private static void methodThree(int number, bool state) if (number &gt;= ۱۰) Console.WriteLine(state ? "Yes": "No"); else Console.WriteLine(state ? "True": "False"); برای هر سه متد نماینده متناسب را تعریف می‌کنیم: internal delegate void DelegateOne(); internal delegate void
void DelegateOne(); internal delegate void DelegateTwo(int n); internal delegate void DelegateThree(int n, bool b); نحوه تعریف متغیرهای نماینده‌ای و ثبت متدها و اجرای آن‌ها بدین صورت است: DelegateOne d1 = Program.methodOne; DelegateTwo d2 = Program.methodTwo; DelegateThree d3 = Program.methodThree; d1(); d2(10); d3(10, true); Console.ReadKey();//pause screen تا به حال روش استاندارد که در بخش قبل توضیح داده شده بود را مرور کردیم. همین کار را با متدهای بی‌نام و با کلمه کلیدی delegate انجام می‌دهیم: تعریف و
و با کلمه کلیدی delegate انجام می‌دهیم: تعریف و استفاده از متدهای بی نام DelegateOne d1 = delegate { Console.WriteLine("Empty method"); }; DelegateTwo d2 = delegate(int number) if (number &gt;= ۱۰) Console.WriteLine("Yes"); else Console.WriteLine("No"); DelegateThree d3 = delegate(int number, bool state) if (number &gt;= ۱۰) Console.WriteLine(state ? "Yes": "No"); else Console.WriteLine(state ? "True": "False"); d1(); d2(10); d3(10, true); Console.ReadKey();//pause screen در اینجا نیازی به تعریف متدها درون
screen در اینجا نیازی به تعریف متدها درون کلاس نیست و به صورت خطی در جلوی نمایندهٔ مربطه تعریف می‌شوند. دقت شود که نوشتن کلمه delegate اجباری است همچنین برای متدهای دارای آرگومان نوشتن نوع آرگومان‌ها اجباری است. عبارت لاندا Lambda Expression. با توجه به تعریف‌ها مثال (متدهای بی‌نام) عبارت لاندا را در مثال اینچنین بیان می‌کنیم: DelegateOne d1 = () =&gt; Console.WriteLine("Empty method"); DelegateTwo d2 = (number) =&gt; if (number &gt;= 10) Console.WriteLine("Yes"); else Console.WriteLine("No");
else Console.WriteLine("No"); DelegateThree d3 = (number, state) =&gt;// first if (number &gt;= 10) Console.WriteLine(state ? "Yes": "No"); else Console.WriteLine(state ? "True": "False"); d3 += (int number, bool state) =&gt;//second if (number &gt;= 10) Console.WriteLine(state ? "Yes": "No"); else Console.WriteLine(state ? "True": "False"); d1(); d2(10); d3(10, false); Console.ReadKey();//pause screen در تعریف عبارت لاندا از کلیدواژه =&gt; استفاده می‌شود. نوشتن نوع آرگومان‌ها اختیاری است. کاربرد
می‌شود. نوشتن نوع آرگومان‌ها اختیاری است. کاربرد نماینده‌ها و رخدادها (events). نماینده‌ها در تعریف رخدادها کاربردی ذاتی دارند. همانگونه که شی گرایی بدون رخدادها بی‌معنی می‌شود. یک رخداد در طول زمان احتمالاً رخ خواهد داد. برای نمایش عکس‌العمل مناسب در هین رخ داد متد/هایی باید ثبت نام کرده باشند. متدهای ثبت نام شده در متغیر نماینده‌ای متناسب با رخداد ذخیره می‌شوند. کد زیر تعریف نماینده و رخداد پایان (Terminate Event) را شرح می‌دهد. internal delegate void DelegateFormEvent(); private static DelegateFormEvent