در این بخش سورس کد الگوریتم مورچه و حل مسئله فروشنده دوره گرد TSP در پایتون قرار گرفته شده است. این سورس کد به زبان پایتون Python برای الگوریتم کلون مورچگان یا همان ACO نوشته شده است. این سورس کد بر اساس ساز و کار الگوریتم مورچه مسئله TSP را حل می کند. برای اینکه بتوانید الگوریتم ACO را واضح و کامل درک کنید مقاله ای کامل با عنوان الگوریتم کلونی مورچگان ACO در همین سایت نوشته شده است. در ادامه مختصری از الگوریتم برای درک کد الگوریتم مورچه در پایتون بیان می شود.
برنامهنویس: تیم برنامه نویسی پی استور
متشکل از اساتید و فارغ التحصیلان رشته های فنی - مهندسی
تیم برنامه نویسی پی استور یکی از اولین گروه های تشکیل شده در مجموعه آموزشی پی استور می باشد. این تیم از اساتید مجرب و فارغ التحصیلان رشته های فنی و مهندسی تشکیل شده که در زمینه های مختلف برنامه نویسی و تهیه سورس کد فعال هستند.
الگوریتم کلونی مورچگان ACO
الگوریتم بهینه سازی کلونی مورچه Ant Colony Optimization یا به اختصار ACO مورچگان تحت عنوان الگوریتم های هوش ازدحامی (هوش گروهی) شناخته شده و به مدل سازی رفتار مورچه های واقعی می پردازد. مورچه ها حشراتی هستند که می توانند گروه ها (کلونی ها) را شکل دهند. چنین رویکرد جمعیت محوری این امکان را برای الگوریتم ACO ایجاد می کند تا به حل مسائل بهینه سازی پویا به طور کاملا کارآمد بپردازد. مورچه ها به عنوان مخلوقات خودسازمانده می باشند.
از آنجایی که مورچه ها اصلا چشم ندارند، تعاملات آن ها از طریق ماده شیمیایی فرومون که از آن برای نشان گذاری مسیر استفاده می شود، اانجام می گیرد. هرچه فرومن های بیشتری در مسیر قرار گیرد مابقی مورچه ها از این مسیر بیشتر استفاده می کنند؛ بنابراین، چنین کمیتی نشان می دهد که این مسیر به عنوان یکی از بهینه ترین و کوتاه ترین راه می باشد. اکنون نگاهی به یک نمونه عینی می اندازیم. هدف پیدا کردن بهترین راه از نقطه آغازی N (آشیانه) به نقطه مقصد F (منبع غذا) می باشد.
ممکن است این حدس زده شودکه احتمال برای مورچه ای که مسیر درست را می پیماید برابر با همان احتمالی می باشد که مسیر اشتباه را انتخاب کند. نکته در اینجا اینست که مورچه ای که کوتاه ترین مسیر را می پیماید، اولین مورچه ای است که به نقطه مقصد رسیده و سپس به اشیانه ( نقطه مبدا حرکت) بر می گردد، بنابراین در این کوتاه ترین مسیر فرمون های بیشتری وجود دارد. از این رو فرمون دقیقا همان چیزی است که نشان می دهد که مورچه باید از چه مسیری برود و در پایان کوتاه ترین راه، بهترین مسیر می باشد.
مسئله فروشنده دورگرد TSP
مساله فروشنده دوره گرد Travelling salesman problem یا به اختصار TSP مساله اي است که شرح آن خيلي آسان مي باشد. تعريف آن بدين صورت است که تعداد متناهي شهر با هزينه پيمايش بين هر جفت از آنها داده مي شود و هدف مساله اين است که يک فروشنده دوره گرد تمامي اين شهرها را به گونه اي ملاقات کند که هر يک از اين شهرها را فقط يک بارملاقات کرده و دوباره به شهر آغازين برگردد با اين شرط که با کمترين هزينه پيمايش اين کار را انجام دهد.
به طور کلي هدف پيدا کردن کم هزينه ترين تور براي ملاقات همه شهرها و بازگشت به شهر آغازين حرکت است. مساله فروشنده دوره گرد در شکل ساده و اختصاري با نام TSP شناخته مي شود. شکل زیر يک نمونه جواب از مساله فروشنده دوره گرد که در سال 1591 براي 15 شهر از کشور آمريکا مطرح شد را نشان مي دهد که با روش شاخه وحد حل شد.
سورس کد الگوریتم مورچه و حل مسئله فروشنده دوره گرد TSP در پایتون
در این قسمت الگوریتم مورچه و حل مسئله فروشنده دوره گرد TSP در پایتون آماده شده است این سورس کد شامل 3 فایل می باشد و یک فولدر برای با سه فایل برای مختصات شهرها در نظر گرته شده است که عبارتند از:
- aco.py: این فایل تابع الگوریتم مورچه است و تمامی عملیات های مربوط به فرمون گذاری و تکرار و حرکت مورچه ها در این فایل انجام می شود.
- plot.py: برای نشان دادن نحوه حرکت از شهرها از این تابع استفاده شده است.
- main.py: فایل اصلی برنامه است که تمامی فراخوانی ها از این فایل انجام می شود.
- فولدر data: که به عنوان نمونه شامل 3 فایل txt. است و دارای دو ستون که هر سطر مختصات یک شهر را نشان می دهد.
قسمت هایی از سورس کد
import math from aco import ACO, Graph from plot import plot def distance(city1: dict, city2: dict): return math.sqrt((city1['x'] - city2['x']) ** 2 + (city1['y'] - city2['y']) ** 2) def main(): cities = [] points = [] with open('./data/chn144.txt') as f: for line in f.readlines(): city = line.split(' ') cities.append(dict(index=int(city[0]), x=int(city[1]), y=int(city[2]))) points.append((int(city[1]), int(city[2]))) cost_matrix = [] rank = len(cities) for i in range(rank): row = [] for j in range(rank): row.append(distance(cities[i], cities[j])) cost_matrix.append(row) aco = ACO(10, 100, 1.0, 10.0, 0.5, 10, 2) graph = Graph(cost_matrix, rank) path, cost = aco.solve(graph) print('cost: {}, path: {}'.format(cost, path)) plot(points, path) if __name__ == '__main__': main()
ویدیو معرفی محصول
*** توجه ***
قبل از اجرای سورس کد الگوریتم در محیط پایتون حتماً از نصب پکیج های مورد استفاده در این سورس کد در Python خود مطمئن شوید پکیج های استفاده شده در این سورس کد numpy و matplotlib می باشد که اولی پکیج مربوط به استفاده از آرایه ها و ماتریس ها در پایتون و دومی مربوط به عملیات های نموداری و Plot گرفتن می باشد. پیشنهاد ما نصب اسپایدر (Spyder (Python 3.7 می باشد که هم پایتون و پکیج های مختلف و هم IDE های مختلفی را همراه با امکان آپدیتشان نصب می کند.
درباره الگوریتم مورچه و حل مسئله فروشنده
سورس کد الگوریتم مورچه و حل مسئله فروشنده دوره گرد TSP در پایتون Python عنوان محصولی است که در این پست به آن پرداخته شده است. محصول در پایتون و با IDE اسپایدر (Spyder (Python 3.8 نوشته شده و بصورت کامل توسط گروه پشتیبانی پی استور تست و اجرا شده است. محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری کنید.
مباحث مرتبط با الگوریتم مورچه و حل مسئله فروشنده دوره گرد
سورس کدهای آماده الگوریتم های مشابه در پایتون
تاریخ انتشار: | 1 دی 1399 |
---|---|
تاریخ بروزرسانی: | 5 خرداد 1400 |
حجم فایل: | 8 کیلوبایت |
فرمت فایل | py. در قالب پایتون |
نسخه: | 1.0 |
هماهنگی با: | (Spyder (Python 3.8 و بالاتر |
تاکنون 472 نفر این محصول را تهیه کرده اند و 2 نظر برای آن ثبت شده است.
نظرات و دیدگاه ها
قوانین ثبت دیدگاه
- لطفاً دیدگاه های خود را فارسی تایپ کنید.
- دیدگاه های نامرتبط به مطلب تایید نخواهد شد.
- از درج دیدگاه های تکراری پرهیز نمایید.
- سوالات تخصصی خودتان را از طریق تیکت پشتیبانی مطرح کنید.
قیمت 49,000 تومان
تاریخ انتشار: | 1 دی 1399 |
---|---|
تاریخ بروزرسانی: | 5 خرداد 1400 |
حجم فایل: | 8 کیلوبایت |
فرمت فایل | py. در قالب پایتون |
نسخه: | 1.0 |
هماهنگی با: | (Spyder (Python 3.8 و بالاتر |
2 بازخورد (مشاهده نظرات)
قیمت: 49,000 تومان
سارا
سلام. من اینو بخرم عین ویدیو اجرا میشه؟
فاطمه اسماعیلی
سلام دوست عزیز.
بله میتونید به راحتی سورس کد رو با نرم افزار اسپایدر اجرا کنید.
مدیریت و پشتیبانی
نظرات و پیشنهادات خود را با ما در میان بگذارید.