এপিআই সহ দাবা ইঞ্জিন


11

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

কম অস্পষ্ট হতে, এই API থেকে আমার যা প্রয়োজন তা এখানে:

  • ইঞ্জিনে নির্দিষ্ট গেমটি লোড করতে সক্ষম হোন
  • গেমের অবস্থান মূল্যায়ন করতে সক্ষম হতে
  • একটি পদক্ষেপ করতে সক্ষম হবেন

সুতরাং, কেউ কি এমন কোনও ইঞ্জিন জানেন যা এটির কার্যাদি সম্পর্কে একটি পরিষ্কার API সরবরাহ করে?


2
ইউসিআই হ'ল একটি এপিআই যা কমান্ড লাইন সুইচ এবং স্ট্যান্ডার্ড ইনপুটের মাধ্যমে কমান্ড পায়। আপনি এই কমান্ডগুলির চারপাশে একটি মোড়ক লিখে ফাংশন দ্বারা কমান্ড কল করতে পারেন।
মাসউদ

হ্যাঁ, ইউসিআই হ'ল আপনি যা সন্ধান করছেন। এই সমস্ত প্রোগ্রাম ইউসিআইকে সমর্থন করে, যা সেভাবেই চেসবেসের মতো প্রোগ্রামগুলিতে সংহত হয়।
dfan

উত্তর:


6

অন্যরা যেমন বলেছে, ইউসিআই হ'ল আপনার পছন্দের এপিআই। প্রোটোকলের সম্পূর্ণ নির্দিষ্টকরণগুলি এখানে (জিপ ফাইল কোনও পাঠ্য ফাইলে বের করে): http://download.shredderchess.com/div/uci.zip

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

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

কমান্ড লাইনে কর্মের জন্য ইউসিআইর উদাহরণ এখানে রয়েছে:

bash-3.2$ ./stockfish-5-64 
Stockfish 5 64 by Tord Romstad, Marco Costalba and Joona Kiiski
uci
id name Stockfish 5 64
id author Tord Romstad, Marco Costalba and Joona Kiiski

option name Write Debug Log type check default false
option name Write Search Log type check default false
option name Search Log Filename type string default SearchLog.txt
option name Book File type string default book.bin
option name Best Book Move type check default false
option name Contempt Factor type spin default 0 min -50 max 50
option name Mobility (Midgame) type spin default 100 min 0 max 200
option name Mobility (Endgame) type spin default 100 min 0 max 200
option name Pawn Structure (Midgame) type spin default 100 min 0 max 200
option name Pawn Structure (Endgame) type spin default 100 min 0 max 200
option name Passed Pawns (Midgame) type spin default 100 min 0 max 200
option name Passed Pawns (Endgame) type spin default 100 min 0 max 200
option name Space type spin default 100 min 0 max 200
option name Aggressiveness type spin default 100 min 0 max 200
option name Cowardice type spin default 100 min 0 max 200
option name Min Split Depth type spin default 0 min 0 max 12
option name Threads type spin default 1 min 1 max 128
option name Hash type spin default 32 min 1 max 16384
option name Clear Hash type button
option name Ponder type check default true
option name OwnBook type check default false
option name MultiPV type spin default 1 min 1 max 500
option name Skill Level type spin default 20 min 0 max 20
option name Emergency Move Horizon type spin default 40 min 0 max 50
option name Emergency Base Time type spin default 60 min 0 max 30000
option name Emergency Move Time type spin default 30 min 0 max 5000
option name Minimum Thinking Time type spin default 20 min 0 max 5000
option name Slow Mover type spin default 80 min 10 max 1000
option name UCI_Chess960 type check default false
uciok
isready
readyok
quit
bash-3.2$ 

আমি যে আদেশগুলি জারি করেছি তা হ'ল ইউসি, ইডিডি এবং প্রস্থান করা।

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


UCI টুকরাটির মান নির্ধারণের জন্য কোনও API সরবরাহ করে বলে মনে হচ্ছে না।
স্নো ক্র্যাশ

এই ধরণের জিনিসটি ইঞ্জিনে নিজেই প্রোগ্রাম করা উচিত এবং দাবা ইঞ্জিনগুলি মানক মান ব্যবহার করবে। আপনাকে কেবল অন্য কোনও গেমের জন্য এটি পরিবর্তন করতে হবে (উদাঃ ফেইরি দাবা) এবং সম্ভাবনাগুলি হ'ল আপনাকে তখন কেবল টুকরো মানগুলির চেয়ে আরও অনেক কিছু পরিবর্তন করতে হবে।
বেন

আমি একমত নই নেই standardমান।
স্নো ক্র্যাশ

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

3

আমি "দাবা ইঞ্জিন এপিআই" তে গুগল করেছি তবে কোনও বাস্তব এপিআই দেখিনি not আপনার প্রশ্নের মন্তব্যে যেমন পরামর্শ দেওয়া হয়েছে আমি ইউসিআইয়ের সাথে যাব। দাবা ইঞ্জিনগুলির সাথে জিইউআইয়ের যোগাযোগের উপায়ও এটি।

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

http://stockfishchess.org/


1
স্টকফিশের সাথে কথা বলার জন্য এপিআই হ'ল ইউসিআই।
dfan

1
প্রকৃতপক্ষে এটা. তবে ইউসিআই বা কোডটিতে ডাইভিং ব্যবহার করা ইঞ্জিন কীভাবে ব্যবহার করা হচ্ছে তার উপর নির্ভর করবে। সে বিষয়ে প্রশ্নটি পরিষ্কার ছিল না।
রাফিয়েক

আমি মনে করি ইঞ্জিনের সাথে আমার কী করা দরকার তা উল্লেখ করেছি। একটি নির্দিষ্ট পিএনজি লোড করুন এবং প্রতিটি পদক্ষেপের পরে মূল্যায়ন করুন।
সালভাদোর ডালি

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

দুঃখিত, তবে আমি কীভাবে ইঞ্জিনটি ব্যবহার করতে যাচ্ছি তার দ্বারা আপনি কী বোঝাতে চেয়েছেন তা বুঝতে পারি না। আপনি কি এই পরিষ্কার করতে পারেন?
সালভাদোর ডালি


1

ব্যাচ ফার্স্ট হ'ল একটি জেআইটি সংকলিত দাবা ইঞ্জিন যা পাইথনে লেখা, এটি নুম্বা ব্যবহার করে সংকলিত, যা সহজে সি ++ ইন্টারফেসিং এবং এমনকি সহজ পাইথন ইন্টারফেসিংয়ের অনুমতি দেয়।

যদিও ব্যাচ ফার্স্ট নিজেই একটি ইঞ্জিন নয়, এটি এপিআই নয়, এটি পাইথন-দাবা প্যাকেজটি ভারীভাবে ব্যবহার করে এবং নির্ভর করে যা একটি দুর্দান্ত একটি এপিআই।

ব্যাচ ফার্স্টের জেআইটি সংকলন, এবং বোর্ডগুলি উপস্থাপনের জন্য নম্পপি অ্যারেগুলির ব্যবহার, দাবা ইঞ্জিনে প্রকৃত ব্যবহারের জন্য আরও বেশি ব্যবহারিক পাইথন ইন্টারফেসের (কমপক্ষে প্রস্থের কমপক্ষে একটি আদেশ) মঞ্জুরি দেয়।

ইঞ্জিনের মূলটি একটি শূন্য উইন্ডো কে-সেরা-প্রথম অনুসন্ধান অ্যালগরিদম যা ব্যাচগুলিতে এএনএনগুলি মূল্যায়নের জন্য ব্যবহৃত হয়।

সম্পূর্ণ প্রকাশ, আমি ব্যাচ ফার্স্ট ইঞ্জিনটির লেখক।


-1

এখানে স্টকফিশের একটি বন্দর সংস্করণ রয়েছে et নেট: https://github.com/bpfliegel/Portfish

এই ইঞ্জিনটি ব্যবহার করার জন্য (একবার এটি সংকলিত হয়ে গেছে), আপনি একটি জিইআইআই নেবেন যেমন এরেনা http://wwww.playwitharena.com বা ScidVSPC http://scidvspc.sourceforge.net । এই অ্যাপ্লিকেশনগুলি একটি দুর্দান্ত ইন্টারফেস সরবরাহ করতে এবং আপনাকে গেমস / পজিশনগুলি লোড করতে, তাদের বিশ্লেষণ করার জন্য ব্যবহৃত হয় (আমি নিশ্চিত যে আপনি পিএনজিতে কোনও গেম লোড করতে পারেন এবং একটি ইঞ্জিন দ্বারা এটি "চালনা প্রতি এন সেকেন্ড" এর মতো মানদণ্ড সহ বিশ্লেষণ করতে পারবেন) " এন চলন প্রতি চলুন "), ইঞ্জিন, ইত্যাদি মধ্যে ম্যাচ চালান

(প্রায়) প্রতিটি দাবা ইঞ্জিনে আপনাকে একটি ইউসিএসিএস বা একটি xboard.cs ফাইলের মতো এমন কিছু সন্ধান করতে হবে যা এই যোগাযোগের কাজটি করে।

(একটি "দাবা ইঞ্জিন" এমন একটি প্রোগ্রাম যা দাবা খেলতে সক্ষম তবে কোনও গ্রাফিকাল ইন্টারফেস নেই itআরিনা বা স্কিডভিএসপিসির মতো অ্যাপ্লিকেশনগুলিতে এটি যোগাযোগ করার পদ্ধতিটি ইউসিআই বা এক্সবোর্ড প্রোটোকল দ্বারা চালিত হয় Most বেশিরভাগ দাবা প্রোগ্রাম এইভাবে লেখা হয়, তাই বিকাশকারী জিইউআই স্টাফ সম্পর্কে ভুলে যেতে পারে এবং "মস্তিষ্ক" -এ ফোকাস করতে পারে)।

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