कार्य सौंपना


10

एक आरटीएस में जहां श्रमिकों को काम दिया जाता है जैसे कि दीवार का निर्माण, श्रमिक कैसे तय करते हैं कि किस दीवार का निर्माण करना है?

खिलाड़ी यह तय करता है कि कौन सी दीवारें कहाँ बनाई जानी हैं, लेकिन वे अलग-अलग श्रमिकों को अलग-अलग दीवार वर्गों को आवंटित नहीं करते हैं। कई आरटीएस खेलों में, कार्यकर्ता केवल उनके पास होने वाले कार्यों को करते हैं, लेकिन अपने आरटीएस में मैं मुख्य रणनीति के रूप में विशिष्ट वर्गों पर स्पष्ट कार्यों के रणनीतिक उपयोग का उपयोग करना चाहता हूं, इसलिए मैं नहीं चाहता कि डंबल कर्मी कहीं से क्लस्टरिंग करें और आगे के कार्यों को छोड़ दें। दूर नहीं किया।

मैं उदाहरण इमारत की दीवार का उपयोग करता हूं; यह खनन पत्थर हो सकता है, एक सड़क बना सकता है, लकड़ी एकत्र कर सकता है या जो भी हो। मुख्य बात यह है कि उपयोगकर्ता कहां, लेकिन नहीं।

श्रमिक केवल उन चौकों पर काम कर सकते हैं जो सुलभ वर्गों से सटे हैं; वर्गों वे खुद पर काम करते हैं जब तक काम पूरा नहीं हो सकता है अगम्य है।

यहाँ छवि विवरण दर्ज करें

श्रमिकों को 1 और 2 को वर्ग ए, बी, सी और डी के लिए कहा जाता है।

वे प्रति गेम-टिक में एक वर्ग को स्थानांतरित कर सकते हैं, और एक वर्ग के खनन में 10 टिक लगते हैं।

आप कैसे तय करते हैं कि कौन से कार्यकर्ता खानों को किस वर्ग में रखते हैं?

यह स्वयं स्पष्ट प्रतीत होता है कि 1 को मेरा और 2 को मेरा C चाहिए।

1, A से 4 वर्ग की दूरी पर है, इसलिए 14 टिक्स में इसका खनन समाप्त कर दिया है। 1 कहाँ जाना चाहिए, और क्यों?

और क्या होगा अगर बी के ऊपर सीधे एक और वर्ग - ई - का खनन किया जाए?

वह तर्क क्या है जो एक कार्यकर्ता यह तय करने के लिए उपयोग करता है कि आगे कहां बढ़ना है?


मैं इसके बजाय SO पर अपनी किस्मत आज़माऊंगा: stackoverflow.com/questions/18634701/assigning-worker-tasks - अगर कोई मॉड इतना दयालु हो सकता है कि उसे बंद / हटा सके?
विल

1
क्रॉस पोस्ट करना अच्छी बात नहीं है। आपने यहां जो किया है, वह उन सभी का समय बर्बाद कर रहा है, जिन्होंने आपको नीचे उत्तर दिया है। यह एसई साइटों का उपयोग करने के लिए एक बहुत ही स्वार्थी तरीका है।
MichaelHouse

जवाबों:


6

संसाधन नोड को व्यस्त के रूप में चिह्नित करें, या एक पेड़ द्वारा उपयोग किए जा सकने वाले श्रमिकों की संख्या को सीमित करें। यदि एक काम एक निश्चित बिंदु पर इकट्ठा करने के लिए सौंपा गया है, तो आप वास्तव में उन्हें क्या बता रहे हैं कि निकटतम उपलब्ध पेड़ की कटाई करना है।

इसके लिए दो मुख्य मार्ग हैं: एक यथार्थवादी दृष्टिकोण का मूल्यांकन और संसाधन शोरों को चिह्नित करने से पहले होगा। अजीब कतार वाले मुद्दों को रोकने के लिए, श्रमिकों को पेड़ों का मूल्यांकन करने के लिए एक दृष्टि सीमा दें। यह पैच पर चलते समय कार्यकर्ता को एक विशेष संसाधन नोड से संपर्क करने की अनुमति देता है। यह अनुकूलन के बारे में एक सीमित देता है।

हालांकि, कई आरटीएस (एससी और एससी 2) श्रमिकों के पास आने तक एक नोड का मूल्यांकन नहीं करते हैं। यह नेता एक संसाधन नोड मिलने तक भटकते रहते हैं। यह अधिक कौशल / अनुकूलन इनाम के लिए अनुमति देता है, (कभी-कभी भयानक कार्यकर्ता विभाजन देखें?) हालांकि, आपके अधिकांश खिलाड़ी बस बॉक्स में जा रहे हैं, क्लिक करें, और नाराज हो जाएं कि वे सभी पहले एक ही स्थान पर जाते हैं।

संसाधनों को कैसे वर्गीकृत किया जाता है, इसके आधार पर सटीक कार्यान्वयन अलग-अलग होगा। AoE में पेड़ और मछलियाँ लगातार फैलती हैं, इसलिए खेल के बढ़ने के साथ-साथ इकट्ठा होने वाले लोग बहुत दूर तक खत्म हो सकते हैं। लेकिन एससी और रेड अलर्ट संसाधनों जैसे गेम असतत पैच में स्थित हैं। तो एक कार्यकर्ता को केवल उस विशेष पैच के चारों ओर देखना होगा।

आपके संपादन के बाद EDIT: कार्यकर्ता अक्षमताओं पर बहुत अधिक जोर न दें। मैं किसी भी आरटीएस के बारे में सोच सकता हूं कि कार्यकर्ता अक्षमताएं हैं। खेल की तुलना में श्रमिक विभाजन जैसी चीजें अपने श्रमिकों को प्रबंधित करने में बेहतर होती हैं। मुझे लगता है कि आप इस पर एक प्रोग्रामर परिप्रेक्ष्य ले सकते हैं और एक डिजाइनर नहीं। सिंगल टिक लेफ्ट इश्यू को सिर्फ ट्विकिंग नंबरों के द्वारा काम किया जा सकता है और नोड्स को अलग-अलग ट्रिप में कटाई योग्य बनाया जा सकता है। कार्यकर्ता अक्षमताएं आपको घूर रही हैं, क्योंकि आप इसके पीछे की प्रणाली को जानते हैं। हालाँकि, यदि आपके प्ले टेस्टर ध्यान नहीं देते हैं, तो बहुत देर तक ध्यान न दें।


मैंने इस प्रश्न को स्पष्ट करने के लिए संपादित किया है कि मेरे आरटीएस में खिलाड़ी यह तय करता है कि किस फ़सल को कटाई करना है, और प्रत्येक मज़दूर को किस प्रकार का काम करना है, लेकिन यह नहीं जाना चाहिए कि कौन सा मज़दूर कहाँ जाता है।
विल

हां, मेरा खेल शायद इस बात पर अटूट है कि मैं चाहता हूं कि उपयोगकर्ता किस फसल को उठाए और इसके लिए वह बहुत रणनीतिक हो। लेकिन मैं यह नहीं चाहता कि उपयोगकर्ता को व्यक्तिगत काम करने के लिए माइक्रो-टास्क करना पड़े। मैंने प्रश्न के लिए एक चित्रण जोड़ा है।
विल

2

समाधान और एक विचार:

समाधान: आपके पास क्लिक करते समय एकत्रित नोड्स को एक कतार में रखा जा सकता है, फिर जैसे ही एक कतार के शीर्ष पर नौकरी बढ़ती है, श्रमिकों के लिए भारित कार्य कतार मान ढूंढें फिर निकटतम पड़ोसी को सर्वोत्तम भारित कार्य कतार मान के साथ खोजें कतार मूल्य)।

आपके उदाहरण में, आपके पास इष्टतम कतार मान 0 हो सकता है (वर्तमान कार्यों को लागू नहीं कर रहा है)। प्रत्येक वर्ग के लिए 1 से कतार मूल्य जोड़ें, उन्हें प्रत्येक कार्य के लिए यात्रा (यात्रा का समय) और 10 (कार्य करने का समय) करना होगा। समय की प्रत्येक इकाई के लिए प्रत्येक कार्यकर्ता की कतार मान से 1 निकालें (यदि कतार मूल्य शुरू करना 10 है तो समय की 3 इकाइयों के बाद कतार मान 7 होगा)। फिर आप उस काम को करने वाले कार्यकर्ता को खोजने के लिए निकटतम पड़ोसी (घटना में कई श्रमिकों के समकक्ष कतार मूल्य) पाते हैं।

तो आपके उदाहरण के लिए, वर्णमाला क्रम (AD) में कार्य कतार से एकत्रित नोड पॉप को मानते हुए और कतार पॉप करते समय कोई आंदोलन नहीं किया जाता है:

(values in format [total] = [preexisting value] + [current task distance])
A Pops: 
    queue value of 1: 4 = 0 + 4 
    queue value of 2: 19 = 0 + 19
    Assigned to 1.
B Pops:
    queue value of 1: 24 = 14 + 10 (distance to B from A) 
    queue value of 2: 9 = 0 + 9
    Assigned to 2.
C Pops:
    queue value of 1: 25 = 14 + 11
    queue value of 2: 20 = 19 + 1 
    Assigned to 2.
D Pops:
    queue value of 1: 36 = 25 + 11
    queue value of 2: 41 = 20 + 21
    Assigned to 1.

इस तरह से करने के लिए नकारात्मक: अत्यधिक कम्प्यूटेशनल।


विचार:

आपका गेम संसाधनों द्वारा अवरुद्ध होने से कैसे निपट सकता है? अगर वहाँ एक 4x4 ग्रिड मौजूद है, जहां हर नोड एक संसाधन है, तो क्या श्रमिक आंतरिक 4 नोड्स प्राप्त कर सकते हैं? यदि नहीं, तो सुनिश्चित करें कि कार्यकर्ता वहां जाने की कोशिश नहीं कर रहे हैं, लेकिन हो सकता है कि वे उन्हें एक अलग काम सौंपें और बाहरी नोड पूरा होने के बाद बाहर के नोड्स में से एक इकट्ठा करने वाले श्रमिकों में से एक को असाइन करें (पुट यह कार्यकर्ता के लिए एक कार्य कतार में है)।


हाँ, कुछ वर्ग संसाधन pf (अस्थाई रूप से) दुर्गम हो सकते हैं।
विल '

1

कुछ भार प्रणाली होने की कोशिश करें, कि यदि पेड़ को इकट्ठा किया जा रहा है, तो कुछ प्रकार के स्टैकिंग दंड की गणना करें और कुछ प्रकार के दूरी बोनस की भी। (लकड़ी के साथ बिंदु A-> B से प्राप्त करने में कितना समय लगता है, इत्यादि। फिर आप कुछ एल्गोरिथ्म कर सकते हैं जो निकटतम लकड़ी की जांच करता है, और यह वजन की जांच करता है, और फिर अगर यह तुलना है वांछनीय। और फिर सबसे कम वजन के साथ एक का उपयोग करें।

बेशक यह कुछ ठीक ट्यूनिंग की आवश्यकता है। लेकिन विचार सरल है।


1

प्रत्येक कार्य में ए) महत्व बी) असाइनमेंट स्टेटस (# सौंपे गए श्रमिकों का #) होना चाहिए।

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

कुछ नौकरियों को लंबे समय के लिए पूर्ववत करने से बचने के लिए (उदाहरण के लिए इसके बहुत दूर)। समय के साथ महत्व बढ़ना चाहिए। कटाई के मामले में महत्व इस बात पर भी निर्भर होना चाहिए कि उस समय कितने प्रकार के संसाधन उपलब्ध हैं / जरूरत है (उदाहरण के लिए एक इकाई में विभाजित इकाई द्वारा विभाजित इकाइयाँ)।

श्रमिकों को अपनी नौकरी बदलने के लिए जल्दी से बचने के लिए, उन्हें केवल अपनी वर्तमान नौकरी को बदलने दें, अगर इनाम काफी बेहतर हो (किसी दिए गए सीमा से)। इसके अलावा, आप नौकरी के लिए शुरुआती पैदल चलने के लिए दोगुनी लागत को लागू कर सकते हैं, जब प्रति समय मूल्यों के प्रतिफल की गणना करते हैं। इसके अलावा, आपको श्रमिकों को एक-दूसरे के बाद एक ही समय में सभी को नौकरी देने देना चाहिए, न कि एक ही समय में।

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

एल्गोरिथ्म को शायद थोड़ा अनुकूलित करने की आवश्यकता है, अगर आपकी नौकरियां केवल एक कार्यकर्ता को सौंपी जा सकती हैं। यदि यह मामला निम्नलिखित है: एक कार्यकर्ता प्रति समय उच्चतम इनाम के साथ काम चुनता है (महत्व व्यक्तिगत समय से विभाजित)। यदि कोई अन्य कार्यकर्ता प्रति बार एक उच्च अपेक्षित इनाम के साथ एक ही काम कर सकता है, तो वह वर्तमान में नियुक्त कार्यकर्ता को बंद कर देता है। नया "बेरोजगार" कार्यकर्ता फिर दूसरी नौकरी खोजने की कोशिश करता है। आपके उदाहरण में यह इस प्रकार हो सकता है:

  • "सी" का बहुत अधिक महत्व है। और कार्यकर्ता 1 खुद को "सी" के लिए असाइन करता है, यहां तक ​​कि वह बहुत दूर है।
  • वर्कर 2 को अगला सौंपा गया है और "सी" (कम चलने) के लिए प्रति बार एक उच्च इनाम है। इसलिए यह कर्मचारी को नौकरी से निकाल देता है और खुद को "सी" को सौंप देता है। इसमें समय खर्च नहीं हुआ, क्योंकि हम अभी भी उसी सिमुलेशन समय स्लाइस के भीतर हैं। तो उपयोगकर्ता को नौकरी का यह पुनर्मूल्यांकन नहीं दिखेगा।
  • वर्कर 1 फिर दूसरी नौकरी की तलाश में है। वर्कर 1 ने वर्कर 2 को "C" से नहीं हटाया, क्योंकि उसका प्रतिफल बेहतर नहीं है। इसलिए उसे "ए" या "बी" (महत्व के आधार पर) सौंपा गया है। फिर से, यह अभी भी उसी सिमुलेशन समय स्लाइस के भीतर है।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.