টার্ন ভিত্তিক কৌশল গেমটিতে সাফল্যের সাথে কমপক্ষে / সর্বাধিক প্রয়োগ করতে আপনাকে সমস্ত উপলভ্য দাবা-কৌশল সঠিকভাবে প্রয়োগ করতে হবে ...
মূল্যায়ন ফাংশন
এমনকি দাবা ইঞ্জিনগুলির খুব খারাপ শক্তি রয়েছে, যদি আপনার মূল্যায়নের কাজগুলি খারাপ হয়। একটি মূল্যায়ন ফাংশনের সর্বাধিক সহজ সংস্করণ হ'ল: 1 = গেমটি সাদা দ্বারা জিতেছে, -1 = গেমটি কালো দ্বারা জিতেছে, 0 = অন্যান্য সমস্ত ক্ষেত্রে; তবে, এটি আপনাকে খুব খারাপ অভিনয় দেবে। আপনার টার্ন ভিত্তিক গেমের ক্ষেত্রেও একই ঘটনা ঘটে! আপনি যদি দাবাতে পছন্দ মতো ন্যূনতম / সর্বোচ্চ (আলফা / বিটা ছাঁটাই এবং স্টাফ সহ) ব্যবহার করতে চান তবে আপনাকে অবশ্যই একটি যুক্তিসঙ্গত মূল্যায়ন ফাংশন বাস্তবায়ন করতে হবে! অন্যথায়, যখন আপনার কৌশল খেলায় দাবা প্রয়োগের ক্ষেত্রে প্রয়োগ হয় তখন আপনি সেই আলগোরিদিমগুলির পারফরম্যান্স তুলনা করতে পারবেন না।
দাবা ইঞ্জিনগুলির মূল্যায়ন ফাংশনগুলি কী করে তা এই জাতীয় জিনিসগুলির মূল্যায়ন করে:
- বোর্ডে কোনও অংশের অবস্থান কতটা ভাল?
- কত টুকরো আক্রমণ করা হয়?
- টুকরোটি কতবার সুরক্ষিত হয়?
- প্রতিটি টুকরো বোর্ডে অবাধে "সরানো" যায় কিভাবে? (বা: এটি কতগুলি টাইলগুলি "নিয়ন্ত্রণ" করে)
মূল্যায়ন ফাংশনের সেই অংশগুলি প্রথমে আপনার খেলায় "অনুবাদ" করা উচিত:
- টুকরো অবস্থান: এটি উদাহরণস্বরূপ কোনও পাহাড়ের উপরে, যা এর শুটিংয়ের পরিধি বাড়িয়ে দিচ্ছে?
- আক্রমণ করা হয়েছে: প্রতিটি টুকরো কতটা বিপদে রয়েছে? (উদাহরণস্বরূপ, বিশেষ ইউনিট আক্রমণ করতে সক্ষম ইউনিটগুলির আক্রমণ মূল্যগুলির যোগফল যার দ্বারা আক্রান্ত হওয়ার সম্ভাবনাটি বহুগুণে বেড়ে যায়; ইউনিট ইতিমধ্যে ক্ষতিগ্রস্থ হলে সম্ভাবনা বাড়ে; অন্যান্য ইউনিট আক্রমণকারী ইউনিটের পরিসরে থাকলে হ্রাস পায়)
- নিজস্ব আক্রমণ: প্রতিটি ইউনিট দ্বারা কয়টি ইউনিট আক্রমণ করতে পারে?
- সুরক্ষা: এর পাশে কতগুলি নিজস্ব টুকরো রয়েছে (সহায়তা করতে)? সম্ভবত কোনও ইউনিট নূন্যতম দূরত্বে ইউনিট আক্রমণ করতে পারে না এবং কাছাকাছি ইউনিটগুলিতে আক্রমণ করার সম্ভাবনা থাকার কারণে ইউনিট দ্বারা এটি রক্ষা করা তার পক্ষে ভাল fe
- গতিশীলতা: আপনার ইউনিটটি কীভাবে মোবাইল? (এটি পালাতে পারে?)
সমস্ত ইউনিটগুলির জন্য ওজন ফাংশন (ফ্যাক্টর_এ * রেটিং_এ + ফ্যাক্টর_বি * রেন্টিং_বি + ...) দ্বারা বিভিন্ন রেটিংয়ের সংক্ষিপ্তকরণ অবশ্যই করতে হবে ...
কৌশল গেমগুলিতে বাম সংস্থানগুলি (স্বর্ণ, কাঠ, ... )ও বিবেচনায় নেওয়া উচিত।
যদি আপনার মূল্যায়নের কাজটি যথেষ্ট পরিমাণে হয় তবে বেশিরভাগ ক্ষেত্রে আপনার গাছে সত্যিই "গভীর" অনুসন্ধান করতে হবে না। সুতরাং আপনার সম্ভবত সম্ভবত 3 বা 10 সবচেয়ে আশাব্যঞ্জক পছন্দগুলি নিবিড়ভাবে দেখার প্রয়োজন। পরবর্তী অধ্যায়টি দেখুন ...
প্রতিটি পজিশনে সম্ভাব্য পদক্ষেপ
কৌশল গেমগুলির জন্য ন্যূনতম / সর্বাধিক ব্যবহারের ক্ষেত্রে সবচেয়ে সমস্যাযুক্ত বিষয়টি হ'ল আপনি এক একক সময়ে একাধিক ইউনিট কমান্ড করতে পারেন, তবে দাবাতে আপনাকে কেবল একটি ইউনিটকে কমান্ড দেওয়ার অনুমতি দেওয়া হয় (কাস্টিং বাদে, তবে এটি একটি পরিষ্কারভাবে সংজ্ঞায়িত পদক্ষেপের মিশ্রণ)। এটি প্রতিটি "পজিশন" (দাবা শব্দ) এর জন্য N ইউনিটের পক্ষে 5 ^ N সম্ভাব্য পদক্ষেপের কারণ হয়ে দাঁড়ায়, যদি আপনি কেবল প্রতিটি ইউনিটের জন্য "উত্তর, দক্ষিণ, পশ্চিম, পূর্ব বা স্টপ" এর মধ্যে সিদ্ধান্ত নেন। জটিল কমান্ডটি নিম্ন স্তরের কমান্ডগুলিতে ভেঙে আপনি এটি সমাধান করতে পারেন: উদাহরণস্বরূপ ইউনিট এ এর জন্য পদক্ষেপ বেছে নিন, গভীরতায় যান এবং বি ইউনিটের জন্য সিদ্ধান্ত নিন .... ইউনিটের জন্য সিদ্ধান্ত নিন ... এবং তারপরে এই টার্নটি শেষ করুন। কিন্তু, এই একা জটিলতা পরিবর্তন করে না! ক্রমগুলি ইউনিটগুলিতে নির্ধারিত ক্রমে আপনাকে অনুকূলিতকরণ করতে হবে (যেমন প্রথম ইউনিট বি, সি, ডি এবং তারপরে ইউনিট এ)। আপনি শেষ গণনার সময় প্রতিটি ইউনিটের সিদ্ধান্তের প্রভাব রেকর্ড করতে পারেন এবং তারপরে গুরুত্ব অনুসারে বাছাই করতে পারেন। এইভাবে আলফা-বিটা ছাঁটাই খুব খুব শীঘ্রই অনুসন্ধান গাছ থেকে কোনও খারাপ সমন্বয় কেটে ফেলা যায়। সর্বোচ্চ অগ্রাধিকারটি সর্বদা প্রতিটি পুনরাবৃত্তিতে "বেশি কিছু না করা এবং আপনার পালা শেষ করুন" হওয়া উচিত (নাল মুভ ছাঁটাই)। এইভাবে আপনি বেশিরভাগ ইউনিটকে সর্বাধিক কাজ বরাদ্দ করতে "এড়িয়ে যেতে" পারেন এবং তারা আগে যা করেছে তা কেবল চালিয়ে যেতে দিন। এইভাবে অনুসন্ধান "সমালোচনামূলক" ইউনিটগুলিতে একবার নজর রেখে দ্রুত অনুসন্ধানের গভীরতায় চলে যাবে (উদাহরণস্বরূপ, এখনকার যুদ্ধে সত্যিকার অর্থে) একবারে প্রতিটি ইউনিটকে একবার কমান্ড করার বিষয়টি নিশ্চিত করুন ... আপনি "গুরুত্বপূর্ণ" ইউনিটও সময়ে সময়ে কমান্ড পাচ্ছেন তা নিশ্চিত করতে আপনি কিছুটা এলোমেলো ব্যবহার করতে পারেন। বিশেষত, ইউনিটগুলি কিছু কাজ শেষ করে (যেমন
Iterative গভীরকরণ + ক্যাচিং / হ্যাশ টেবিল
তারপরে, কিছু সময়ের সীমা না আসা পর্যন্ত আপনি আরও বেশি করে গভীরতায় যেতে "ইন্টারেক্টিভ গভীরতর" করতে পারেন। সুতরাং কম ইউনিট থাকলে আপনি আরও গভীর অনুসন্ধান করবেন এবং আপনি আরও ভাল সমাধানের সন্ধান বন্ধ করলে আপনার সর্বদা কিছু "ফলাফল" থাকে " পূর্ববর্তী অনুসন্ধানগুলিকে ক্যাশে করার জন্য আইট্রেটিভ গভীর করার জন্য হ্যাশ টেবিল ব্যবহার করতে হবে। এটি সর্বশেষ টার্ন অনুসন্ধান থেকে কিছু ফলাফল পুনরায় ব্যবহার করতে সক্ষম করে (অনুসন্ধানের গাছের শাখা যা আসলে শেষ বারে সম্পাদিত আদেশগুলি অন্তর্ভুক্ত করেছিল)। এটি বাস্তবায়নের জন্য আপনার খুব ভাল একটি হ্যাশিং ফাংশন প্রয়োজন ("জোব্রিস্ট কী" দেখুন) যা পুনরাবৃত্তভাবে আপডেট হতে সক্ষম। হ্যাশ কী আপডেট করার অর্থ, আপনি কেবল পুরানো "পজিশন" এর হ্যাশ কীটি নিতে পারেন এবং অবস্থানের পরিবর্তনে লাথি মারতে পারেন (উদাঃ এক্স পজিশনে ইউনিট নিয়ে যান এবং এটিকে y তে রাখুন)। এইভাবে হ্যাশ কীটি গণনা করা দ্রুত এবং আপনার সম্পূর্ণ বোর্ডের পরিস্থিতি গণনা করার জন্য এটি প্রক্রিয়া করার দরকার নেই, কেবল হ্যাশটিতে এই অবস্থানের জন্য কোনও প্রাক্তন প্রবেশ রয়েছে কিনা তা খতিয়ে দেখার জন্য। একটি উপায়ে আপনাকে অবশ্যই নিশ্চিত করতে হবে যে কোনও হ্যাশের সংঘর্ষ না ঘটে।
অ-নিরস্তকর আচরণ
সর্বনিম্ন / সর্বাধিক অনুসন্ধানের জন্য অ-নিরোধক আচরণ একটি সমস্যা। এর অর্থ, এটি নিশ্চিত নয় যে আপনি কোনও আক্রমণাত্মক লক্ষ্যকে আঘাত করবেন কিনা (যেমন সম্ভাবনা 10%)% তারপরে আপনি এই পরিকল্পনাটি করতে পারবেন না। সেক্ষেত্রে আপনাকে অ্যালগরিদমটি সংশোধন করতে হবে এবং এর মধ্যে একটি "সম্ভাব্যতা" স্তর স্থাপন করতে হবে। এটি কিছুটা "এর সম্ভাব্যতাগুলি ঘুরিয়ে দেওয়ার মতো"। প্রতিটি স্বতন্ত্র ফলাফল পৃথকভাবে বিবেচনা করা উচিত। এই গভীরতার "স্তর" এর মাধ্যমে মূল্যায়ন অবশ্যই নমুনাযুক্ত (মন্টি কার্লো নমুনা) করতে হবে এবং গভীরতার মূল্যায়নের ফলাফলটি অবশ্যই ঘটনার সম্ভাব্যতা দ্বারা ওজন করা উচিত। সম্ভাব্য স্তরের বিভিন্ন ফলাফলগুলি অবশ্যই বিভিন্ন বিপরীতমুখী পদক্ষেপের মতো বিবেচনা করতে হবে (তবে মিনিট / ম্যাক্সের পরিবর্তে "গড়" গণনা করতে হবে)। এটি অবশ্যই অনুসন্ধান গাছের জটিলতা বাড়িয়ে তুলবে।
সারসংক্ষেপ
এই সমস্ত কৌশলগুলি (যা বর্তমানের দাবা ইঞ্জিনগুলি দ্বারা ব্যবহৃত হয়) একটি নির্মাতামূলক গেমটিতে প্রয়োগ করার সময়, আপনি অবশ্যই একটি গেমের জন্য যুক্তিসঙ্গত ফলাফল অর্জন করতে সক্ষম হবেন। অ-নিরোধক গেমগুলির জন্য, এটি সম্ভবত আরও জটিল হবে, তবে আমি এখনও ম্যানেজ করার যোগ্য বলে মনে করি।
এই কৌশলগুলির (দাবা জন্য) ব্যাখ্যা করার জন্য একটি ভাল উত্স হ'ল http://chessprogramming.wikispaces.com/
এমনকি আপনি ন্যূনতম / সর্বাধিক অনুসন্ধানগুলিতে কোনও ধরণের নির্দেশিত এলোমেলোতা প্রয়োগ করতে পারেন। প্রতিটি পুনরাবৃত্তির মধ্যে প্রথমে নির্ধারিত ফলাফলগুলি সুনির্দিষ্টভাবে অনুসন্ধানের পরিবর্তে, আপনি কেবল এটিকে এলোমেলো করতে পারেন এবং তার আদেশটি বর্তমান মূল্যায়নগুলির উপর ভিত্তি করে একটি সম্ভাব্যতা বন্টন দ্বারা সিদ্ধান্ত নেওয়া উচিত ...