Artificial Intelligence - هوش مصنوعی  
انجمن را در گوگل محبوب کنيد :

بازگشت   Artificial Intelligence - هوش مصنوعی > محاسبات نرم > الگوریتم ژنتیک(Genetic Algorithm)


 
تبليغات سايت
Iranian Association for the Advancement of Artificial Intelligence
ارسال تاپيک جديد  پاسخ
 
LinkBack ابزارهاي تاپيک نحوه نمايش
قديمي ۱۱-۳۰-۱۳۹۱, ۱۰:۱۳ قبل از ظهر   #1 (لینک دائم)
عضو جدید
 
آواتار moosavimaleki
 
تاريخ عضويت: بهمن ۱۳۹۱
پست ها: 6
تشكرها: 8
0 تشكر در 0 پست
پيش فرض روش های جدید جهش و کراس اور ؟

سلام

من برای پروژه ام برنامه ای نوشتم که برای انتخاب از چرخه ی رولت ، برای کراس اور به صورت رندم چند نقطه رو انتخاب میکنه و جابه جا میکنه و برای جهش به صورت رندم چند ژن رو تغییر میده

اما استادمون گفتن این روش های پایه هست و این پروژه قبول نیست!

دنبال روش های جدید در میوتیشن وکراس اور باش

می خواستم ببینم روش های نوین در این زمینه ها برای بهینه سازی بهتر چیه
moosavimaleki آفلاين است   پاسخ با نقل قول

  #ADS
نشان دهنده تبلیغات
تبليغگر
 
 
 
تاريخ عضويت: -
محل سكونت: -
سن: 2010
پست ها: -
 

نشان دهنده تبلیغات is online  
قديمي ۱۱-۳۰-۱۳۹۱, ۱۰:۴۶ قبل از ظهر   #2 (لینک دائم)
Super Moderator
 
آواتار raha_hakhamanesh
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: دنیا
پست ها: 281
تشكرها: 28
253 تشكر در 147 پست
My Mood: Zodranj
پيش فرض

با سلام
البته این جالبه که ایشان خواستند روش جدید ارائه کنید! باید در نظر داشت وظیفه این عملگرها، هدفی است که باید انجام دهند به هر حال شاید منظور ایشان این بوده است که مطالعه ای بر مقالات جدید داشته باشید. بعبارت دیگر مثلا همه روش های جهش برای جلوگیری از به دام افتادن در یک بهینه لوکال است حالا فرق زیادی نمی کند چه متدی باشد البته این را هم اضافه می کنم همین مسائل که بنده خدمتتان عرض می کنم چندان فرق نمی کنند بصورت حرفه ای دارای ریزه کاریهایی هستند مثلا ساختار مسئله شما در تعیین نحوه انتخاب این عملگرها تاثیر گذارند.
همچنین اخیرا روش هایی که از ترکیب سیستمهای آشوبناک با الگوریتم ژنتیک ارائه شده اند مقایسه هایی را با روش های پایه ای الگوریتم ژنتیک انجام داده اند که نشان می دهد کیاس + الگوریتم ژنتیک بهتر از الگوریتم ژنتیک پایه است.

برای مطالعه مقالاتی در این خصوص از لینک های امضاء من استفاده کنید
__________________
.
.
.
برای تشکر دکمه مخصوص وجود دارد لطفا پست هرز ایجاد نکنید
.
.
اینقدر از دسترسی نداشتن به مقاله شیون نکنید

مقالات انگلیسی: ایران سای (ISI, IEEE, ACM)
مقالات فارسی: سیویلیکا (کنفرانس داخلی)
مقالات فارسی: مگ ایران (ژورنالهای داخلی)
raha_hakhamanesh آفلاين است   پاسخ با نقل قول
از raha_hakhamanesh تشكر كرده اند:
ehsan_teimouri (۱۱-۳۰-۱۳۹۱), moosavimaleki (۱۲-۱-۱۳۹۱)
قديمي ۱۱-۳۰-۱۳۹۱, ۰۹:۵۰ بعد از ظهر   #3 (لینک دائم)
عضو جدید
 
آواتار moosavimaleki
 
تاريخ عضويت: بهمن ۱۳۹۱
پست ها: 6
تشكرها: 8
0 تشكر در 0 پست
پيش فرض

ممنون از پاسخت

این که گفتید جهش برای جلوگیری از به دام افتادن در یک بهینه لوکال است خیلی برام مفید بود !

من خیلی وقت زیادی ندارم که بخوام مباحث دیگه ای هم یاد بگیرم و ترکیبش کنم، برای ترکیب تنها چیزی که به ذهنم میرسید ترکیب منطق فازی با الگوریتم ژنتیکی بود که نمی دونم چه جور پیاده سازیش باید کرد ، یعنی کجا ازش استفاده بشه
اما خیلی اصرار داشت به صورت رندم نقطه ای برای کراس اور یا برای جهش انتخاب نشه و جوری باشه که کمک به بهینه شدن بکنه، سایت های داخل امضاتون که پولکی بودن اگه اسم متد های جالبی رو میدونید بگید خودم میرم پیدا شون میکنم
moosavimaleki آفلاين است   پاسخ با نقل قول
قديمي ۱۱-۳۰-۱۳۹۱, ۱۱:۳۵ بعد از ظهر   #4 (لینک دائم)
عضو فوق فعال
 
آواتار mahdi053
 
تاريخ عضويت: بهمن ۱۳۹۰
پست ها: 38
تشكرها: 9
13 تشكر در 13 پست
پيش فرض

سلام
شما می تونی از شبیه سازی هم تو بخش Crossover استفاده کنی، تو این زمینه مقاله هم وجود داره، البته برای راهنمایی می تونی بری پیش آقای دکتر پرهام عظیمی و ازشون کمک بگیری.
ضمنا بحث فازی رو نمی شه همیشه مد نظر قرار داد، بخصوص در مورد عملگرها، در واقع فازی بحث دیتا ها رو داره تا عملگرها.
البته میتونی برای بهبود جوابها از همه روشهای Crossover استفاده کنی (براساس یک عدد تصادفی). در مورد چرخ رولت از تورنامنت هم می شه استفاده کرد که بنظرم خوبه ولی کلاسیکه.
مورد خیلی خیلی مهم تو این عملگرها اینه که شما طوری اونها رو بنویسی که بتونن الگوریتم رو در زمانی منطقی به جوابی منطقی برسونن و این یعنی اینکه خیلی زود یا خیلی دیر همگرا نشن، چون در اون صورت شما باز هم بهینگی محلی دارید.
اگر تو ScienceDirect.com | Search through over 11 million science, health, medical journal full text articles and books. مقاله ای بود که لازم داشتی، لینک صفحه اش رو برام میل کن و من خودش رو برات ارسال می کنم.
mahdi053 آفلاين است   پاسخ با نقل قول
از mahdi053 تشكر كرده است:
moosavimaleki (۱۲-۱-۱۳۹۱)
قديمي ۱۲-۱-۱۳۹۱, ۰۷:۲۷ قبل از ظهر   #5 (لینک دائم)
عضو جدید
 
آواتار moosavimaleki
 
تاريخ عضويت: بهمن ۱۳۹۱
پست ها: 6
تشكرها: 8
0 تشكر در 0 پست
پيش فرض

الان به نظر شما این کار من درسته یا نه ، روش جدید محسوب میشه یا نه (!)

جهش در الگوریتم ژنتیک برای این استفاده میشه که در یک مینیمم لوکال گیر نیوفتیم
(یعنی در واقع با اینکه الان همه ی انسان ها از وضعیت خودشون راضی هستند ، اما شاید یک جهش باعث شه انسان ها قابلیت پرواز داشته باشند و نسل هایی از این دسته انسان ها هزینه ی کم تری دارند..یعنی از مینیمم لوکال رها شدیم...)

پس روشی که میشه برای این مورد پیاده کرد:
1-درصدی از جمعیت برای جهش انتخاب میکنیم
2-dna هر فرد رو چند مرتبه (مثلا مرتبه10) از 1 درصد تا 100 درصد دچار تغییر (جهش) میکنیم
3-از بین dna های جدید کم هزینه ترین رو انتخاب میکنیم شاید به انسان پرنده رسیده باشیم! و هرگز در مینیمم لوکال گیر نمی کنیم
moosavimaleki آفلاين است   پاسخ با نقل قول
قديمي ۱۲-۱-۱۳۹۱, ۱۲:۴۸ بعد از ظهر   #6 (لینک دائم)
Super Moderator
 
آواتار raha_hakhamanesh
 
تاريخ عضويت: خرداد ۱۳۸۷
محل سكونت: دنیا
پست ها: 281
تشكرها: 28
253 تشكر در 147 پست
My Mood: Zodranj
پيش فرض

با سلام

1- چرا درصدی از جمعیت؟ در جهش هیچ تمایزی برای هیچ نسلی قائل نمیشیم (مثال: حتی کودک فقیر باید بتواند به ثروت برسد)

2- چرا چند مرتبه؟

3- اگر هدف جستجوی کمینه باشد بله

بطور کلی:
طی فرآیند جهش این قابلیت را به تمام نسل ها میدهیم تا به شایستگی بیشتر دست یابند (نکته1) همچنین باید توجه داشته باشیم اگر چه ظاهرا جهش خوب است (نکته2) ولی اجازه نداریم مقدار آن را زیاد در نظر بگیریم (معمولا 1% در نظر گرفته می شود)؛ یعنی چی؟ یعنی فرض کنیم در یک مرحله از الگوریتم ژنتیک 20نسل داریم، برای تک تک نسل ها به ازای هز ژن یک عدد تصادفی تولید کنید در بازه 0 تا 100، اگر عدد مذکور 1 یا کمتر بود آنوقت جهش بر روی آن ژن اعمال شود. مسلما توقع داریم اگر 100 ژن داشته باشیم یکی از آنها تغییر کند منتهی توجه کنید توقع داریم! یعنی می تواند هیچ ژنی تغییر نکند و می تواند چند ژن تغییر کنند این ندیگر بستگی به عدد تصادفی دارد.

نکته 1: ممکن است برخی نمونه ها شایسنگی کمتر کسب کنند
نکته 2: اگر مقدار جهش زیاد باشد ممکن است اتفاق های بدی رخ دهد یعنی مثلا فرض کنید طی Crossover های بسیار خوب در حال بالارفتن از یک قله هستیم (تابع هدف) دقیقا زمانیکه نزدیکیهای قله می شویم ناگهان بر اثر یکی از جهش ها (که احتمال رخدادش زیاد شده) به یک قله نه چندان مطلوب دیگر انتقال یابیم در اینصورت است که برنامه دچار کوبیدگی می شود و زمان خاتمه بشدت افزایش می یاید.


من فکر کنم منظور استادتان استفاده از اپراتورهای بشکل ماسک است! اگر ایشان در پردازش تصویر هم دستی داشته باشد معمولا از Crossover, Mutation های بشکل ماسک نیز استفاده می شود.

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

مقالات انگلیسی: ایران سای (ISI, IEEE, ACM)
مقالات فارسی: سیویلیکا (کنفرانس داخلی)
مقالات فارسی: مگ ایران (ژورنالهای داخلی)
raha_hakhamanesh آفلاين است   پاسخ با نقل قول
از raha_hakhamanesh تشكر كرده است:
moosavimaleki (۱۲-۱-۱۳۹۱)
قديمي ۱۲-۱-۱۳۹۱, ۰۵:۲۳ بعد از ظهر   #7 (لینک دائم)
عضو فوق فعال
 
آواتار mahdi053
 
تاريخ عضويت: بهمن ۱۳۹۰
پست ها: 38
تشكرها: 9
13 تشكر در 13 پست
پيش فرض

درواقع جهش تنها عامل بهینگی محلی نیست، هر سه اپراتور تو این مورد سهم دارند اما این سهم اگر خیلی زیاد یا خیلی کم باشه هم تاثیر منفی داره.
جهش باعث میشه شما فضای بیشتری رو از فضای حل جستجو کنید و این در حالی هست که crossover در فضایی که توش هستید کار می کنه و البته نخبه گرایی (اپراتور سوم) هم همینکار رو در کل فضای جستجو شده تا حال، اما اینکه شما چند مرتبه یک کرومزوم رو بردارید و ژنهاش رو دستکاری کنید نوآوری نیست، مثل اینه که شما تو Crossover بجای تک نقطه از چند نقطه استفاده کنید.
می تونید یه نگاهی بیندازید به سایت متلب سایت و تو اون از عنوانهای مطالب ایده بگیرید، مثلا تلفیق زنتیک و عصبی و ... اینهم می تونه کمک کنه.
بنظرم اینها رو لیست کن و به استاد نشان بده و نظرش رو بپرس تا وقتی یکی رو انتخاب کرد اونوقت بیشتر می شه روش مانور داد.
mahdi053 آفلاين است   پاسخ با نقل قول
از mahdi053 تشكر كرده است:
moosavimaleki (۱۲-۱-۱۳۹۱)
قديمي ۱۲-۱-۱۳۹۱, ۱۰:۱۵ بعد از ظهر   #8 (لینک دائم)
عضو جدید
 
آواتار moosavimaleki
 
تاريخ عضويت: بهمن ۱۳۹۱
پست ها: 6
تشكرها: 8
0 تشكر در 0 پست
پيش فرض

نقل قول:
نوشته اصلي بوسيله raha_hakhamanesh نمايش پست
با سلام

1- چرا درصدی از جمعیت؟ در جهش هیچ تمایزی برای هیچ نسلی قائل نمیشیم (مثال: حتی کودک فقیر باید بتواند به ثروت برسد)

2- چرا چند مرتبه؟

3- اگر هدف جستجوی کمینه باشد بله

بطور کلی:
طی فرآیند جهش این قابلیت را به تمام نسل ها میدهیم تا به شایستگی بیشتر دست یابند (نکته1) همچنین باید توجه داشته باشیم اگر چه ظاهرا جهش خوب است (نکته2) ولی اجازه نداریم مقدار آن را زیاد در نظر بگیریم (معمولا 1% در نظر گرفته می شود)؛ یعنی چی؟ یعنی فرض کنیم در یک مرحله از الگوریتم ژنتیک 20نسل داریم، برای تک تک نسل ها به ازای هز ژن یک عدد تصادفی تولید کنید در بازه 0 تا 100، اگر عدد مذکور 1 یا کمتر بود آنوقت جهش بر روی آن ژن اعمال شود. مسلما توقع داریم اگر 100 ژن داشته باشیم یکی از آنها تغییر کند منتهی توجه کنید توقع داریم! یعنی می تواند هیچ ژنی تغییر نکند و می تواند چند ژن تغییر کنند این ندیگر بستگی به عدد تصادفی دارد.

نکته 1: ممکن است برخی نمونه ها شایسنگی کمتر کسب کنند
نکته 2: اگر مقدار جهش زیاد باشد ممکن است اتفاق های بدی رخ دهد یعنی مثلا فرض کنید طی crossover های بسیار خوب در حال بالارفتن از یک قله هستیم (تابع هدف) دقیقا زمانیکه نزدیکیهای قله می شویم ناگهان بر اثر یکی از جهش ها (که احتمال رخدادش زیاد شده) به یک قله نه چندان مطلوب دیگر انتقال یابیم در اینصورت است که برنامه دچار کوبیدگی می شود و زمان خاتمه بشدت افزایش می یاید.


من فکر کنم منظور استادتان استفاده از اپراتورهای بشکل ماسک است! اگر ایشان در پردازش تصویر هم دستی داشته باشد معمولا از crossover, mutation های بشکل ماسک نیز استفاده می شود.

موفق باشید
چون هدفم فرار از مینیمم لوکال هست! شاید یک جهش باعث نشه من از این لوکال خارج شم! چند جهش روی dna انجام میدم و هر کدوم کم هزینه تر بود بر میگزینم! احتمال اینکه از لوکال فرار کرده باشیم بیشتر میشه دیگه! یعنی اگه کلا 10 تا ژن داشته باشم یه بار 10 % بار دیگه 20 % و.... در نهایت 100% ژن رو جهش میدم.... هر کدوم کم هزینه تر شد انتخابش می کنم به عنوان فرزند...
یعنی اگر خدا به سبک من عمل میکرد شاید الان انسان پرنده هم وجود داشت و از این مینیمم لوکال در رفته بودیم!


تا ماسک رو هم قبول نداشت! یعنی گفت سینگل پوینت هم بکنی قبول هست ولی رندم نقطه رو انتخاب نکن ! بررسی کن یه نقطه خوب برای سینگل پوینت انتخاب کن! یا اگه با احتمال اون نقطه رو انتخاب میکنه توزیع یکنواخت نباشه و دلیل داشته باش...

می خواستم ببینم روش های جدید چی هست همینجوری ازشون استفاده کنم دهن پر کن باشه...

نقل قول:
نوشته اصلي بوسيله mahdi053 نمايش پست
درواقع جهش تنها عامل بهینگی محلی نیست، هر سه اپراتور تو این مورد سهم دارند اما این سهم اگر خیلی زیاد یا خیلی کم باشه هم تاثیر منفی داره.
جهش باعث میشه شما فضای بیشتری رو از فضای حل جستجو کنید و این در حالی هست که crossover در فضایی که توش هستید کار می کنه و البته نخبه گرایی (اپراتور سوم) هم همینکار رو در کل فضای جستجو شده تا حال، اما اینکه شما چند مرتبه یک کرومزوم رو بردارید و ژنهاش رو دستکاری کنید نوآوری نیست، مثل اینه که شما تو Crossover بجای تک نقطه از چند نقطه استفاده کنید.
می تونید یه نگاهی بیندازید به سایت متلب سایت و تو اون از عنوانهای مطالب ایده بگیرید، مثلا تلفیق زنتیک و عصبی و ... اینهم می تونه کمک کنه.
بنظرم اینها رو لیست کن و به استاد نشان بده و نظرش رو بپرس تا وقتی یکی رو انتخاب کرد اونوقت بیشتر می شه روش مانور داد.
من وقتش رو بهم نداده که بتونم برم عصبی رو یاد بگیرم! یه خورده فازی بلدم اگه یمشد با اون تنظیم کنم خوب بود!
moosavimaleki آفلاين است   پاسخ با نقل قول
قديمي ۱۲-۱-۱۳۹۱, ۱۰:۵۷ بعد از ظهر   #9 (لینک دائم)
عضو فوق فعال
 
آواتار mahdi053
 
تاريخ عضويت: بهمن ۱۳۹۰
پست ها: 38
تشكرها: 9
13 تشكر در 13 پست
پيش فرض

نقل قول:
نوشته اصلي بوسيله moosavimaleki نمايش پست
چون هدفم فرار از مینیمم لوکال هست! شاید یک جهش باعث نشه من از این لوکال خارج شم! چند جهش روی dna انجام میدم و هر کدوم کم هزینه تر بود بر میگزینم! احتمال اینکه از لوکال فرار کرده باشیم بیشتر میشه دیگه! یعنی اگه کلا 10 تا ژن داشته باشم یه بار 10 % بار دیگه 20 % و.... در نهایت 100% ژن رو جهش میدم.... هر کدوم کم هزینه تر شد انتخابش می کنم به عنوان فرزند...
یعنی اگر خدا به سبک من عمل میکرد شاید الان انسان پرنده هم وجود داشت و از این مینیمم لوکال در رفته بودیم!


تا ماسک رو هم قبول نداشت! یعنی گفت سینگل پوینت هم بکنی قبول هست ولی رندم نقطه رو انتخاب نکن ! بررسی کن یه نقطه خوب برای سینگل پوینت انتخاب کن! یا اگه با احتمال اون نقطه رو انتخاب میکنه توزیع یکنواخت نباشه و دلیل داشته باش...

می خواستم ببینم روش های جدید چی هست همینجوری ازشون استفاده کنم دهن پر کن باشه...

من وقتش رو بهم نداده که بتونم برم عصبی رو یاد بگیرم! یه خورده فازی بلدم اگه یمشد با اون تنظیم کنم خوب بود!
خوب الان 2 تا نکته داریم، شما با این کار تو جهش، اون رو هدفمند می کنی و به نوعی جلوی اصلی ترین فلسفه جهش رو می گیری، چرا که داری بهترین جهش رو بر میداری و این در خالی هست که جهش در طبیعت می تونه نخبه بده و هم مونقول. (منظورم عقب مانده هست و بابت غلط املایی احتمالی شرمنده)
اما در مورد توزیع یکنواخت، شما اگر از هر توزیع دیگری استفاده بکنی، بنا بر اصول احتمالات، اعداد ایجاد شده از الگو پیروی می کنه و مجددا بحث بالا در مورد جهش نقض میشه.
اما وقت، دوست من، ماها مجبوریم بریم یاد بگیریم و پیشنهاد می کنم برای یادگیری اینچیزها بری و مقالاتی رو بخونی که حاصل کار یه پروژه کارشناسی ارشده و بعد با دانشجویی که اون رو کار کرده و ایمیلش هم تو مقاله هست مکاتبه کنی، اکثر اونها وقتی علاقه مند ببین شما رو برات متن اصلی پایان نامشون رو میفرستن یا خیلی خیلی عالی و پایه ای کمکت می کنن (این مورد برای خود من چند بار پیش آمده)
بهر حال اگر کاری از دست من بر بیاد در خدمتم.
mahdi053 آفلاين است   پاسخ با نقل قول
از mahdi053 تشكر كرده است:
moosavimaleki (۱۲-۲-۱۳۹۱)
قديمي ۱۲-۲-۱۳۹۱, ۰۱:۱۵ قبل از ظهر   #10 (لینک دائم)
عضو جدید
 
آواتار moosavimaleki
 
تاريخ عضويت: بهمن ۱۳۹۱
پست ها: 6
تشكرها: 8
0 تشكر در 0 پست
پيش فرض

نقل قول:
نوشته اصلي بوسيله mahdi053 نمايش پست
خوب الان 2 تا نکته داریم، شما با این کار تو جهش، اون رو هدفمند می کنی و به نوعی جلوی اصلی ترین فلسفه جهش رو می گیری، چرا که داری بهترین جهش رو بر میداری و این در خالی هست که جهش در طبیعت می تونه نخبه بده و هم مونقول. (منظورم عقب مانده هست و بابت غلط املایی احتمالی شرمنده)
اما در مورد توزیع یکنواخت، شما اگر از هر توزیع دیگری استفاده بکنی، بنا بر اصول احتمالات، اعداد ایجاد شده از الگو پیروی می کنه و مجددا بحث بالا در مورد جهش نقض میشه.
اما وقت، دوست من، ماها مجبوریم بریم یاد بگیریم و پیشنهاد می کنم برای یادگیری اینچیزها بری و مقالاتی رو بخونی که حاصل کار یه پروژه کارشناسی ارشده و بعد با دانشجویی که اون رو کار کرده و ایمیلش هم تو مقاله هست مکاتبه کنی، اکثر اونها وقتی علاقه مند ببین شما رو برات متن اصلی پایان نامشون رو میفرستن یا خیلی خیلی عالی و پایه ای کمکت می کنن (این مورد برای خود من چند بار پیش آمده)
بهر حال اگر کاری از دست من بر بیاد در خدمتم.
مگه این قسمت از طبیعت که جهش های بد هم داریم به درد ما میخوره؟؟ یعنی کمکی به روند بهینه سازی نداره ، درسته تو طبیعت هست فکر نکنم فایده ای توی کار ما داشته باشه

چرا بحث جهش نقض میشه؟!

من یه مقاله اینگلیسی راجع به کراس اور فازی پیدا کردم دارم روش کار میکنم فقط جهش رو موندم چه کار کنم !!
A Dynamic Fuzzy-Based Crossover Method for Genetic Algorithms
moosavimaleki آفلاين است   پاسخ با نقل قول
پاسخ



كاربران در حال ديدن تاپيک: 1 (0 عضو و 1 مهمان)
 

قوانين ارسال
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is فعال
شکلکها فعال است
كد [IMG] فعال است
كدهاي HTML غير فعال است
Trackbacks are فعال
Pingbacks are فعال
Refbacks are فعال




زمان محلي شما با تنظيم GMT +3.5 هم اکنون ۱۱:۴۵ قبل از ظهر ميباشد.


Powered by vBulletin® Version 3.8.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Search Engine Friendly URLs by vBSEO 3.1.0 ©2007, Crawlability, Inc.

Teach and Learn at Hexib | Sponsored by www.Syavash.com and Product In Review

استفاده از مطالب انجمن در سایر سایت ها، تنها با ذکر انجمن هوش مصنوعي به عنوان منبع و لینک مستقیم به خود مطلب مجاز است

Inactive Reminders By Icora Web Design