2011-08-16 23 views
5

मेरे पास शेड्यूलिंग समस्या है जहां नई नौकरियां (कार्यों का सेट जिसका निष्पादन अनुक्रमिक रूप से कनेक्ट होता है) हर कुछ सेकंड या उससे भी अधिक तक पहुंचते हैं।
प्रत्येक नौकरी के लिए ज्ञात अंतराल पर आवंटित कुछ संसाधनों की आवश्यकता होती है।
उदाहरण के लिए: शेड्यूलिंग एल्गोरिदम

  • TD1 लंबाई है

    r1:[t0 .. t1=t0+td1], 
    r2:[t2=t1+td2+i2 .. t3=t2+td3] 
    
    • t0 जा रहा है निष्पादन की शुरुआत समय:
      नौकरी j1 कार्यों जिसके लिए हम संसाधनों एक ज्ञात शेड्यूलिंग तर्ज पर {r1, r2, r3} आरक्षित का एक सेट है आर 1
    • टी 1 के लिए संसाधन आवंटन का आर 1
    • i1 की लंबाई आवंटन का अंतिम समय है आर 1, आर 2 और इतने पर इंतजार कर रहे हैं।

    schedule example
    उदाहरण में, एक नया काम J2 अनुसूचित किया जा रहा है सही होने के बाद J1 निष्पादन शुरू कर दिया है। जे 2 के लिए सबसे शुरुआती प्रारंभ समय टी 1 है। नौकरी में कुछ मिनट लग सकते हैं जिनमें से अधिकांश प्रतीक्षा में शामिल हैं।

    मेरे पास एक शेड्यूलर है जो वर्तमान आरक्षण तालिका को देखता है और तय करता है कि निश्चित आवंटन समय और प्रतीक्षा अवधि के साथ एक नई नौकरी के लिए सबसे शुरुआती प्रारंभिक पल कौन सा है और तदनुसार आरक्षण करता है।

    (लेकिन हकीकत में, प्रतीक्षा अवधि को वास्तव में ठीक करने की आवश्यकता नहीं है - लेकिन कुछ प्रतिशत (शायद 5%) के भीतर और संसाधन उपयोग के विकल्प हो सकते हैं, उदाहरण के लिए, यदि संसाधन आर 3.1 बुक किया गया है, तो 3.2 को एक ही चीज़ प्राप्त करने के लिए उपयोग किया जा सकता है।)

    हालांकि, यदि शेड्यूलर आवश्यक है (हाँ, यह सुझाव दिया गया है) जब सभी नौकरी अधिकतम करने के लिए आने पर सभी शेड्यूल आवंटन को गतिशील रूप से समायोजित करने में सक्षम हो कुल कार्य (एक दिन में) इस तथ्य का लाभ उठाकर कि प्रतीक्षा समय को बिल्कुल ठीक नहीं किया जाना चाहिए और कुछ रिज्रोस डुप्लिकेट (3.1/3.2) के साथ समानांतर निष्पादन की संभावना है, तो मैं पूरी तरह से अलग दिख रहा हूं शेड्यूलिंग योजना (मेरे वर्तमान स्टार्ट-ए-जल्द-जल्द-संभव दृष्टिकोण से)।

    1. तब आप किस शेड्यूलिंग योजना को कॉल करेंगे?
    2. (नई) समस्या के करीब आने पर कोई सुझाव?
  • उत्तर

    1

    "उपयोग संसाधन के लिए विकल्प" के बारे में अपने प्रश्न के लिए के रूप में:

    पैटर्न सबसे अधिक समस्या की इस प्रकार की से निपटने के लिए लागू किया इस के लिए Object Pool Pattern
    सबसे व्यापक रूप से ज्ञात उदाहरण शायद ThreadPool

    है

    मेरा सुझाव है कि आप कक्षा को int GetResource(ResourceType type, int durationInSeconds) विधि के साथ कार्यान्वित करें। वापसी मूल्य इंगित करता है कि दिए गए ResourceType का अगला संसाधन

    0

    आप आरसीपीएसपी (संसाधन प्रतिबंधित परियोजना निर्धारण समस्या) से निपट सकते हैं। समाधान तकनीक पूर्णांक प्रोग्रामिंग और बाधा प्रोग्रामिंग से विभिन्न हेरिस्टिक्स तक है।तकनीक ऐसी योजना बना क्षितिज, कैसे कार्य/jobs/शेयर संसाधनों का उपयोग, आदि कितनी तेजी से आप एक समाधान अनुसूची की जरूरत के रूप में विवरण निर्भर करता है

    देखें:

    https://developers.google.com/optimization/scheduling/job_shop

    http://www.laas.fr/files/ROC/2014-Presentations/MILP-RCPSP-PMS2014.pdf

    संबंधित मुद्दे