কোনও কার্ড গেমের এআইয়ের জন্য সেরা কৌশল


27

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

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

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

আমি নিশ্চিত নই যে এই জাতীয় কার্ড গেমের জন্য এটি একটি এআই বিকাশের ভাল উপায় হতে পারে?

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


1
দুর্দান্ত প্রশ্ন! একটি সম্পূর্ণ উত্তর নেই। আমি কেবল আমার 2 সি যোগ করতে চাই: আপনি যদি জানেন যে আপনার গেমটি যে সমস্ত সম্ভাব্য রাজ্যের মধ্যে থাকতে পারে, তবে মিনিম্যাক্স তাত্ত্বিকভাবে সেই গেম-স্টেটস গাছটিকে অতিক্রম করার একটি ভাল উপায় হতে পারে। যদি সেই গেমটি বলে যে গাছটি খুব বেশি বড় হয় তবে পারফরম্যান্সের সমস্যায় উঠতে পারে ...
শিবন ড্রাগন

1
গেমের লক্ষ্য কী? কে জিতলো? কোনও খেলোয়াড়ের পক্ষে কোনও নির্দিষ্ট সময়ে গেম জয়ের সম্ভাবনা প্রায় অনুমান করা সম্ভব?
আসুন

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

1
গেমটি কি হার্টস্টোন? :)
লেসকাই আয়নেল

1
দেখে মনে হচ্ছে আমি আপনার সাথে খুব একই রকম অবস্থানে আছি, এছাড়াও কার্ড গেম, এছাড়াও স্থানীয় একটি (যদিও সুইজারল্যান্ড নয়) এবং আমি কোথায় থেকে শুরু করব তা বোঝার চেষ্টা করছি। একটি জিনিস যা আমি আকর্ষণীয় পেয়েছি তা হল একটি ইভোলভার, যেখানে আপনি ভার্চুয়াল খেলোয়াড়দের ডিএনএ অর্পণ করেন এবং তারপরে একে অপরের বিরুদ্ধে এঁকে দেন। আপনি আলগা হত্যা এবং আপনি বিজয়ীদের প্রজনন। ফলাফলটি বেশ শালীন এআই বট হতে পারে। আমি আমার কার্ড গেমের জন্য কীভাবে এই ট্রপিসুরো.com/puerto-rico- ইনভলভারটিকে অভিযোজিত তা বুঝতে পারি নি তবে আমি মনে করি এটি সম্ভব হয়েছে।
অ্যান্ড্রু সাভিনিখ

উত্তর:


11

আপনার উদাহরণটি ব্রিজের মতো বলে মনে হচ্ছে । শীর্ষ ব্রিজ-প্লেিং সিস্টেমগুলি চালগুলি নির্বাচন করতে মন্টি কার্লো পদ্ধতি ব্যবহার করে। উচ্চ স্তরে:

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

আপনি কিছু কাজ করার পরে, আপনি সমৃদ্ধ কৌশল সব ধরণের যোগ করতে পারেন। উদাহরণস্বরূপ, কোনও খেলোয়াড়ের historicতিহাসিক নাটকগুলির উপর ভিত্তি করে আপনার সম্ভাবনাগুলি পরিবর্তিত করুন, প্লেয়ারের স্টাইলের ভিত্তিতে সম্ভাব্যতাগুলি পরিবর্তিত করুন (প্যাসিভ, সাবধানী, আক্রমণাত্মক), বা এমনকি নির্দিষ্ট খেলোয়াড়ের একসাথে খেলার প্রভাবগুলি বিবেচনা করুন।


প্রতি লরেন্টজ-এর মন্তব্য সম্পাদনা করুন:

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

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

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


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

আপনি অবশ্যই এআই শিখতে পারেন। কৌশলটি হ'ল কোনও খেলোয়াড় যখন কোনও বিশেষ হাতে থাকে তখন কোনও খেলোয়াড় যখন তাদের হাতে থাকে তখন প্রদত্ত আইনী কার্ড খেলে তার সম্ভাবনা থেকে আলাদা হয়। আমি উপরে বিস্তারিত জানাব।
কর্বিন মার্চ

6

সাম্প্রতিক ব্যক্তিগত অভিজ্ঞতার একটি ঘটনা:

আমি নিজে একটি কার্ড গেম (বিস্কা, একটি 2 খেলোয়াড় পর্তুগিজ খেলা) নিয়ে কাজ করছি এবং আমি মন্টি কার্লো পদ্ধতি ব্যবহার করে ভাল ফলাফল পাচ্ছি, বিশেষত সাম্প্রতিক ইনফরমেশন সেট মন্টি কার্লো ট্রি অনুসন্ধান অ্যালগরিদম (আইএসএমসিটিএস) এর সাথে বর্ণিত পাইথনের উদাহরণ উত্স কোড http: //www.aif਼.co.uk / নিউজলেটার / 2013- তে 1_reduce_burden.htm ) এ।

এটি গেমের নিয়মগুলির জ্ঞানের সাথে কেবল অ্যাকশনাল ভুল পদক্ষেপের সাথে যুক্তিসঙ্গতভাবে ভাল খেলায়। আমি বর্তমানে এটি ছাঁটাই করার চেষ্টা করছি, এটি বাড়িয়ে তুলতে সক্ষম হব, যেমনটি আমি (এবং "এর" পিতামাতা "এমসিটিএস) সম্পর্কে পড়েছি তার তথ্য অনুসারে হিউরিস্টিক্সের সাহায্যে এটি তার গেমের খেলাকে বাড়ানো সম্ভব ( http: // www) .orangehelicopter.com / এডি / কাগজপত্র / aiide13.pdf ) এবং বিরোধী কার্ড অনুমান।


1
এই পোস্টটি পড়ার চেয়ে শক্ত (পাঠ্যের প্রাচীর)। আপনি এটিকে আরও ভাল আকারে সম্পাদনা করতে আপত্তি করবেন ?
gnat

সমস্যার বাস্তব অভিজ্ঞতা সহকারীর উত্তরের জন্য ধন্যবাদ দুর্দান্ত লিঙ্কগুলি!
লুবেন

3

আমি মনে করি এটি খেলার নিয়মের উপর নির্ভর করে।

আপনার প্রশ্ন থেকে আমি যা বুঝতে পেরেছি তা এখানে:

  • গেমটি রাউন্ডে খেলা হয়, প্রতিটি খেলোয়াড় প্রতি রাউন্ডে একটি করে কার্ড খেলে
  • যে খেলোয়াড় প্রথমে যায় সে তার যে কোনও কার্ড খেলতে পারে
  • যে খেলোয়াড় দ্বিতীয় স্থানে যায় কেবলমাত্র প্রথমে কী খেলেছে তার উপর নির্ভর করে কেবলমাত্র নির্দিষ্ট কার্ড খেলতে পারে
  • যে খেলোয়াড়টি রাউন্ডটি জিতেছে তারা পরের রাউন্ডে প্রথম যায়
  • সমস্ত কার্ড প্রথম রাউন্ডের আগে বিতরণ করা হয়

অনুমান:

  • অন্য খেলোয়াড়ের কার্ডের সম্পূর্ণ জ্ঞানের সাথে, খেলোয়াড় প্রথমে সিদ্ধান্ত নিতে পারে যে তার প্রত্যেকের জন্য, কোনও কার্ড রাউন্ড জিতবে কি না (প্রথম খেলোয়াড় একটি নিশ্চিত উইন কার্ড খেলতে পারে)
  • যদি কার্ড এ এবং বি উভয়ই যদি এই রাউন্ডটি প্রথম খেলবে, এ রাউন্ডটি খেলবে (এবং জিতবে) তবে বি নীচের রাউন্ড খেলে মানে বিও জিতবে (কার্ডের মান হারাবে না)
  • অন্য খেলোয়াড়ের কার্ডের সম্পূর্ণ জ্ঞানের সাথে, দ্বিতীয় স্থানের খেলোয়াড় সিদ্ধান্ত নিতে পারে যে কোনও কার্ড এই রাউন্ডটি জিততে পারে, তবে নিম্নলিখিত রাউন্ডটি প্রথম খেললে হেরে যাবে (সবচেয়ে খারাপ উইনিং কার্ডটি বেছে নিয়েছে)

এই নিয়মগুলি অনুসরণ করে এমন খেলা উদাহরণ:

প্রথম খেলোয়াড় একটি কার্ড খেলে। দ্বিতীয় প্লেয়ারকে একই স্যুটের কার্ড খেলতে হবে বা হারাতে হবে। যদি স্যুটগুলি মেলে, সর্বাধিক কার্ডের জয়।

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

টিএল; ডিআর
এআই এর কতটুকু জানে তাই এর সিদ্ধান্তগুলি নিখুঁত নয়, কেবল যথেষ্ট ভাল it


আপনার উত্তরের জন্য ধন্যবাদ. তবে প্রশ্নে যেমন বলা হয়েছে, কার্ডগুলি বিতরণ করার পরে ভাগ্য / কোনও এলোমেলোতা নেই। এবং কোনও প্লেয়ার অন্যান্য খেলোয়াড়দের কার্ড জানে না। ইতিমধ্যে খেলানো কার্ড এবং কিছু "নিয়ম" ব্যবহার করে তাকে অবশ্যই অনুমান করা উচিত।
লরেন্টজি

2
এলোমেলোভাবে মুখস্থ কার্ডগুলি মুছে ফেলার ধারণাটি পছন্দ করুন। এটি সহজ, মাঝারি এবং শক্তির মতো স্তরের বিকাশের বিষয়ে একটি ইঙ্গিত দেয়।
সুপারম
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.