ইতিহাসের ভিত্তিতে ফেয়ার দলগুলিকে বিভক্ত করার কৌশল / অ্যালগরিদম


20

আমরা নিয়মিত ভিত্তিতে একসাথে ফ্লোরবল খেলছি। প্রতিটি অধিবেশন দলকে বিভক্ত করার কঠিন কাজ দিয়ে শুরু হয় ...

সুতরাং স্বয়ংক্রিয়ভাবে দল বাছাইয়ের চেয়ে অ্যাপ্লিকেশনটির চেয়ে ভাল আর কী হতে পারে?

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

কোন ধারনা?

সম্পাদনা: এটি পরিষ্কার করার জন্য, আমাকে যে তথ্যটি বাছাই করতে হবে তা এই জাতীয় কিছু হবে:

[{ team1: ["playerA", "playerB", "playerC"],
   team2: ["playerD", "playerE", "playerF"],
   goals_team1: 10,
   goals_team2:  8 
 },
 { team1: ["playerD", "playerB", "playerC"],
   team2: ["playerA", "playerE", "playerG"],
   goals_team1:  2,
   goals_team2:  5
 },
 { team1: ["playerD", "playerB", "playerF"],
   team2: ["playerA", "playerE", "playerC"],
   goals_team1:  4,
   goals_team2:  2
 }]

4
ফ্লোরবল কি?
ডায়নামিক

1
আমি অনুমান করি যে আপনার কাছে কেবল দলীয় স্কোর আছে, এবং কোনও ব্যক্তিগত অবদানের স্কোর নেই?
রোবট

1
@ ডায়নামিক: আমি অনুমান করতে যাচ্ছি এটি ফ্লোর হকিটির আরেকটি নাম - হকি একটি জিম ফ্লোরে খেলেন বরফের পরিবর্তে একটি ছোট রাবারের বলের সাথে একটি হাঁস (এবং অবশ্যই কোনও স্কেট নেই)।
হতাশ

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

2
@ টিহশ্রাইক প্রতিটি মিলিত খেলাগুলির জন্য আমার কাছে কোন দলে খেলা হয়েছিল এবং শেষ স্কোর কী ছিল সে সম্পর্কে আমার কাছে তথ্য আছে। যেমন। {টিম 1: ["ক", "বি", "সি"], টিম ২: ["ডি", "ই", "চ"], স্কোর: "10-5"}
ভেগার

উত্তর:


6

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

আমি গুগলের এমন কিছু স্মরণ করছি যার সাথে একটি ফসবল বিজোড় জেনারেটর রয়েছে। আমি এটি করার চেয়ে বেশ কিছুটা কাজ করা হয়েছিল। যে জন্য একটি refrence জন্যে, আমি দেখেছি তাই একটি নিবন্ধ এবং একটি সত্য দক্ষতা ক্যালকুলেটর যে দ্বারা ব্যবহৃত হয় এক্সবক্স জন্য Microsoft

আরও সহজ সরল পদ্ধতি গ্রহণ করে প্রতিটি খেলোয়াড় তাদের দলের পয়েন্টের অনুপাতের স্কোর পায়। গেম 1 এর জন্য প্লেয়ার এ পাবেন 1.25 (10/8) এবং প্লেয়ার ডি পাবেন 0.8 পয়েন্ট (8-10) /10 সমস্ত সংখ্যার গড়টি সন্ধান করুন এবং এটিই প্লেয়ারের স্কোর।

বর্ণিত গেমগুলির সেটগুলির জন্য, এটি সরবরাহ করে:

  A 1.42
  B 1.22
  C 0.72
  D 1.07
  E 1.27
  F 1.40
  G 2.50

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


খেলোয়াড়ের একই সংখ্যা, বা এটি যতটা নিকটবর্তী হয় যদি এটি বিজোড় সংখ্যক খেলোয়াড় দেখায় ;-)
Vegar

পার্টিশন সমস্যার রেফারেন্সের জন্য ধন্যবাদ ! আপনি রক করেছেন, @ ব্যবহারকারী 40980
এরিক গোপাক

3

দ্রুত এবং নোংরা পদ্ধতির:

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


এই পদ্ধতির কার্যকর হতে পারে, এমনকি যদি জনগণের প্রদত্ত সংমিশ্রণটি সম্পূর্ণ নতুন।
ভেগার

আরও ভাল কাজ করা ন্যাপস্যাক সমস্যার বৈকল্পের মত দেখাচ্ছে । ওজনগুলিও প্রাসঙ্গিক হতে পারে - আমি যেভাবে এটি মনে করি, সবচেয়ে ভারী খেলোয়াড় (আমাকে) সর্বদা সর্বশেষে বেছে নেওয়া হয়েছিল।
স্টিভ 314

এই লোভী পদ্ধতির অনুকূল সমাধান (উইকিপিডিয়া)
4:33

3

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

বাছাই করা প্লেয়ারের তালিকাটি (সেরা থেকে খারাপ) এবং তাদের সূচকে 1 বিটের সংখ্যার ভিত্তিতে (0 থেকে শুরু করে) এবং এমনকি দলগুলিতে বিভক্ত করুন। এটি নিম্নলিখিত বিতরণ দেয়:

  • 0000 (সেরা) - এমনকি
  • 0001 - বিজোড়
  • 0010 - বিজোড়
  • 0011 - এমনকি
  • 0100 - বিজোড়
  • 0101 - এমনকি
  • 0110 - এমনকি
  • 0111 - বিজোড়

... ইত্যাদি।

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

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

বৃহত্তর দক্ষতার ফাঁকগুলির জন্য ক্ষতিপূরণ দেওয়ার জন্য, আপনি এই তালিকায় ক্রম প্রয়োগ করতে পারেন। উদাহরণস্বরূপ, খুব শক্তিশালী শীর্ষ খেলোয়াড়কে 0000 মোকাবেলার জন্য, আপনি 0111 এর মতো নিম্ন-র‌্যাডের বিজোড় খেলোয়াড়ের সাথে 0011 প্লেয়ারকে অদলবদল করতে পারেন This এটি হ'ল জিনিসগুলি হাতের avyেউয়ে পায় তবে কমপক্ষে এটি একটি ভাল সূচনা পয়েন্ট সরবরাহ করে যা না করে নিখুঁত দক্ষতার একটি সঠিক পরিমাপ প্রয়োজন, তবে কেবল আপেক্ষিক দক্ষতার উপর ভিত্তি করে একটি ক্রম।


2

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

Round #1 = 8 pts, Round #2 = 6 pts, Round #3 = 4 pts, etc

Winning a game = 5 pts

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

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

তারপরে কম্পিউটারকে প্রতিটি দলের জন্য পাওয়ার পয়েন্টগুলিতে ভারসাম্য বজায় রেখে এবং দলগুলির একে অপরের বিপক্ষে সমান রেটিং সহ স্থির করে খসড়া তৈরি করতে (দল নির্বাচন করা) করতে দিন। যে খেলোয়াড়রা তাড়াতাড়ি নির্বাচিত হন, তবে হারানো দলগুলি খেলতে অবিরত র‌্যাঙ্কিংয়ে নেমে আসবে।


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

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

1

সবচেয়ে সহজ সমাধান হ'ল আনুমানিক দক্ষতার গ্রেড / ওজন সরবরাহ এবং প্রতিটি দলের স্কোরকে ভারসাম্যপূর্ণ করার চেষ্টা করা।

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

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


আপনার কাছে অর্থপূর্ণ হওয়ার মতো যথেষ্ট পরিমাণে ডেটা থাকবে যে সম্ভবত সেখানে কেবল কয়েকটা গেম থাকবে?
রোবটটি

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

@ স্টিভেনবার্নাপ: খেলোয়াড়ের দক্ষতার বিষয়ে আপনার প্রাথমিক অনুমানগুলি কতটা সঠিক / নির্ভুল - তার উপর নির্ভর করে যা আপনাকে বেশিরভাগ বা সমস্ত সিস্টেমের জন্য করতে হবে। নেটওয়ার্কটি ব্যবহারের সুবিধাটি হ'ল সময়টি যত তাড়াতাড়ি সেই মানটির উন্নতি করে আপনি প্রতিটি প্লেয়ারের জন্য নতুন স্কোর অনুমান করতে সক্ষম হবেন।
স্টিভেন এভার্স

1

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

এটি বিখ্যাত পার্টিশনের সমস্যার অপটিমাইজেশন সংস্করণ যা এনপি-সম্পূর্ণ। অতএব, আপনার সমস্যাটি সমাধান করা আমাদের পক্ষে কঠিন all তবে, পার্টিশনটি দুর্বলভাবে এনপি-সম্পূর্ণ এবং কিছু যুক্তিসঙ্গত আনুমানিক কৌশল গ্রহণ করে।

একটি উদাহরণ স্টিভেন প্রস্তাবিত অনুরূপ একটি লোভী পদ্ধতির হয় । এটি একটি 4/3-আনুমানিকতা, এটিই শক্তিশালী দল কখনই অনুকূল বিভাজনের চেয়ে প্রায় 33% বেশি শক্তিশালী না।

নোট করুন যে আপনার সম্ভবত অতিরিক্ত প্রতিবন্ধকতা রয়েছে যেমন আপনার প্রতি দল হিসাবে কমপক্ষে একটি নির্দিষ্ট পরিমাণ খেলোয়াড় প্রয়োজন। সুতরাং আপনি যদি মাইকেল জর্ডানকে প্রিস্কুলারদের ক্লাসে রাখেন তবে আপনি পুরো নম্বরযুক্ত প্রায় সুষ্ঠু দল তৈরি করতে পারবেন না। দলের আকারের উপর এই জাতীয় (ধ্রুবক) নিম্ন সীমানা অন্তর্নিহিত সমস্যার কঠোরতার উপর প্রভাব ফেলবে না তবে এটি সাধারণ সমস্যার জন্য বৈধ আনুমানিক সীমাটি ধ্বংস করতে পারে।


1
আপনি একটি জিম মেঝেতে অনেক খেলোয়াড় ফিট করতে পারবেন না। 20 টিরও বেশি প্লেয়ারের সাথে, ধরে নিচ্ছেন যে আপনি একদিকে 10 চান, চেক করার জন্য এখানে কেবল 92378 টি সংমিশ্রণ রয়েছে। সংমিশ্রণের সংখ্যা একটি বিস্তৃত অনুসন্ধানকে অবজ্ঞামূলক করার আগে এটি খুব বেশি খেলোয়াড় গ্রহণ করে না।
কেভিন ক্লাইন

@ কেভিঙ্কলাইন: ঠিক আছে। আমি স্পষ্টতই ধরে নিয়েছি যে নিষ্ঠুর শক্তি কোনও বিকল্প ছিল না (অন্যথায়, কেন জিজ্ঞাসা করবেন?)।
রাফেল

প্রতিটি দলে ছয় জনেরও বেশি লোক কখনও থাকতে পারে না। প্রায়শই চার।
ভেগার

@ ওয়েগার: তারপরে আপনার প্রশ্নটি কীভাবে মডেল প্লেয়ারের মানের জন্য টিম স্কোরগুলি শোষণ করবেন এবং অ্যালগরিদম সম্পর্কে কম কী, তাইনা?
রাফেল

1
যদি না আপনি লোকদের যথার্থতার দ্বারা যথাযথভাবে স্কোর করার কোনও উপায় বের করতে না পারেন তবে অ্যালগরিদমে যথার্থতা সম্ভবত এটি গুরুত্বপূর্ণ নয়। সমস্যাটি হাতে পাওয়ার সাথে সাথে আমাদের কেবলমাত্র দলীয় স্কোর এবং হাতে গোনা কয়েকটি পরীক্ষা রয়েছে। যে কোনও প্লেয়ার রেটিং একটি বন্য অনুমান হতে চলেছে।
রোবট

0

আপনি কি হাস্যকর পেতে চান? আপনি আগের খেলাগুলিতে তাদের দলের স্কোরের ভিত্তিতে প্রতিটি খেলোয়াড়ের জন্য সহগ তৈরি করতে সর্বদা একাধিক লিনিয়ার রিগ্রেশন ব্যবহার করতে পারেন। তারপরে তালিকাটি বাছাই করুন এবং নির্বাচন করুন।

বাস্তবে এটি সম্ভবত কার্যকর হবে না কারণ এটি খেলোয়াড়দের মধ্যে ডায়নামিককে মডেল করে না, তবে এটি আপনাকে আর এর সাথে খেলা করার কারণ দেয় । (<- দেখুন, আমি এটিকে প্রোগ্রামিং সম্পর্কিত রেখেছি)


1
আমি সপ্তাহে দু'বার 2 মিনিট কাজ এড়াতে একটি আবেদন করার কথা বিবেচনা করছি, আমাকে ভবিষ্যতের গণনাগুলির জন্য প্রায় একই পরিমাণ সময় রেকর্ডিং ফলাফলগুলি ব্যয় করতে বাধ্য করে। এতটাই হাস্যকর আমার ধারণা ...
ভেগার

-1

আপনি যদি চান যে আপনার অ্যালগরিদম যুক্তিসঙ্গতভাবে হয়, সাধারণ অ্যালগরিদম কেবল এটি কাটবে না। তারা প্রায়শই আপনাকে অদ্ভুত ফলাফল দেয়

আপনাকে ইএলও বা ট্রুইস্কিল সিস্টেমের মতো কিছু নিয়ে যেতে হবে (যদিও ইডিএ পরিবর্তন ছাড়া দলগুলির পক্ষে কাজ করে না)।


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