![]() |
فيلم آموزشي كدهاي الگوريتم بهينه سازي فاخته
با سلام با توجه به تماسها و درخواست هاي مكرر شما عزيزان اقدام به تهيه فيلم توضيحات براي كدهاي الگوريتم بهينه سازي فاخته نموديم. تلاش شده است تا جاي ممكن جزئيات كدنويسي الگوريتم COA در اين فيلمها توضيح داده شود تا ابهامات و سوالات مختلف شما عزيزان در مورد قسمت هاي مختلف اين كدها برطرف شود. فيلم آماده شده در 2 فايل ضبط شده است كه در مجموع 75 دقيقه مي باشد. هر فايل بصورت جداگانه فشرده شده و به چند قسمت 10 مگابايتي تقسيم شده است تا دانلود آنها راحتتر باشد. براي بازكردن و مشاهده ي هركدام از فيلمهاي شماره 1 و 2، لازم است شما تمام قسمتهاي آن فيلم را دانلود كرده و در فولدري كنار هم قرار دهيد. سپس كافيست فقط يكي از قسمت هاي دانلود شده از هر فيلم را كليك راست كرده و با برنامه WinRAR آنرا از حالت فشرده خارج كنيد. فيلم مورد نظر براحتي باز شده و قابل مشاهده مي باشد. براي هر دو فيلم همين روال را جهت مشاهده فيلم انجام دهيد. لينك دانلود فايلها بصورت يكپارچه: ------------------------------------------------------------------------------ فيلم 1: https://telegram.me/cuckoo_optimization_algorithm حجم فايل: 40 مگابايت فيلم 2: https://telegram.me/cuckoo_optimization_algorithm حجم فايل: 42 مگابايت ----------------------------------------------------------------------------- لينك هاي كمكي: فيلم 1: https://telegram.me/cuckoo_optimization_algorithm حجم فايل: 40 مگابايت فيلم 2: https://telegram.me/cuckoo_optimization_algorithm حجم فايل: 42 مگابايت ------------------------------------------------------------------------------ با توجه به ناپايداري و قطع و وصل هاي مكرر ديتابيس اين سايت، تصميم بر آن شد تا يك كانال تلگرامي، مخصوص الگوريتم COA را براي مواقع ضروري آماده به كار نگه داريم. تا مطالب جديد و بروز را هميشه در جيب خود به همراه داشته باشيد. مطالب اين سايت و كانال تلگرام همزمان آپديت خواهند شد و انتخاب مراجعه به هر مسير ارتباطي با شما عزيزان خواهد بود. آدرس كانال بصورت زير ميباشد. در صورت تمايل ميتوانيد اين كانال را Add كنيد. آدرس كانال: با سپاس رامين رجبيون |
سلام آقای رجبیون در الگوریتم شما با چه مکانیزمی به بحث exploration پرداخته میشود ؟ متشکرم
|
ببينيد در الگوريتم بهينه سازي فاخته پارامتر مشخصي براي exploration يا exploitation نداريم كه بگيم مثلا كار فلان پارامتر فقط exploration هست. پارامترهايي كه در اينجا تعريف ميشن بصورت ضمني كار مي كنن. يعني هر كدوم چندين كار رو بصورت همزمان انجام ميدن و همين مساله باعث ايجاد سرعت و دقت بالاي كار الگوريتم COA ميشه.
براي مثال تخم گذاري هم كار exploration داره هم به ما كمك ميكنه محيط رو بصورت local جستجو كنيم و هم باعث ميشه بتونيم از local optimum ها فرار كنيم. چون جمعيت جديد تخم ها به نحو خاصي، در اطراف فاخته مادر قرار ميگيره ميتونه همه اينكارها رو انجام بده. يا خود بحث مهاجرت ميتونه جستجو و همگرايي رو همزمان به عهده بگيره. براي مشاهده برتري خاص اين عملگر ها و نحوه تعريف اونها اين پست رو از سايت اصلي مشاهده كنيد. . . . |
سلام جناب مهندس رجبیون
با تشکر از این همه زحمتی که در رابطه با الگوریتم فاخته کشیدید من از کدهای شما در بهینه سازی یک شبکه برق جهت کاهش تلفات استفاده کردم و در تابع کاست فانکشن اون یکه پخش بار شبکه برق قرار دادم بعبارتی خروجی برنامه فاخته به تابع کاست فانکشن رفته و پس از پخش بار شبکه ، خروجی کاست فاکنشن به برنامه بهینه سازی میرود واین پروسه اینقدر ادامه پیدا میکنه که تلفات شبکه به کمترین میزان برسه مشکلی که بنده در این فرایند دارم اینه که خروجی برنامه بهینه سازی که دو سطری هستش cuckooPop{cuckooNumber}.profitValues = -feval(powerDGFunction,[cuckooPop{cuckooNumber}.center ; cuckooPop{cuckooNumber}.newPosition4Egg]) مربوط به موقعیت تخمها و فاختها میباشد و موجب دو سطری شدن خروجی میگردد در حالیکه وردی کاست فانکشن برنامه پخش بار باید یک سطری باشد در صورت امکان لطف بفرمایید و ایمیلتون رو اعلام کنید که کدها رو براتون ارسال کنم و به بنده حقیر هم مثل سایرین کمک بفرمایید با تشکر از لطف شما |
نقل قول:
با سلام ببينيد شما در تابع هزينه اي كه براي coa مينويسيد بايد جوري كدنويسي كنيد كه برنامه تون قادر باشه يك ماتريس جمعيتي از فاخته ها رو دريافت كنه و به ازاي هر سطر اون ماتريس جمعيتي يك كاست حساب كرده و برگست بده. يعني اگر ماتريس ورودي شما n سطر داشته باشه، خروجي تايع هزينه شما هم، برداري با n سطر خواهد بود. |
سلام به همگی
لینک ها خرابن لطفا اصلاح کنید با تشکر |
الگوریتم فاخته
با عرض سلام وخسته نباشید مشکل من در کدهای اصلی الگوریتم فاخته است اگه میشه فایلشو
واسه دانلود بزارین خیلی گیرشم خیلی متشکرم (کدهای اصلی) |
نقل قول:
فايل هاي برنامه در سايت مرجع الگوريتم بهينه سازي فاخته قرار داده شده. ميتونيد از اونجا دانلود كنيد. |
با سلام
در کدهای برنامه شما ابتدا برای هر فاخته یک شعاع تخم گذاری تعیین می کنید. بعد در درون این شعاع به تعداد تخم هایی که هر فاخته قرار است بگذارد تعدادی شعاع کوچکتر تعیین می کنید که تخم ها را در شعاع بزرگتر به صورت پراکنده بگذارد. و برای این که در همه آن فضا تخم گذاری پخش شود به جای این که تصادفی تخم گذاری انجام شود برنامه را وادار می کنید که تخم ها را به طور یکسان پخش کند. سوال من از همین جا آغاز می شود. چرا برای این کار این همه پیچیده و از طریق زاویه و سینوس و کسینوس کار کرده اید؟ فرض کنید مسئله من 10 تا پارامتر دارد. خوب هر پارامتر مثلا پارامتر اول در یک بازه می تواند مقدار بگیرد. وقتی که تخم گذاری انجام می شود یا یک عدد به مقدار قبلی اضافه می شود و یا یک عدد از آن کم می شود که مقدار آن پارامتر برای تخم جدید مشخص شود. خوب این اضافه و کم شدن یک عدد به یکی از پارامتر ها یک کار دو بعدی نیست. لازم نبود که بیاییدبازه 0 تا 2*pi را به تعداد تخم ها به میزان مساوی تقسیم کنید و بقیه ماجرا را انجام دهید. چرا کار زیر را انجام ندادید: 1- ابتدا مثل کد های شما با دستورات زیر برای هر فاخته یک شعاع در نظر می گیریم: for cuckooNumber = 1:numCuckooS cuckooPop{cuckooNumber}.eggLayingRadius = cuckooPop{cuckooNumber}.numberOfEggs/summ * ( radiusCoeff * (varHi-varLo) );i end ببخشید که بهم میریزد 2- در مرحله دوم ما به جای کار شما برای تعیین شعاع های کچکتر از روش زیر استفاده می کنیم: for cuckooNumber = 1:numCuckooS cuckooPop{cuckooNumber}.eggLayingRadiuses = linspace( - cuckooPop{cuckooNumber}.eggLayingRadius , cuckooPop{cuckooNumber}.eggLayingRadius , cuckooPop{cuckooNumber}.numberOfEggs);i end در این مرحله من به جای روش شما امده ام بازه منفی R تا مثبت R را به تعداد تخم ها به قسمت مساوی تقسیم کرده ام. همین شعاع ها را به عنوان شعاع تخم گذاری در نظر می گیریم. 3- for cuckooNumber = 1:numCuckooS params = cuckooPop{cuckooNumber}.center; % get center values tmpRadiuses = cuckooPop{cuckooNumber}.eggLayingRadiuses;i numRadiuses = numel(tmpRadiuses);i newParams = [];i for cnt = 1:numRadiuses newParams = [newParams; params + tmpRadiuses(cnt)];i end % check for variable limits newParams(newParams>varHi) = varHi;i newParams(newParams<varLo) = varLo;i cuckooPop{cuckooNumber}.newPosition4Egg = newParams;i end |
سوال بعدی من در باره این دستور است:
currentMaxProfit = -feval(costFunction,currentBestCuckoo);i مقداز مورد نیاز شما قبلاً حساب نشده که برنامه مجبور نباشد یک بار دیگر بهترین فاخته را به تابع هزینه بفرستد؟ این خودش خیلی وقت گیر است. مخصوصا در برنامه من که در تابع هزینه خودش یک بهینه سازی دیگری انجام می شود. هر چه کمتر تابع هزینه فراخوانی شود بهتر است. دو جای دیگر هم فراخوانی شده در انتهای حلقه که اگر مقادیرشان موجود است بشود حفظشان کرد و دوباره هزینه اش محاسبه نشود بهتر است. |
خب الان با اين تغيير چه نتايجي گرفتيد؟ نتايج براي همه مسائل بهتر شده يا برابري ميكنه؟
|
نقل قول:
یه سوال دیگه هم پرسیده بودم. که آیا امکانش هست تعداد فراخوانی تابع هزینه را کمتر کرد؟ اونجا که کوکوهای تکراری رو حذف می کنیم چقدر ضروری است؟ البته در برنامه من که تابع هزینه زمانبری دارد طبیعتا سودش این است که تابع هزینه کمتر فراخوانی می شود ولی در برنامه هایی که تابع هزینه اش زمانبر نیست آیا جستجوی کوکوی تکراری در هر تکرار چقدر ضروری است؟ |
قطعا ميشه تعداد فراخواني ها رو كمتر كرد. فقط نياز هست برنامه بازنويسي بشه تا بعضي جاها دوباره فراخواني صورت نگيره.
در مورد جستجوي كوكوي تكراري يكي از علت هاي جستجوي همين است كه فراخواني تكراري تابع هدف صورت نگيرد. وقتي دو كوكو در يك موقعيت هستند چرا تابع هزينه رو دوبار فراخواني كنيم؟ البته علت اصلي اين كار مدلساري واقعي زندگي كوكوهاست. اولين و پايه اي ترين كار الهام گيري صحيح از كوكوها بايد باشه. ولي در مرحله بعد جستجوي كوكوي تكراري ميتونه از فراخواني چندين باره تابع هدف براي كوكوي يكسان جلوگيري كنه. |
سلام خدمت آقای رجبیون
من میخواستم تو پایان نامه م برای حل مسئله عددصحیح مختلط از الگوریتم شما استفاده کنم بعدش ایشالا کارمو مقاله کنم کارایی این الگوریت تو حل مسائل عددصحیح مختلط چقده؟ میخواستم بدونم استفاده از یک الگوریتم جدید برای اولین بار تو ادبیات یک موضوع نوآوری حساب میشه؟ یا باید این الگوریتم و با الگوریتم هایی مثل پرندگان مقایسه کنم ممنون میشم راهنماییم کنید |
نقل قول:
در مورد كارايي فكر نكنم كم باشه. در باره ي مقايسه هم بهتره با الگوريتم هاي مشابه مقايسه كنيد. مثل PSO، GA و .... با تشكر |
سلام
هر کاری میکنم دانلود نمی شه بعد کدی می خوام که یه مساله حل شده باشه با الگوریتم فاخته شما می تونید رو سایت قرار بدید ؟ |
نقل قول:
|
سلام میشه درباره نحوه تنظیم درایه های ماتریس q و r در lqr در متلب توضیح بدید؟میخوام یک تابع هزینه مربعی را بهینه نمایم؟
|
با سلام
تشکر میکنم درباره مطالب زیبا و آموزنده شما .... در مورد بهینه سازی شبکه عصبی با الگوریتم فاخته کد و یا مطالبی دارید؟ من در نظر دارم بهینه سازی وزن ها و بایاس های شبکه عصبی (mlp) رو با با دو روش الگوریتم فاخته و الگوریتم رقابت استعماری مقایسه کنم ممنون میشم در این مورد توضیح بدید با تشکر |
سلام
لینک دانلود کدهای الگوریتم فاخته که مربوط به سایت coasite.info است غیرفعاله!! و نمیشه دانلود کرد لینک ها رو!! خواهشا اگه کسی از دوستان کد این الگوریتم رو داره ، آپلود کنه! خیلی خیلی سپاس |
نقل قول:
دو سري لينك در پست اول هست كه هيچ كدوم مربوط به coasite.info نيست. هر دوتا هم قابل دانلود هست. ميتونيد از همون لينكها فيلم رو دانلود كنيد. |
من هم به کد بهینه سازی فاخته نیاز دارم
کجای پست اول هست که پیداش نمی کنیم؟!! لطفا هر کس کدش رو داره لینک دانلود بذاره ممنون |
لطفا تاپيك ها رو بررسي كنيد! اين تاپيك و پست اول براي فيلم هاي آموزشيه. كدهاي الگوريتم در پست ديگه اي هست.
|
سلام دوستان من برای پروژه درس روش های فراابتکاری باید مسئله ای رو این الگوریتم کد کنم ، به کجا می تونم سفارش بدم این کار رو انجام بده؟
|
نقل قول:
آدرس ايميل در زير (قسمت امضا) هست. ميتونيد از اون استفاده كنيد تا فايلهاتون بررسي بشه كه كارتون در چه حدي هست و در مورد انجامش راهنمايي بشه. با تشكر |
xxxxxxx
حل شد :) |
با سلام و عرض خسته نباشید خدمت آقای رجبیون
بنده از الگوریتم جستجوی فاخته در بهینه سازی قابلیت اطمینان استفاده می کنم. متغیرهای تصمیم مسئله بنده تعداد اجزای هر زیرسیستم(عدد صحیح و کمتر از 10) و قابلیت اطمینان هر زیرسیستم(عددی بین 0و1) می باشد. اما در حین اجرا خطا دارم ضمن اینکه محدودیت های مسئله هم از نوع غیرخطی عددمختلط هستند. امکانش هست که تابع هزینه ی مربوط به محدودیت ها رو اشتباه نوشته باشم؟ با تشکر |
Coa
با سلام خدمت آقای رجبیون
به منظور حل مسائل ماکزیمم سازی با الگوریتم فاخته کدام قسمت های برنامه را باید اصلاح کرد؟؟؟ |
نقل قول:
يعني اين خط رو انتهاي برنامه تابع هزينه خودتون اضافه كنيد: cost = 1/cost يا اينكه يك علامت منفي كنار تابع هزينه قرار بديد. مثلا آخر تابع هزينه بنويسيد: cost = -cost |
زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۰۸:۲۹ قبل از ظهر ميباشد. |
Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.