লীগের সময়সূচী অ্যালগরিদম সনাক্তকরণে সহায়তা প্রয়োজন Need


9

আমি স্পোর্টস লিগের শিডিয়ুলার তৈরি করার চেষ্টা করছি। প্রতিটি স্লট দক্ষতার সাথে পূরণ করার জন্য আমাকে একটি অ্যালগরিদম সনাক্ত করতে সমস্যা হচ্ছে।

তফসিল তৈরির জন্য নমুনা ডেটা হ'ল:

  1. 10 টি দল
  2. প্রতিটি দল একে অপরকে ১ বার খেলে (45 টি মোট গেমের প্রয়োজন হয়)
  3. প্রতিটি দল প্রতিদিন 1 বারের বেশি খেলে না
  4. আমার পরীক্ষায় আমি প্রতিদিন 5 টি স্লট সহ 9 দিন ব্যবহার করছি।

কম্বো টেবিল (45 টি কম্বো রয়েছে)

আইডি
Team1ID
Team2ID
বিটসাইনড

সময়সূচী সারণী (45 টি সময় স্লট রয়েছে)

scheduleID
homeTeamID
awayTeamID
GameDate
GameTime

এই মুহূর্তে আমার বিদ্যমান পদ্ধতিগুলি আমার স্লটগুলির 10% স্লটগুলির উপরের নিয়মগুলির উপর ভিত্তি করে একটি সময়সূচী বিরোধের শূন্যস্থান পূরণ করে fill

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

আমি বারবার লুপটি পুনরাবৃত্তি করি এবং প্রতিবার আমার উপলব্ধ দলগুলির তালিকা ছোট হয়ে যায় এবং ফলস্বরূপ আমার অ্যারেও কম হয়।

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

আমি এখনও চেষ্টা না করে কেবল দ্বন্দ্বের দিনগুলি "পুনরায় সেট করা" এবং আরও ভাল স্থান পেতে পারি কিনা তা দেখার জন্য তাদের আবার চেষ্টা করার চেষ্টা করুন।

যে কেউ কোন পরামর্শ আছে?


5
রাউন্ড-রবিন টুর্নামেন্টের
শিডিউলিং

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

1
আমি সম্পূর্ণরূপে এলোমেলো পদ্ধতি ব্যবহার করি। এলোমেলোভাবে একটি স্লট এবং দুটি দল বেছে নিন। যদি নিয়মগুলি সন্তুষ্ট হয় তবে গেমটি নির্ধারণ করুন। বাতিল না করে আবার চেষ্টা করুন। আমি মোট চেষ্টাগুলিতে একটি সীমা নির্ধারণ করেছি এবং যদি সীমাটি পৌঁছে যায় তবে সম্পূর্ণ সময়সূচিটি বাতিল করে আবার শুরু করুন। এটি বাস্তবে বেশ ভালভাবে অনুশীলনে কাজ করে।
সেরাড

আমি রাউন্ড রবিন পদ্ধতির অনুসরণ এবং অনুসরণ করে শেষ করেছি। আমি 95% ডিবিতে সংযোগের জন্য স্ক্রিপ্টটি লিখেছি, তবে পরীক্ষায় মনে হচ্ছে এটি মসৃণ এবং ভারসাম্যপূর্ণ চলছে running আমি আমার দিনগুলিকে "রাউন্ড" এর মতো চিকিত্সা করছি এবং তারা সুন্দর এবং ভারসাম্যপূর্ণ জীবনযাপন করছেন। আমি যে কোনও ক্রমে আমার রাউন্ডগুলি খেলতে পারি এবং প্রতিটি রাউন্ডের জন্য যে কোনও ক্রমে গেমগুলি রাখি তবে গেমকে এক রাউন্ড থেকে অন্য রাউন্ডে স্থানান্তর করা শেষ পর্যন্ত নিয়মগুলি ভঙ্গ করে।
স্টিভ

উত্তর:


5

এখানে আমি নিজেকে আবিষ্কার করেছি একটি অ্যালগরিদম। আমি জানি না এটি ইতিমধ্যে বিদ্যমান বা আসলে রাউন্ড রবিন বাস্তবায়ন কিনা:

1 4    1 5   1 6   1 3   1 2
2 5    4 6   5 3   6 2   3 4
3 6    2 3   4 2   5 4   6 5

মূলত আপনি দিয়ে শুরু

ঘূর্ণন ছবি

এবং সর্বদা 1টিকে একই অবস্থানে রাখুন এবং বাকীটি ঘোরান।

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


2
আপনি কীভাবে বাড়ি বনাম ভারসাম্যগুলি পরিচালনা করবেন?
এরিক কোপ

এটি আসলে কাজ করে না - এই সাধারণ ঘূর্ণন অ্যালগরিদমে, ঘূর্ণনকারী দলগুলি 2 স্লট আলাদা (2/4, 3/5) কখনও খেলবে না।
mdryden

@ এমড্রিডেন এটি কাজ করে। এটি আরও ভাল পরীক্ষা করে দেখুন এবং আপনার মন্তব্য সরান।
পিটার বি

@ পিটারবি আমি ভেবেছিলাম যে এটি কার্যকর হবে তবে এটি আসলে কার্যকর হয় না যদি সেখানে একটি বিচিত্র সংখ্যক দল থাকে যেমন একে অপরের ঠিক পাশের দলগুলি (৪ এবং ৫ এর মতো) কখনও একে অপরকে খেলবে না। আপনি এটিকে খুব সহজেই 1 এর শেষে এবং অন্য প্রান্তেও দেখতে পাচ্ছেন কারণ আপনার ঝাঁকুনির দল রয়েছে (বাই সহ) এখানে একটি দুর্দান্ত প্রতিক্রিয়া যা বিজোড় সংখ্যার সাথেও ডিল করে: stackoverflow.com/a/6649732/ 6489306
রাগিংগ্যাসিয়ানকোডার

@ragingasiancoder, যদি একটি বিজোড় সংখ্যক দল থাকে, একটি ডমি দল যুক্ত করুন। আপনার লিঙ্ক করা উত্তরটি আমি উপস্থাপিত ঠিক একই সমাধান বর্ণনা করে।
পিটার বি

1

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


1

আমি নীচে 10 টি দলের একক রাউন্ড রবিনের সময়সূচি তৈরি করেছি। আমার প্রায় 3 মিনিট সময় লেগেছে।

সময়সূচী তথ্য:

10 টি দল - 1 রাউন্ড রবিন (কেবল প্রথম 6 সপ্তাহ প্রদর্শিত হবে)
মরসুম শুরুর তারিখ 1/6/15 - শেষ তারিখ 3/5/15
2 প্রতি ম্যাচ 2 মঙ্গলবার, প্রতি বৃহস্পতিবার 3 টি খেলা, প্রতি সপ্তাহে 5 টি গেমের ছাড় নেই

  • সমস্ত দল সমানভাবে 5 টি সময় স্লটে খেলতে বিতরণ করা হয়।
  • সকলেই 9 টি গেম খেলেন।
  • সবাই একবার একে অপরকে খেলি।
  • সমস্ত হোম এবং দর্শনার্থী হিসাবে হয় সমানভাবে বিতরণ করা হয় (হয় 5/4, বা 4/5)। দ্রষ্টব্য: রাউন্ড রবিন 2 এর শেষে সমস্ত দল 18 টি গেম খেলবে (9 হোম হিসাবে এবং 9 টি দর্শক হিসাবে) এবং সমস্ত দলে 2 বাই হয়।
  • সমস্ত প্রতি সপ্তাহে 5 টি সময় স্লটে সমানভাবে খেলতে বিতরণ করা হয়।

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

10 Team Division Schedule   DATE 12/20/14

DATE   DAY TIME    LOCATION  GM  HOME vs VISITOR

Jan  6 Tue 6:00pm  Field #1   1  # 1 vs #10 
Jan  6 Tue 6:00pm  Field #2   1  # 2 vs # 9 
Jan  8 Thu 6:30pm  Field #3   1  # 3 vs # 8 
Jan  8 Thu 6:30pm  Field #4   1  # 4 vs # 7 
Jan  8 Thu 6:30pm  Field #5   1  # 5 vs # 6

Jan 13 Tue 6:00pm  Field #1   2  # 6 vs # 3 
Jan 13 Tue 6:00pm  Field #2   2  #10 vs # 8 
Jan 15 Thu 6:30pm  Field #3   2  # 7 vs # 2 
Jan 15 Thu 6:30pm  Field #4   2  # 9 vs # 1 
Jan 15 Thu 6:30pm  Field #5   2  # 4 vs # 5

Jan 20 Tue 6:00pm  Field #1   3  # 7 vs # 9 
Jan 20 Tue 6:00pm  Field #2   3  # 5 vs # 2 
Jan 22 Thu 6:30pm  Field #3   3  # 6 vs #10 
Jan 22 Thu 6:30pm  Field #4   3  # 3 vs # 4 
Jan 22 Thu 6:30pm  Field #5   3  # 8 vs # 1

Jan 27 Tue 6:00pm  Field #1   4  # 9 vs # 5 
Jan 27 Tue 6:00pm  Field #2   4  # 1 vs # 7 
Jan 29 Thu 6:30pm  Field #3   4  # 2 vs # 3 
Jan 29 Thu 6:30pm  Field #4   4  # 8 vs # 6 
Jan 29 Thu 6:30pm  Field #5   4  #10 vs # 4

Feb  3 Tue 6:00pm  Field #1   5  # 4 vs # 8 
Feb  3 Tue 6:00pm  Field #2   5  # 7 vs # 5 
Feb  5 Thu 6:30pm  Field #3   5  # 1 vs # 6 
Feb  5 Thu 6:30pm  Field #4   5  #10 vs # 2 
Feb  5 Thu 6:30pm  Field #5   5  # 3 vs # 9

Feb 10 Tue 6:00pm  Field #1   6  # 3 vs # 7 
Feb 10 Tue 6:00pm  Field #2   6  # 6 vs # 4 
Feb 12 Thu 6:30pm  Field #3   6  # 5 vs # 1 
Feb 12 Thu 6:30pm  Field #4   6  # 9 vs #10 
Feb 12 Thu 6:30pm  Field #5   6  # 8 vs # 2 

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

আমি আশা করি এটি আপনাকে এবং অন্যদের বুঝতে সাহায্য করে যে আমাদের বের করতে 3 বছর কী লেগেছে।

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