2013-02-23 80 views
0

我需要一些Web應用程序上的這個問題的幫助,以幫助我處理庫存管理。因此,讓我跑你通過細節:使用Javascript或Ruby對大小進行分類的算法

  • 每個產品都具有寬度和高度的大小尺寸(讓我們稱之爲sizeW和sizeH)和麪積(只是乘法的兩個維度)

  • 每產品需要被分類爲尺寸類別,讓我列出幾個:在總

  • 50×100, 80×150, 100×170,150 ×200, ..... 12類

    捕捉是每種產品都不是根據尺碼類別準確製作的,所以如果產品是55 x 96或44 x 105,那麼它將落入50 x 100類別。

我需要寫一個算法,可以將項目分類到相關的類別,但考慮到這些不規則的各種規模。我們不希望用戶手動輸入類別,因爲我們希望減少數據輸入時間,但是如果算法顯示錯誤或產品不符合標準類別,則用戶可以手動接管和更改/添加類別。

我真的很感激,如果你們可以給出關於這個問題的想法,應用程序是使用Rails在服務器端和Javascript在客戶端構建的。我寧願如果解決方案是在Javascript中,並讓瀏覽器處理算法,而不是把負載放在服務器上。

感謝,

烏默爾

+0

對我而言,這不是一個技術特定的問題,而是一個數學/一般CS問題。真正的工作在於找出算法,之後編程應該是微不足道的。 – Jesper 2013-02-23 23:04:22

+0

爲什麼55 x 96被表示爲50 x 100?因爲它是最接近的一個? – Kaeros 2013-02-23 23:06:20

+1

請嘗試準確描述您的規則,以確定產品屬於哪個類別。 – 2013-02-23 23:09:12

回答

1

如果類別的寬高比都相似,我會去與Kaeros給出的答案。但是,如果您的類別具有不同的高寬比,例如一個尺寸爲80 x 80的尺寸類別和另一個尺寸爲20 x 320的類別,則可能會出現一些非常奇怪的錯誤分類。

在我會使用每個類別和產品尺寸或之間的最小平方距離爲一個產品P此第二種情況下,C類最小化:

(C.height - P.height) +(C.width - P.width)

由於只有12的可能性來計算它不應該採取任何時候都,雖然Kaeros的回答具有能夠預先計算領域的優勢。

+0

感謝您的回答。這種方法確實幫助我解決了這個問題。 – umerh 2013-02-24 17:41:19

1

我會做這樣的事情(尋找區域)。 您也可以優化搜索,使其不會是線性的。

var categories { 
    names: ['50 x 100', '80 x 150', '100 x 170', '150 x 200'], 
    areas: [5000, 12000, 17000, 30000], 
    sizes: 4 
} 

function set_category(w, h) { 
    var area = w * h; 

    for(var i = 1; i < categories.sizes; i++) { 
    var diff1 = 0, 
     diff2 = 0; 

    if(area <= categories.areas[i]) { 
     diff1 = categories.areas[i] - area; 
     diff2 = area - categories.areas[i-1]; 

     if(diff1 < diff2) return categories.names[i]; 
     return categories.names[i-1]; 
    } 
    } 
} 
+0

感謝您的算法。我嘗試了幾個項目,但有時由於範圍非常接近而導致選擇不準確。通過將其改變到最小平方距離導致類別的準確選擇。感謝幫助,真的很感激它。 – umerh 2013-02-24 17:38:29

相關問題