बंद होने तक F9 दबाएं - एक्सेल टिप्स

विषय - सूची

किसी भी जटिल मॉडल को हल करने के लिए एक्सेल का उपयोग करना

लेव एक प्रतिस्पर्धी तैराकी लीग के आयुक्त हैं। वह लिखते हैं: "मैं एक तैराकी लीग का आयुक्त हूं। इस वर्ष आठ टीमें हैं। प्रत्येक टीम एक बैठक और घरेलू टीम की मेजबानी करती है। एक बैठक में 4 या 5 टीमें होंगी। शेड्यूल की व्यवस्था कैसे करें, इसलिए हर टीम के खिलाफ तैरता है। हर दूसरी टीम दो बार? अतीत में, जब हमारे पास 5, 6, या 7 टीमें थीं, तो मैं इसे एफ 9 को बंद करने तक दबाकर हल कर सकता था। लेकिन इस साल, 8 टीमों के साथ, यह बाहर नहीं आ रहा है। "

बाधाओं में से एक यह है कि कुछ पूल केवल 4 लेन की पेशकश करते हैं, इसलिए आपके पास केवल 4 टीमें हो सकती हैं जब वह पूल गाला की मेजबानी करता है। अन्य पूलों के लिए, उनके पास 5, 6 या अधिक गलियाँ हो सकती हैं, लेकिन आदर्श मिलन में घरेलू टीम के साथ चार अन्य भी होंगे।

मेरा सुझाव: प्रेस F9 तेजी से! इसके साथ मदद करने के लिए: अपने मॉडल में "निकटता का माप" विकसित करें। इस तरह, जब आप F9 दबाते हैं, तो आप एक नंबर पर अपनी नज़र रख सकते हैं। जब आपको सबसे अच्छा मिला "बेहतर" समाधान मिल जाता है, तो इसे मध्यवर्ती सर्वोत्तम समाधान के रूप में सहेजें।

तैरने की समस्या के लिए विशिष्ट कदम

  • शीर्ष पर 8 घरेलू टीमों की सूची बनाएं।
  • अन्य 4 लेन भरने के कितने तरीके हैं?
  • सभी तरीकों की सूची बनाएं।
  • अन्य 3 लेन (छोटे स्थानों के लिए) भरने के कितने तरीके हैं? सभी तरीकों की सूची बनाएं।
  • RANDBETWEEN(1,35)प्रत्येक मैच के लिए टीमों का चयन करने के लिए उपयोग करें ।

ध्यान दें कि सीजन को व्यवस्थित करने के लिए 35 8 संभावित तरीके हैं (2.2 ट्रिलियन)। उन सभी को एक होम पीसी के साथ करना "असंभव" होगा। यदि केवल 4000 संभावनाएं थीं, तो आप उन सभी को कर सकते हैं, और यह एक और दिन के लिए एक वीडियो है। लेकिन 2.2 ट्रिलियन संभावनाओं के साथ, बेतरतीब ढंग से अनुमान लगाने से समाधान खोजने की अधिक संभावना है।

निकटता का एक उपाय विकसित करना

तैरने के परिदृश्य में, सबसे महत्वपूर्ण बात यह है कि क्या हर टीम दो बार हर दूसरी टीम के खिलाफ तैरती है?

वर्तमान 8 रैंडम नंबरों को लें और सभी मैच-अप्स को प्लॉट करने के लिए फॉर्मूले का उपयोग करें। 28 संभावित मैच अप की सूची बनाएं। COUNTIFवर्तमान यादृच्छिक संख्याओं के साथ प्रत्येक मैच-अप कितनी बार हो रहा है, यह देखने के लिए उपयोग करें । गिनें कि कितने 2 या अधिक हैं। इस संख्या को 28 तक पहुंचाने का लक्ष्य है।

सेकेंडरी गोल: 28 मैचअप होते हैं। प्रत्येक को दो बार होने की आवश्यकता है। जो कि 56 मैचअप होने हैं। 8 पूल और 5 लेन के साथ 6 के साथ, आपके पास 68 मैचअप होंगे। इसका मतलब है कि कुछ टीमें अन्य टीमों के खिलाफ 3 बार और संभवतः 4 बार तैरेंगी। माध्यमिक लक्ष्य: सुनिश्चित करें कि जितनी संभव हो उतने टीमें 4 मैच-अप हों। तृतीयक लक्ष्य: अधिकतम को कम करें।

इसे हल करने का धीमा तरीका

F9 दबाएं। परिणाम को देखो। यह देखने के लिए कि आपको क्या परिणाम मिल रहे हैं, कुछ समय के लिए F9 दबाएं। जब आप एक उच्च परिणाम प्राप्त करते हैं, तो 8 इनपुट और तीन आउटपुट चर को बचाएं। बेहतर परिणाम प्राप्त होने तक F9 को दबाए रखें। 8 इनपुट कोशिकाओं और 3 परिणाम कोशिकाओं को रिकॉर्ड करके उस एक को बचाएं।

वर्तमान परिणाम को बचाने के लिए मैक्रो

यह मैक्रो परिणाम को अगली पंक्ति में सहेजता है।

Sub SaveThis() NR = Range("Z1048576").End(xlUp).Row + 1 Cells(NR, 26).Resize(1, 11).Value = Array(Range("c8").Value, _ Range("D8").Value, Range("E8").Value, Range("F8").Value, _ Range("G8").Value, Range("H8").Value, Range("I8").Value, _ Range("J8").Value, Range("O1").Value, Range("P1").Value, _ Range("Q1").Value) End Sub

मैक्रो एफ 9 को बार-बार दबाने और परिणामों की जांच करने के लिए

F9 को बार-बार दबाने के लिए एक मैक्रो लिखें, केवल "बेहतर" समाधान लॉगिंग करें। 28 और 0 के वांछित परिणाम प्राप्त करने पर मैक्रो स्टॉप लें।

Sub TrySome() NR = Range("Z1048576").End(xlUp).Row + 1 Ctr = Range("T1").Value Application.ScreenUpdating = Range("AH2").Value SolutionFound = False GoAgain: ActiveSheet.Calculate Ctr = Ctr + 1 UseIt = 0 If Range("O1").Value> Range("AK1").Value Then UseIt = 1 ElseIf Range("O1").Value = Range("AK1").Value Then If Range("P1").Value 300 Then Application.ScreenUpdating = True Exit Sub End If If SolutionFound = True Then Application.ScreenUpdating = True Exit Sub End If If Ctr Mod 1000 = 0 Then Range("T1").Value = Ctr Application.ScreenUpdating = True If Selection.Address = "$T$1" Then Cells(NR, 34).Select Else Range("T1").Select End If Application.ScreenUpdating = Range("AH2").Value End If GoTo GoAgain End Sub

स्क्रीनअप के बारे में साइडबार

साइडबार: सबसे पहले, यह पुनरावृत्तियों को देखने के लिए "मज़ेदार" है। लेकिन आप अंततः महसूस करते हैं कि आपको लाखों संभावनाओं का परीक्षण करना पड़ सकता है। एक्सेल को फिर से ड्रा करने से स्क्रीन मैक्रो को धीमा कर देती है। Application.ScreenUpdating का उपयोग करें = स्क्रीन को फिर से पेंट न करने के लिए गलत।

हर बार जब आपको कोई नया उत्तर या हर 1000 मिलता है, तो एक्सेल को स्क्रीन पर फिर से ड्रा करें। समस्या: जब तक सेल पॉइंटर पॉइंटर नहीं चलता है तब तक एक्सेल स्क्रीन को दोबारा नहीं करता है। मैंने पाया कि ScreenUpdating True है, जबकि एक नई सेल का चयन करके, Excel स्क्रीन को फिर से पेंट करेगा। मैंने इसे काउंटर सेल और बेस्ट रिजल्ट्स सो फार के बीच वैकल्पिक करने का फैसला किया।

Application.ScreenUpdating = True If Selection.Address = "$T$1" Then Cells(NR, 34).Select Else Range("T1").Select End If Application.ScreenUpdating = Range("AH2").Value

वैकल्पिक हल समाधान

मैंने इस वीडियो के लिए कई शीर्षक पर विचार किया: प्रेस F9 तक क्लोज, सही तक अनुमान, ब्रूट फोर्स सॉल्विंग, क्लोजनेस का उपाय

ध्यान दें कि मैंने समस्या को हल करने के लिए सॉल्वर का उपयोग करने का प्रयास किया। लेकिन सॉल्वर पास नहीं हो सका। लक्ष्य 28 होने पर यह कभी 26 टीमों से बेहतर नहीं हुआ।

यह भी ध्यान दें कि इस वीडियो में मुझे जो भी समाधान मिलता है वह "गूंगा-भाग्य" है। सुलझाने की विधि के बारे में कुछ भी समझदारी नहीं है। उदाहरण के लिए, मैक्रो नहीं कहता है, "हमें अब तक के सबसे अच्छे समाधान से शुरू करना चाहिए और कुछ सूक्ष्म समायोजन करने चाहिए।" यहां तक ​​कि अगर आपको गेटा समाधान है जो केवल एक नंबर की दूरी पर है, तो यह नेत्रहीन एफ 9 को फिर से दबाता है। समस्या पर हमला करने के लिए अधिक बुद्धिमान तरीका होने की संभावना है। लेकिन … अभी … हमारे तैराकी आयुक्त के लिए, इस दृष्टिकोण ने काम किया।

वर्कबुक डाउनलोड करें

वीडियो देखेंा

फ़ाइल डाउनलोड करें

यहाँ नमूना फ़ाइल डाउनलोड करें: Podcast2180.zip

दिलचस्प लेख...