2009-12-10 32 views
14

हमने सभी को 'एक्स मिनट शेष' संवाद में मजाक उड़ाया है जो बहुत सरल लगता है, लेकिन हम इसे कैसे सुधार सकते हैं?अनुमान समापन समय/अनुमान लगाने का अनुमान

प्रभावी रूप से, इनपुट वर्तमान समय तक डाउनलोड गति का सेट है, और हमें निश्चितता के संकेत के साथ इसका उपयोग करने की आवश्यकता है, शायद निश्चित रूप से '20 -25 मिनट शेष' जैसे कुछ वाई का उपयोग करके % विश्वास अंतराल।

कोड जो इसे थोड़ा पुस्तकालय में रखा जा सकता है और पूरी तरह से परियोजनाओं में उपयोग किया जा सकता है, तो क्या यह वास्तव में मुश्किल है? आपको इसे कैसे करना होगा? पिछली डाउनलोड गति को आप क्या भार देंगे?

या क्या वहां कुछ ओपन सोर्स कोड पहले से मौजूद है?

संपादित करें: सारांश:

  1. बेहतर algo/फिल्टर आदि
  2. एक बार ('1h45-2h30 मिनट') के बजाय अंतराल प्रदान के माध्यम से में सुधार का अनुमान पूरा होने के समय, या बस (परिशुद्धता की सीमा 'लगभग दो घंटे')।
  3. प्रगति बंद होने पर इंगित करें - हालांकि अगर प्रगति लगातार स्टालों और फिर जारी रहती है, तो हम उससे निपटने में सक्षम होना चाहिए। शायद 'के बारे में 2 घंटे, वर्तमान में ठप'
+4

अनिवार्य xkcd संदर्भ: http://www.xkcd.com/612/ – jason

+0

http://stackoverflow.com/questions/933242/smart-progress-bar-eta-computation –

उत्तर

4

अधिक जानकारी की तुलना में वे की जरूरत है प्रदान करके आपके उपयोगकर्ताओं भ्रमित न हों। मैं विश्वास अंतराल के बारे में सोच रहा हूँ। इसे छोड़।

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

यदि आप शेष समय का सही अनुमान नहीं लगा सकते हैं, तो इस तरह के अनुमान की पेशकश करके अपने उपयोगकर्ता से झूठ मत बोलो।

यदि आपको पता है कि कितना डेटा डाउनलोड किया जाना चाहिए, आप% पूर्ण प्रगति प्रदान कर सकते हैं।

यदि आप बिल्कुल नहीं जानते हैं, तो "दिल की धड़कन" प्रदान करता है - चलती यूआई का एक टुकड़ा जो उपयोगकर्ता को दिखाता है कि चीजें काम कर रही हैं, यहां तक ​​कि आप नहीं जानते कि कितनी देर तक बनी हुई है।

+1

का डुप्लिकेट एक नहीं-पल-लेकिन - लगभग गति माप (पिछले 5 सेकंड?) यह बताने में काफी उपयोगी है कि यह ठीक से चल रहा है या नहीं। मैं यह नहीं कहता कि यह टेरा/पेटबाइट प्रति सेकेंड की सीमा में अनुमानित डाउनलोड गति देखने के लिए एक से अधिक बार हुआ है :) – Agos

+0

इस बात का उद्देश्य उपयोगकर्ता को दी गई जानकारी को * सुधारने के लिए काफी हद तक है। तो, झूठ को नहीं बताते कि अनुमान अत्यधिक सटीकता ("24 मिनट 4.2 शेष") द्वारा सटीक है, यह नहीं कह रहा कि यह अंतराल के बजाय एक मूल्य देकर अलग नहीं होगा, निश्चित रूप से यदि अनुमानक को पता चलता है कि अनुमानक इनपुट बहुत परिवर्तनीय है कि इसके बजाय यह संकेत कर सकते हैं। –

0

मैंने इसे बंद कर दिया है, स्वयं। मैं वर्तमान स्थिर (और इस प्रकार, भविष्य) स्थानांतरण दर की गणना करते समय रूढ़िवादी होने के साथ शुरू होता हूं, और अधिक स्थिर अनुमान प्राप्त करने के लिए लंबी अवधि में औसत शामिल करता है। शायद प्रदर्शित होने वाले समय को कम-पास फ़िल्टर करना, ताकि किसी को 2 मिनट और 2 दिनों के बीच कूद न मिले।

मुझे नहीं लगता कि आत्मविश्वास अंतराल सहायक होगा। अधिकांश लोग इसे समझने में सक्षम नहीं होंगे, और यह केवल अनुमान लगाए जाने वाले सामानों को प्रदर्शित करेगा।

+0

मुझे लगता है कि आत्मविश्वास का एक सरल संकेत काम करेगा, जैसे '20 -25 मिनट '। कम से कम यह '2 घंटे 16 मिनट' के बजाय 'लगभग 2 घंटे' आपूर्ति किए गए मूल्य की सटीकता को सीमित करने के लायक होगा। –

8

मुझे आश्चर्य है, क्या एक राज्य अनुमान तकनीक यहां अच्छे परिणाम देगा? कलमैन फ़िल्टर की तरह कुछ?

असल में आप अपने वर्तमान मॉडल को देखकर भविष्य की भविष्यवाणी करते हैं, और वास्तविक दुनिया में बदलावों को प्रतिबिंबित करने के लिए हर बार मॉडल को बदलते हैं। मुझे लगता है कि इस तरह की तकनीक का उपयोग आपके लैपटॉप बैटरी पर छोड़े गए समय का अनुमान लगाने के लिए किया जाता है, जो उपयोग के अनुसार भिन्न हो सकता है, बैटरी की उम्र इत्यादि। '

एल्गोरिदम के गहराई से विवरण के लिए http://en.wikipedia.org/wiki/Kalman_filter देखें।

फिल्टर भी एक विचरण उपाय है, जो अनुमान से संबंधित विश्वास इंगित करने के लिए इस्तेमाल किया जा सकता देता है (, allthough के रूप में अन्य उत्तर से उल्लेख किया गया था, यह नहीं सबसे अच्छा विचार अंत उपयोगकर्ता को यह दिखाने के लिए हो सकता है)

क्या किसी को पता है कि यह वास्तव में डाउनलोड (या फ़ाइल प्रति) अनुमान के लिए कहीं कहीं उपयोग किया जाता है?

+0

कलामन को आपको एक मॉडल प्रदान करने की आवश्यकता है, यह एक निर्माण नहीं करता है। यह वर्तमान (छुपा) राज्य को आजमाने और समझने के लिए, आप जो मॉडल देते हैं, और शोर माप का उपयोग करता है। –

+0

बेशक आपको एक मॉडल की ज़रूरत है, आप एक साधारण से शुरू कर सकते हैं जहां आप मानते हैं कि डाउनलोड दर स्थिर है, और फ़िल्टर सबूत के अनुसार डाउनलोड दर के मूल्य को अनुकूलित करेगा। – Yair

12

अधिक आम तौर पर, मुझे लगता है कि आप ट्रांसफर की गति के तत्काल मेसुर देने का एक तरीका ढूंढ रहे हैं, जिसे आम तौर पर एक छोटी अवधि में औसत से प्राप्त किया जाता है।

समस्या आम तौर पर प्रतिक्रियाशील होने के लिए होती है, अवधि आमतौर पर बहुत छोटी होती है, जो योयो प्रभाव को जन्म देती है।

मैं एक बहुत ही सरल योजना का प्रस्ताव दूंगा, चलो इसे मॉडल करें।

समय के साथ एक वक्र गति (वाई) के बारे में सोचें (x)।

  1. तत्काल गति, वर्तमान x (x0) के लिए y पढ़ने से अधिक नहीं है।

  2. औसत गति, कोई Integral(f(x), x in [x0-T,x0])/T की तुलना में अधिक

  3. योजना मेरा प्रस्ताव है एक फिल्टर लागू करने के लिए, अंतिम क्षणों के लिए अधिक वजन देने के लिए, जबकि अभी भी खाते में पिछले क्षणों लेने है।

यह आसानी से सतह टी

का एक सरल त्रिकोण है जो g(x,x0,T) = 2 * (x - x0) + 2T के रूप में लागू किया जा सकता है और अब आप Integral(f(x)*g(x,x0,T), x in [x0-T,x0])/T गणना कर सकता है, जो दोनों कार्यों हमेशा सकारात्मक रहे हैं, क्योंकि काम करना चाहिए।

बेशक आप एक अलग g कर सकते हैं जब तक कि यह हमेशा दिए गए अंतराल में सकारात्मक होता है और अंतराल पर इसका अभिन्न अंग टी है (ताकि इसका औसत औसत 1 हो)।

इस विधि का लाभ यह है कि क्योंकि आप तत्काल घटनाओं को अधिक वजन देते हैं, आप बड़े प्रतिक्रिया अंतराल पर विचार करते हैं, भले ही औसत अधिक सटीक और हिचकी के लिए कम संवेदनशील हो)।

इसके अलावा

, मैं शायद ही कभी क्या देखा लेकिन लगता है कि और अधिक सटीक अनुमान प्रदान करेंगे अनुमान शेष समय के लिए औसत की गणना के लिए इस्तेमाल किया समय सहसंबंधी होगा है

  • अगर मैं एक 5ko फाइल डाउनलोड, यह क्या हो रहा है एक पल में लोड होने के लिए,
  • का अनुमान लगाने की कोई आवश्यकता नहीं है यदि मैं 15 मो फ़ाइल डाउनलोड करता हूं, तो इसमें लगभग 2 मिनट लगेंगे, इसलिए मुझे अनुमान है कि हर 5 सेकंड में?
  • यदि मैं 1.5 गो फ़ाइल डाउनलोड करता हूं, तो यह लगभग 200 मिनट (उसी गति के साथ) ले जाएगा ...जो 3h20m कहना है ... शायद यह अनुमान हर मिनट पर्याप्त होगा?

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

+3

उत्कृष्ट, लेकिन अभिन्न अंग शायद अतिरंजित है। आइए बस इसे हाल के नमूने के भारित औसत कहते हैं। :-) –

+4

@ कोनराड: सच, यह गणितीय कठोरता के लिए था और वास्तविक कार्यान्वयन को इसे अनुमानित करने के लिए प्रोत्साहित किया जाता है ^^ –

2

अनुमानित समय में सुधार करना: सहजता से, मुझे लगता है कि शुद्ध कनेक्शन की गति कुछ अस्थायी औसत गति के आसपास यादृच्छिक मूल्यों की एक श्रृंखला है - चीजें एक गति से टिकती हैं, फिर अचानक धीमी या गति होती है।

एक विकल्प, तो कुछ घातीय द्वारा गति के पिछले सेट को वज़न देना हो सकता है, ताकि सबसे हाल के मूल्यों को सबसे मजबूत भार मिल सके। इस तरह, जैसा कि पिछली औसत गति अतीत में आगे बढ़ती है, वर्तमान प्रभाव पर इसका प्रभाव कम हो जाता है।

हालांकि, अगर गति यादृच्छिक रूप से उतार-चढ़ाव करती है, तो यह बहुत अधिक उतार-चढ़ाव से बचने के लिए घातीय (उदाहरण के लिए Gaussian filter का उपयोग करके) के शीर्ष को फ़्लैट करने योग्य हो सकता है।

तो कुल मिलाकर, मैं मानक विचलन (शायद अंतिम एन मिनट तक सीमित) को मापने और इनपुट का उपयोग करके गॉसियन फ़िल्टर उत्पन्न करने के लिए इसका उपयोग कर रहा हूं, और उसके बाद मानक का उपयोग करके उद्धृत परिशुद्धता को सीमित करना विचलन।

हालांकि, क्या आप पिछले एन मिनट में मानक विचलन गणना को सीमित करेंगे? आप कैसे जानते हैं कि उपयोग करने में कितना समय लगता है?

वैकल्पिक रूप से, यह पता लगाने के लिए पैटर्न पहचान संभावनाएं हैं कि क्या हमने स्थिर गति को मारा है।