SORU
1 HAZİRAN 2009, PAZARTESİ


Bar ETA hesaplama akıllı ilerleme

Birçok uygulamada, bazı ilerlemeler dosya indirmek için bar, vb bir arama için sıkıştırma için bir görev var. Hepimiz sık sık ilerleme çubukları kullanıcılar bir şeyler oluyor bildirmek için kullanın. Ve bildiğimiz bazı detaylar gibi ne kadar çok iş yapıldı ve ne kadar sola yapabiliriz, hatta bir tahmin, sık götürdüğümüzde itibaren ne kadar zaman alınır için geçerli ilerleme düzeyi.

compression ETA screenshot

Ama aynı zamanda bu Sefer "görüntü gülünç kötü sadece." ETA Sol hangi programlar gördük Dosya kopyalama işlemi 20 saniye içinde yapılacağı iddia, bir saniye sonra da 4 gün, yine titriyor sonra 20 dakika sürer " diyor. Sadece işe yaramaz değil, kafa karıştırıyor! ETA çok değişir nedeni ilerleme hızını kendisi değişebilir ve programcı matematik aşırı hassas olabilir.

Apple sadece herhangi bir doğru tahmin kaçınarak ve sadece belirsiz tahminler vererek bu sidesteps! Apple's vague evasion

Bu can sıkıcı, kısa bir mola vermek için zamanım var mı, ya da benim görev daha 2 saniye içinde bitmiş olacak mı? Eğer tahmini çok bulanık, anlamsız herhangi bir tahmin yapmak.

Kolay ama yanlış bir yöntem

Bir ilk geçişte ETA hesaplama, muhtemelen hepimiz sadece bir fonksiyon gibi Eğer p kesirli yüzdesi bu iş bitti zaten, ve t zamanı almış şimdiye kadar, biz çıkış t*(1-p)/p olarak tahmini ne kadar sürer bitirmek. Bu basit oran" ama aynı zamanda özellikle hesaplama sonunda korkunç. "TAMAM çalışır Eğer yavaş indirme hızı tutar bir kopyasını yavaş ilerleyen bir gecede oluyor, ve nihayet bu sabah, bir şey devreye girer ve kopyalama başlar tam hızda 100 KEZ daha hızlı, tahmini varış süresi 90% yapmış olabilir ki "1 saat" ve 10 saniye sonra sen de 'i ve ETA diyecek "30 dakika" açıkça bir embarassingly kötü sanırım.. bu durumda "10 saniye" çok, çok, çok daha iyi tahmin.

Bu durumda kullanmak için hesaplama değiştirmek için düşünebilirsinizsonETA tahmin etmek için hız, ortalama hız,. Son 10 saniye üzerinden ortalama indirme hızı ve tamamlanma oranı bu oran tamamlama nasıl olacak proje için kullanın. Sonunda çok iyi bir final tamamlama tahminleri verecektir beri önceki-indir---hızlandırdı---sonunda bir gecede çok iyi örnek bir performans sergiliyor. Ama bu hala büyük sorunlar var.. neden senin ETA sıçrama çılgınca zaman hızı değişir hızlı bir şekilde kısa bir süre, ve "bitti 20 saniye sonra bitti 2 saat, 2 saniye içinde bitti, bitti 30 dakika" hızlı ekran programlama ayıp.

Asıl soru:

Hesaplama ne zaman tarih verilen bir görevin tamamlanma tahmini süresi hesaplamak için en iyi yolu nedir? Bağlantılar araci veya Qt kütüphaneleri GUI için aramıyorum. Soruyorumalgoritmaaklı başında ve doğru tamamlanma süresi en oluşturmak için tahmin ediyor.

Matematik formülleri ile başarı elde ettiniz mi? Ortalama bir çeşit, 1 saatten fazla oranı ile belki de 1 oranı ile 10 saniye içinde oranı ortalama kullanarak dakika? Yapay bir çeşit filtreleme "eğer yeni tahminim çok fazla bir önceki tahminine göre değişir, sesi KIS, çok fazla sıçrama izin verme" mi? Zaman ilerlemesine karşı ilerleme oranı standart sapma tamamlanması üzerine istatistiksel hata ölçümlerini vermek için bulmak için entegre nerede süslü tarihi analizi falan mı?

Ve en iyi ne çalışır? neler denedin

CEVAP
1 HAZİRAN 2009, PAZARTESİ


Orijinal Cevap

Bu siteyi yaratan şirketin 2* *çalışanlar kod yazmayı bağlamında bu sorunun cevabının bir zamanlama sistemi. İşler böyle gelecekte geçmişe dayalı Monte Carlo simülasyonu ile.

Ek: Monte Carlo Açıklaması

Bu algoritma bu durum nasıl olacak

Sen microtasks dizisi olarak Senin görevin modeli, söyle onlara 1000. Bir saat sonra sanırım 100 tamamlandı. Şimdi rasgele 90 tamamlandı microtasks seçerek, onların kat ekleme ve 10 ile çarpılarak kalan 900 adımları için simülasyon çalıştırın. Burada bir tahmin; N kez tekrarlayın ve kalan süre için tahminler N var. Bu tahminler arasında ortalama olarak yaklaşık 9 saat -- sürprizler burada olacak unutmayın. Ama dürüst olmak gerekirse onun için oran iletişim olacak kullanıcı için dağıtım çıkan sunarak, örneğin 'ihtimali 'ı bu başka 3-15 saat sürer'

Bu algoritma, tanımı gereği, eğer söz konusu görev bir grup olarak modellenmiş olabilir eğer tam sonucu verir . ben^>bağımsız, rastgelemicrotasks. Sen-ebilmek kazanmak daha iyi bir cevap sadece sen bilirsin nasıl görev yapanlar bu model: örneğin, kurucular genellikle bir indirme/açma/yükleme görev listesi ve hız için bir tahmin edemiyor.

Ek: Basitleştirilmesi Monte Carlo

İstatistik gurusu değilim, ama eğer bu yöntemi simülasyon içine daha yakından bakarsanız, her zaman bağımsız değişkenlerin çok sayıda toplamı olarak normal bir dağılım dönecektir bence. Bu nedenle, bunu yapmak gerekmez. Aslında, hatta onların tek sayının toplamı ve bunların toplamı ihtiyaç duyacağınız tüm tamamlanmış saatleri mağazaya gerek yok.

Belki standart gösterimde çok değil

sigma = sqrt ( sum_of_times_squared-sum_of_times^2 )
scaling = 900/100          // that is (totalSteps - elapsedSteps) / elapsedSteps
lowerBound = sum_of_times*scaling - 3*sigma*sqrt(scaling)
upperBound = sum_of_times*scaling   3*sigma*sqrt(scaling)

Bu, çıkış iletisi söyleyerek o şeyin sona ereceğini arasında [lowerBound, upperBound] şimdi bazı sabit olasılık (olması lazım) yaklaşık 'i, ama ben muhtemelen cevapsız bazı sabit faktörü).

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Britec09

    Britec09

    4 Mart 2009
  • Deany Boii

    Deany Boii

    27 Kasım 2007
  • undrmyumbrellaa

    undrmyumbrel

    25 Temmuz 2012