Ruby on rails 需要帮助最大化多个相似对象中的3个因素并适当排序

Ruby on rails 需要帮助最大化多个相似对象中的3个因素并适当排序,ruby-on-rails,ruby,arrays,algorithm,math,Ruby On Rails,Ruby,Arrays,Algorithm,Math,我需要用任何语言编写一个算法,根据3个因素对数组进行排序。我以度假村为例(比如Hipmunk)。假设我想去度假。我想要最便宜、评论最好、最吸引人的景点。然而,很明显,我无法找到一个在所有3个项目中都是1的项目 示例(假设有20个重要景点): 度假胜地A:$150/晚…好评率为98/100…20个景点中的18个 度假酒店B:$99/晚…好评为85/100…20个景点中的12个 度假村C:$120/晚…好评91/100…20个景点中的16个 度假酒店B在价格上看起来最吸引人,但在其他两个类别中排名第

我需要用任何语言编写一个算法,根据3个因素对数组进行排序。我以度假村为例(比如Hipmunk)。假设我想去度假。我想要最便宜、评论最好、最吸引人的景点。然而,很明显,我无法找到一个在所有3个项目中都是1的项目

示例(假设有20个重要景点):

度假胜地A:$150/晚…好评率为98/100…20个景点中的18个
度假酒店B:$99/晚…好评为85/100…20个景点中的12个
度假村C:$120/晚…好评91/100…20个景点中的16个

度假酒店B在价格上看起来最吸引人,但在其他两个类别中排名第三。其中,我可以选择度假村C,每晚只需多花21美元,就能获得更多的景点和更好的评论。价格对我来说仍然很重要,但度假胜地A有着杰出的评论和大量的景点:51美元的花费值得吗

我希望能够填充一个列表,将lit从“最佳到最差”排序(我引用bc,这是消费者的主观判断)。我将如何最大限度地提高每个度假村的价值

  • 我是否应该对每个因素(即:55%的价格、30%的评论、15%的便利设施)进行加权,然后得出一个固定数字的结果,并按照这种方式进行排序
  • 我是否需要所有酒店的模式、中位数和范围,并确定平均价格,以及平均价格附近的酒店是否拥有最大的权重

如果有点困惑,请访问www.hipmunk.com。他们有一种被称为“痛苦”的飞机(还有一种类似于我的问题的旅馆),他们自己使用。我以度假村为例,希望能让我的问题更有意义。如何用数学来解决这样的问题呢?

如何使用可变权重,并让用户通过一些输入(如杠杆)来调整权重,以便动态更新排序顺序?

我正要讨论多因素加权排序,因为我的研究只给出了答案(例如,带有解释的公式)用于双因素排序

尽管我们都在问3个因素,我还是会列出我发现的可能,以防它们有用

可能性:

注意:
S
是“排序分数”,这是您排序的依据(asc或desc)

  • “线性加权”-使用如下函数:
    S=(w1*F1)+(w2*F2)+(w3*F3)
    ,其中
    wx
    是任意分配的权重,
    Fx
    是因子的值。您还需要规范化
    F
    (即
    Fx\u n=Fx/Fmax
  • “基数N加权”-更像是分组而不是加权,它只是一种线性加权,其中权重是基数10的倍数(与原理类似),因此更重要的因子明显更高:
    s=1000*F1+100*F2…
  • 估计真实值(ETV)-这显然是一个因素的值影响(权重)另一个因素的原因-结果是对更“统计显著”的值进行排序。链接很好地解释了这一点,所以这里只有一个等式:
    s=(F2/F2_max*F1)+(1-(F2/F2_max))*F1_avg)
    ,其中
    F1
    是“更重要”的因素(“文章中的反弹率”),而
    F2
    是“显著性修改”因素(“文章中的访问”)
  • 贝叶斯估计值看起来与ETV非常相似,这是IMDb计算评级的方式。看见方程:
    S=(F2/(F2+F2_-lim))*F1+(F2_-lim/(F2+F2_-lim))×F1_平均值
    ,其中
    Fx
    与#3相同,
    F2_-lim
    是“显著性”因子的最小阈值限制(即不应考虑任何小于X的值)
  • 选项#3和#4看起来很有希望,因为你真的不必像#1和#2那样选择任意的权重方案,但问题是如何在两个以上的因素下实现这一点

    在您的情况下,在#1中指定权重可能会很好。你需要根据用户认为更重要的方法来调整算法——你可以将权重 Wx>代码>作为过滤器(比如1-10下拉),这样你的用户可以即时调整他们的搜索。或者,如果您想变得更聪明,您可以在用户搜索之前对其进行投票(“哪个对您更重要?”),然后根据响应分配权重集,在跟踪足够多的投票后,您可以根据大多数响应自动建议权重方案


    希望这能让你走上正轨。

    没有一种真正正确的方法可以做到这一点,因为每个人对这些因素的权重都不同。你可以试着找出普通人喜欢什么,或者某个特定的人喜欢什么,但在一般情况下,没有一个真正的衡量标准能够反映这一点。