পিঁপড়া কলোনী অ্যালগরিদম


13

আমি একজন শিক্ষার্থী যা একটি কোর্স প্রকল্পের জন্য পিঁপড়া কলোনী সিমুলেটারে কাজ করে। এর জন্য অ্যালগরিদম (স্পষ্টতই) একটি পিঁপড়া কলোনী অ্যালগরিদম। আমি জানি অ্যালগরিদমের বিভিন্ন রূপ রয়েছে তবে সেগুলি আমাদের জন্য খুব গাণিতিকভাবে বিশদ ছিল তাই আমরা একটি পন্থা নিয়েছিলাম যাতে আমাদের রয়েছে:

  • একটি পিঁপড়া একটি কলোনীতে জন্মগ্রহণ করে এবং উপনিবেশকে টিকিয়ে রাখতে উত্স থেকে খাদ্য সংগ্রহ করতে হবে।
  • সমস্ত পিঁপড়া একই রকম।
  • পিঁপড়াটি যে অঞ্চলটিতে চলে সেগুলি 1000x1000 গ্রিড, সুতরাং প্রতিটি গ্রিড পয়েন্ট একটি পিঁপড়া দখল করার জন্য একটি বৈধ পয়েন্ট হিসাবে কাজ করে। এখন, আমি যে সমস্ত অ্যালগরিদমগুলি পেরিয়ে এসেছি সেগুলিতে উল্লম্ব এবং প্রান্তগুলি পৃথকভাবে চিকিত্সা করার সাথে জড়িত তবে আমরা পিঁপড়ার চলাচলকে কেবলমাত্র চার দিকে (উপরে, নীচে, বাম, ডানদিকে) সীমাবদ্ধ রাখছি বলে আমি অনুমান করি যে আমরা ফেরোমোনটি কোথায় রেখেছি তাতে কিছু আসে যায় না।
  • উপরে উল্লিখিত গ্রিড পয়েন্টগুলি ফেরোমন সঞ্চয় করে।
  • পিঁপড়া যদি কেবল খাদ্য বহন করে তবে ফেরোমন ফোঁটা করে।
  • কোন অবস্থানে পিঁপড়ার জন্য (i, j), এটি সিদ্ধান্ত নিয়েছে যে তার চারটি সংলগ্ন নোডের ফেরোমোন পরিমাণকে একটি সাধারণ সম্ভাব্য সূত্রে অ্যাকাউন্টে গ্রহণ করে, যেখানে কোনও নোডে ভ্রমণের সম্ভাবনা দেওয়া হয়েছে তা পরবর্তী পদক্ষেপে কোথায় স্থানান্তরিত হবে (নির্দিষ্ট সংলগ্ন নোডে ফেরোমোন পরিমাণ) / (4 সংলগ্ন নোডে ফেরোমন পরিমাণের যোগফল)।
  • একটি পিপীলিকা যে অবস্থান থেকে এসেছিল সেখানে ফিরে যেতে পারে না। এটি কেবল তখনই এটি করতে পারে যদি এটি এমন কোনও সাইটে থাকে যেখানে খাবার থাকে বা এটি তার কলোনীতে থাকে।

এখন আমার উদ্বেগটি হ'ল (এবং আসলে আমাদের প্রোগ্রামে কী ঘটছে) যে যখন কোনও পিঁপড়া FIRST এমন একটি অবস্থানে পৌঁছায় যেখানে খাবার থাকে এবং এটি তুলে নিয়ে যায়, তখন আমাদের অ্যালগরিদম যেভাবে কাজ করে, এটি যে কোনও জায়গায় যেতে পারে! এর কারণ এটি কেবল ফেরোমোন ট্রেইল ছেড়ে যাবে, এটি একবার খাবার খেয়েছে এবং এর আগে নয় এবং এটি প্রথম পিঁপড়ে হিসাবে উপস্থিত থাকার পরে, কোনও ট্রেইল নেই।

পিঁপড়া যদি কোথাও চলে যেতে পারে, পিঁপড়াগুলি খাবারের উত্সে পৌঁছার পরে এটি বেশিরভাগ ক্ষেত্রে অনুসরণ করার ঝোঁকও রাখে .. যদি এটি কলোনির দিকে ফিরে না যায় তবেও। এটি পুরো অ্যালগরিদমের উদ্দেশ্যকে পরাস্ত করে।

আমার প্রশ্ন তাই হয়

  • উপরোক্ত উদ্বেগ বৈধ? যদি না হয় তবে কেন? যদি হ্যাঁ, তবে এটি কীভাবে মোকাবেলা করবেন?
  • বাস্তবে এটি কার্যকর করার জন্য আমাদের কি অ্যালগরিদম সম্পর্কে আমাদের প্রাথমিক বোঝার কিছু পরিবর্তন করা দরকার?
  • এই ক্ষেত্রে আমার মতো নতুন কিছুগুলি মিস করতে পারে এমন আরও কিছু সূক্ষ্ম এখনও গুরুত্বপূর্ণ বিষয়গুলি কী কী?

1
যদি আমি একটি পিঁপড়া কলোনী নির্মাণ করতাম তবে আমার কাছে দুটি ধরণের ফেরোমন চিহ্ন ছিল: "নিয়মিত", সর্বদা যেখানে একটি পিঁপড়ে ভ্রমণ করে সেখানে রেখে যায় এবং "খাবার" কেবল পিঁপড়ে খাবার রাখে left পিঁপড়া যদি খাদ্য বহন করে তবে "নিয়মিত" ফেরোমোনকে আরও বেশি ঘনত্বের দিকে নিয়ে যায় অন্যথায় "খাদ্য" চিহ্নের দিকে। এছাড়াও আমি পিঁপড়াকে "ক্ষুধার্ত" এবং "স্যাটেড" বানাতাম; একটি ক্ষুধার্ত পিপীলিকা নতুন খাদ্য উত্স অনুসন্ধানের জন্য "খাদ্য" চিহ্নের দিকে কিন্তু "নিয়মিত" চিহ্ন থেকে দূরে ভ্রমণ করে। (আমি গ্রিড ষড়্ভুজও তৈরি করেছিলাম, তবে এটি বিন্দু নয়)
9000

যদিও অনেকগুলি প্রকরণ রয়েছে, আমি মনে করি পিঁপড়ার বেশিরভাগ অ্যালগরিদম ধরেছি যে পিঁপড়ে ঘরে ফিরে আসার পথটি মনে করতে পারে। IOW, এটি ইতিমধ্যে পরিদর্শন করা নোডগুলি জানে। ফেরোমোনগুলি এলোমেলোভাবে ভ্রমণ পিঁপড়ার জন্য খেলতে আসে।
ডাঙ্ক


"আমি জানি অ্যালগরিদমের বিভিন্ন রূপ রয়েছে তবে সেগুলি আমাদের জন্য গাণিতিকভাবে বিশদ ছিল তাই আমরা আমাদের একটি পন্থা গ্রহণ করেছি ..." আপনি কি নিশ্চিত না যে আপনি যদি কার্যনির্বাহী হয়েছিলেন তবে আপনি আসলেই কাজটি করছিলেন? ' অ্যালগোরিদম বুঝতে পারছেন না?
ডোভাল

@ ডোভাল: আমাদের কেবল আমাদের পছন্দের একটি প্রকল্প করতে হবে। আমরা কোনওভাবেই মাঠে সীমাবদ্ধ ছিলাম না। কোর্সটি সি ++ এর একটি প্রাথমিক ভূমিকা। আমাদের প্রশিক্ষকরা কেবল চান আমাদের সফ্টওয়্যার ডেভের অভিজ্ঞতা থাকতে হবে।
ট্রানজিস্টার

উত্তর:


6

এটি এসিও কীভাবে কাজ করে না। পিঁপড়াগুলি গ্রিডের সমস্ত পয়েন্ট পেরিয়ে যাওয়ার পরে কেবলমাত্র এসিও ফেরোমনগুলি ফেলে দেয়। তারপরে আপনি কোনও কিছুর মূল্যায়ন করুন (সম্ভবত পুরো ভ্রমণের সময়) এবং তারপরে ভাল পিঁপড়ার জন্য ফেরোমোনগুলি ফেলে দিন এবং পুনরাবৃত্তি করুন।

এগুলি কার্যকরভাবে নির্দিষ্টকরণের জন্য এটি কাস্টমাইজ করতে সক্ষম হওয়া সত্ত্বেও তারা সাধারণত একই শীর্ষে দুটি বার যায় না।

ফেরোমোনগুলি প্রতিটি পদক্ষেপ বাদ যায় না, তারা সর্বত্র সরে যাওয়ার পরে তারা নেমে যায় এবং কোন পিঁপড়া আরও ভাল তা নির্ধারণ করার জন্য কোনও কিছুর মূল্যায়ন করা হয়। পিঁপড়াগুলি আরও ভাল তবে ফেরোমোনস (সম্ভবত সেরা 25% সম্পাদনকারী পিঁপড়া) ফেলে দেয়।


আমি দ্বিমত পোষণ করছি - প্রতিটি পদক্ষেপে ফেরেমোন ফেলে রেখে এসিও কাজ করতে পারে , বিশেষত যখন পিঁপড়া কলোনির অনুকরণ করা লক্ষ্য ( "পিঁপড়ার একটি কলোনী এটিই করে" ব্যতীত অন্যান্য সমস্যার সমাধানের জন্য এসিও অ্যালগরিদমগুলি "অ্যালগোরিদমকে আরও দক্ষ করে তোলার জন্য পদক্ষেপ নেয়, তবে আসল পিঁপড়ার মতো অগত্যা নয়)।
লোগান পিকআপ

1

আমি অন্যের কাছ থেকে যে বাস্তবায়নগুলি দেখেছি এবং যেগুলি আমি নিজের জন্য লিখেছি, পিঁপড়াগুলি সর্বদা খাবারে পৌঁছানোর পথে ভ্রমণ করার পথে ফেরোমনগুলি ছেড়ে দেয়। অর্থাৎ পিঁপড়ারা এলোমেলো হাঁটার পরে তাদের কলোনী থেকে খাবারের দিকে যাত্রা করে; পিঁপড়াগুলি কলোনি থেকে খাবারের দিকে যাওয়ার পরে পিঁপড়াগুলি খাদ্যে পৌঁছাতে সফল হওয়ার পরে কেবল ফেরোমন ব্যবহার করে চিহ্নিত করা হয় । প্রত্যাবর্তন ট্রিপ স্পষ্টভাবে অনুকরণ করা হয় না। সাধারণভাবে, বর্তমান পুনরাবৃত্তির জন্য কোনও ফেরোমোন জমা দেওয়ার আগে একাধিক পিঁপড়া তাদের কোর্স চালায়। তারপরে ফেরোমোনগুলি সফল পাথের জন্য মোতায়েন করা হয় এবং একটি নতুন রাউন্ড শুরু হয়।

সাধারণত, প্রদত্ত নোডে পা রাখার পিঁপড়ার প্রতিক্রিয়াগুলি কিছুটা পরিমাপের ফেরোমোন গুনের দ্বারা ভারিত হয় "ধার্মিকতা"। উদাহরণস্বরূপ, ধার্মিকতা পরিমাপটি পিঁপড়া এবং খাবারের মধ্যে দূরত্বের বিপরীতের মতো কিছু হতে পারে - এটি পিঁপড়াদের খাবারের দিকে অগ্রসর হওয়ার চেষ্টা করে, পিওড়াগুলি আগের ফেরোমোন ডিপোজিট নির্বিশেষে রাখে। ধার্মিকতাটি অন্য কারণগুলির জন্য অ্যাকাউন্টে আরও ভারী হতে পারে, উদাহরণস্বরূপ কিছু নোড অন্যের চেয়ে ভ্রমণ করা আরও সহজ হতে পারে। এবং এন্ডারল্যান্ড হিসাবে উল্লেখ করা হয়েছে, সাধারণত সমস্ত পিঁপড়া সফলভাবে তাদের কোর্সগুলি চালানোর পরে পথ "নির্বাচন" এর কিছু রূপ রয়েছে , যেখানে কেবলমাত্র "সেরা" পাথের কিছু অংশ ফেরোমন জমা দেওয়ার জন্য বেছে নেওয়া হয়। যাইহোক, আপনার এখনও বাছাই ছাড়াই যুক্তিসঙ্গত পাথ পাওয়া উচিত,

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.