কীভাবে আমি এ * এজেন্টদের অন্যান্য এজেন্টদের এড়াতে পারি?


19

আমি একটি টাইল মানচিত্রে মাল্টি এজেন্ট এ * অ্যালগোরিদম বাস্তবায়ন করছি। এজেন্টগুলি কেবল এক্স এবং ওয়াই অক্ষগুলিতে চলে। পাথ গণনা করার সময় অন্যরা কোথায় থাকে তা যাচাই করে আমি তাদের মধ্যে সংঘর্ষ এড়াতে চাই।

এজেন্টদের একই দিক থেকে বিভিন্ন দিক থেকে একই টাইল পাস করতে হবে এমন অবস্থা বাদে এটি কাজ করে। এইরকম পরিস্থিতিতে, একটি এজেন্টের জন্য অপরটির অপেক্ষার অপেক্ষার জন্য সর্বোত্তম সমাধানটি হ'ল:

নমুনা পরিস্থিতি

এছাড়াও, যদি কোনও উত্তর করিডোর না থাকে, তবে পথচলা ব্যর্থ হয়।

আমি কীভাবে এই জাতীয় অ্যালগরিদম বাস্তবায়ন করতে পারি?


2
"ট্র্যাফিক এআই" কীভাবে তৈরি করবেন তার উত্তরগুলি ? এখানে প্রাসঙ্গিক।
আনকো

কয়েকটি মন্তব্য 1) আমি মনে করি যে আমি 100% ঠিক হিসাবে বিবেচনা করছি যে দুটি শত্রু ক্রস করার সময় কোনওভাবে ওভারল্যাপ করতে পারে। কেবলমাত্র যদি আপনি খুব বাস্তববাদী শৈলী চয়ন করেন যা বিজোড় হবে তবে অন্যদিকে এটি একটি জেল্ডার সাথে ঠিক আছে। 2) আপনি কোনও (* 2, * 2) মানচিত্রের রেজোলিউশনের সাহায্যে পথটিকে অনুমতি দেওয়ার বিষয়ে বিবেচনা করতে পারেন, যাতে দুটি শত্রু 1-ইউনিট-প্রশস্ত পথে অতিক্রম করতে পারে। 3) আপনি নিজের মানচিত্রগুলিও ডিজাইন করতে পারেন তাই বেশ কয়েকটি পথ সর্বদা পাওয়া যায় (সম্ভবত একটি আকর্ষণীয় প্রতিবন্ধকতা, কে জানে? :-))।
গেমএলচেমিস্ট

উত্তর:


18

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

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

খুব খারাপ ক্ষেত্রে যেখানে আপনার এজেন্টরা এই জাতীয় একক প্রস্থের করিডোর দ্বারা প্রচুর অবরুদ্ধ হয়ে পড়েছে সেখানে আপনাকে নিরাপদ দাগ যোগ করতে হতে পারে যেখানে এজেন্টরা দ্রুত পাথ করতে এবং তাদের আসল পথটি খোলার জন্য অপেক্ষা করতে পারে (যাতে এজেন্ট না শুধু অপেক্ষা করুন এবং একটি করিডোর অবরুদ্ধ করুন)।


19

আপনার সমস্যা সমাধানের পরিবর্তে, এখানে লেবুগুলি গ্রহণ এবং লেবু পানির তৈরি করার একটি উপায়।

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

শক্ত গণনা বাজেটের ব্যর্থতার কারণে সফলভাবে চলতে পারে এমন একটি আরও ভাল প্যাথফাইন্ডিং অ্যালগরিদম তৈরির চেষ্টা। সুতরাং পথচলা সমস্যাটি সমাধান করার পরিবর্তে, আমার বন্ধু এআই-তে খুব সস্তা চেক যুক্ত করেছে: যদি কোনও এআই স্বল্প সময়ের মধ্যে অন্য দু'এইআই তে প্রবেশ করে, তবে প্রস্থানটি খুঁজে বের করার চেষ্টা বন্ধ করুন এবং পরিবর্তে কভারটি গ্রহণ করুন। সুতরাং এখন যা ঘটে তা হ'ল, পিসি গ্রেনেড লব করে এবং শত্রুদের একগুচ্ছ বাহিরের জন্য দৌড়ে যায়। যাঁরা একে অপরকে আঘাত করে, ঘুরে দাঁড়ায় এবং দেখে মনে হয় তারা বুঝতে পারে যে তারা বেরোতে পারে না, তাই তারা হাঁকিয়ে ওড়ে ওঠার আগেই তাদের মাথা coverেকে দেয়। এটি উভয়ই বাস্তব-চেহারার এবং প্লেয়ারটির পক্ষে অত্যন্ত সন্তুষ্টিজনক।

আপনার সংঘর্ষ-উত্পাদক অ্যালগরিদমের অসুবিধাটি ঘুরিয়ে এবং এটি একটি সুবিধা হিসাবে রূপান্তর করতে পারে এমন কিছু উপায় আছে কি?


1
+1 আমি এটি পছন্দ করি, এটি ধ্বংসাত্মক এবং সম্পূর্ণ ক্রিয়ামূলক =)
প্যাট্রিক হিউজেস

3

অন্যান্য স্থানীয়করণের পরিস্থিতিগুলির জন্য অন্যান্য রূপের পথ অনুসন্ধানের সাথে A * পাথকে বাড়ানো আমার পক্ষে সাধারণত ভাল মনে হয়; ইউনিট এড়ানো সাধারণত তাদের মধ্যে একটি, বিশেষত এমন এক বিশ্বে যেখানে একাধিক এজেন্ট একসাথে চলাফেরা করে এবং এইভাবে গতিশীল ব্লকার তৈরি করে)।

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

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

গেমগুলিতে প্যাথফাইন্ডিং নিয়ে আলোচনা করার সময় "ইউনিট এড়ানো" মোটামুটি সাধারণ বিষয়, এর জন্য প্রচুর হিট রয়েছে। বিশেষ করে আপনি চেক আউট করতে পারেন "প্রবাহ ক্ষেত্র" pathfinding উপর এই প্রশ্ন সাধারণত এই সমস্যা পাতিত সুপ্রীম কমান্ডার 2. RTSs ব্যবহৃত অনেক এবং আকর্ষণীয় উপায়ে সমস্ত প্রকারের এটা সমাধানের জন্য।


এটি হ'ল - খুব সাধারণ উপলব্ধি বলে মনে হচ্ছে যে পাথফাইন্ডিংয়ের অর্থ এ * এবং এটি ঠিক তেমনটি নয়।
স্টিভেন স্টাডনিকি

2

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


এখানে একটি কাগজ যা সেই সময়ের ঘনক্ষেত্র সম্পর্কে আলোচনা করে: www0.cs.ucl.ac.uk/staff/D.Silver/web/Applications_files/… এবং এখানে একটি বাস্তবায়ন রয়েছে: allseeing-i.com/ASIPathFinder
রক্কা রাগ

0

এ * এর মতো অ্যালগরিদম ব্যবহার করার সময় আপনার ব্যয় হিউরিস্টিকের সাথে কাজ করার ক্ষেত্রে সবচেয়ে বেশি অক্ষাংশ রয়েছে।

এই বিশেষ ক্ষেত্রে আপনি কোনও এজেন্টকে অন্য এজেন্টের কাছাকাছি নিয়ে যাওয়া আন্দোলনের ব্যয় বৃদ্ধির জন্য উপাস্যকে সামঞ্জস্য করতে পারেন, সমস্যাটি সম্ভবত আপনি উভয়ই উপরের রুটটি নেওয়ার চেষ্টা করার সাথে শেষ করতে পারেন, এবং আপনি তাদের সাথে দোলকে শেষ করতে পারেন একে অপরের সাথে বন্ধ হয়ে যাওয়ার সময় সঠিক সময়ের উপর নির্ভর করে পাথের মধ্যে পিছনে পিছনে

আরেকটি সম্ভাব্যতা হ'ল এজেন্টরা অভিযুক্ত রুটগুলি ট্র্যাক করে এবং অন্যান্য এজেন্টগুলির উদ্দেশ্যে চিহ্নিত পাথগুলি দিয়ে costsর্ধ্বমুখী ব্যয়কে সামঞ্জস্য করে। এটি কার্যকরভাবে এজেন্টদের একে অপরের সাথে সীমিত পরিমাণে সমন্বয় করতে দেয়। এখানে মূল সমস্যাটি হ'ল যদি সমস্ত রুটগুলি অবরুদ্ধ করে দেওয়া হয় তবে পথের সন্ধানটি যে কোনও এজেন্ট শেষ পর্যন্ত চলে যেতে ব্যর্থ হতে পারে।

যে ক্ষেত্রে কেবল একটি পথ রয়েছে, সেখানে পাথ সন্ধানটি হয় ব্যর্থ হয় অথবা তারা অচলাবস্থার আগ পর্যন্ত একে অপরের দিকে এগিয়ে যায়।

যদি এগুলির উভয়ই পর্যাপ্ত না হয় তবে আপনার ব্যয়ও গণনা করার সময় আপনাকে সময়ের ট্র্যাক রাখা শুরু করা উচিত। দ্বিতীয় এজেন্টের জন্য ব্যয় হওয়া পরিমাণটি প্রথম এজেন্টকে পরিষ্কার হওয়া এবং সাধারণ ট্র্যাভারসাল ব্যয়ের জন্য কতটা সময় লাগে সেভাবে হওয়া উচিত, এইভাবে আপনার এজেন্ট কখন সঠিকভাবে সিদ্ধান্ত নিতে সক্ষম হবেন যে অন্য পথটি গ্রহণের বিপরীতে অপেক্ষা করতে হবে।

সময় সাপেক্ষে গ্রহণ করা উল্লেখযোগ্যভাবে আরও প্রচেষ্টা হতে পারে, তাই বেশিরভাগ লোকেরা পর্যাপ্ত পরিমাণে ভাল না হওয়া পর্যন্ত স্তরের লেআউট এবং ব্যয় মানগুলিকে টুইটারে স্থির করে নিন।


0

সাধারণত আমি আপনাকে ব্যবহার করতে অ্যাডভান্স করব পথ অনুসরণের সময় এই জাতীয় সমস্যাগুলি সমাধান স্টিয়ারিং আচরণগুলি । এবং গ্রুপিং আচরণের জন্য অনুপ্রেরণা পেতে আপনি এখনও তাদের অনেক কিছু নিতে পারেন। তবে দুর্ভাগ্যজনকভাবে এটি সহজ টাইল ভিত্তিক আন্দোলনের জন্য সরাসরি প্রযোজ্য নয়।

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

আপনি একজন এজেন্টকে অন্য একজনের জন্য অপেক্ষা করার পরামর্শ দিচ্ছেন এবং আমি আপনাকে ঠিক এটি করতে পরামর্শ দেব। এজেন্টদের অন্যের পাথ অ্যাক্সেস করার একটি উপায় দিন, আপনার নিজের পাথের প্রথম টাইলটি অনুসন্ধান করুন যা অন্য পথের অংশ নয় এবং সেখানে যান। এই কৌশলটি নিয়ে সমস্যাগুলি হতে পারে:

  1. অন্য এজেন্টের আশেপাশে অন্য কোনও গ্রহণযোগ্য উপায় আছে কি না আপনি কীভাবে সিদ্ধান্ত নেবেন? তার আশেপাশে যাওয়ার মতো জায়গা থাকলে আপনি অন্য এজেন্টের জন্য অপেক্ষা করতে চান না। অন্য এজেন্ট বিবেচনা করার সময় একটি পাথফাইন্ডিং ব্যর্থতা আপনি যে পরিস্থিতিটি ঠিক করতে চান তার একটি স্পষ্ট লক্ষণ, তবে উদাহরণ হিসাবে আপনি সেখানে আনেন যে কোনও পথচলা ব্যর্থতা হতে পারে না। তবে আপনি - একটু গণনার সাথে - সিদ্ধান্ত নিতে পারেন যে বিকল্প পাথ A * আপনাকে কেবল একটি ছোট বৃত্তের অন্য এজেন্টের আশেপাশে যায়, বা উত্তর করিডোরের মতো একেবারে পৃথক পথ ব্যবহার করে কিনা decide

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


0

এর সম্ভাব্য সমাধানগুলির মধ্যে একটি হ'ল এইরকম শক্ত দাগগুলিতে ইউনিট সংঘর্ষকে অক্ষম করা।

স্টারক্রাফ্ট গেমের উদাহরণস্বরূপ, শ্রমিকরা (এসসিভি, প্রোবস, ড্রোনস) খনির স্ফটিকগুলি যখন একে অপরের সাথে সংঘর্ষে লিপ্ত হয় না।

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