2013-02-23 32 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

相关问题