【问题标题】:Modelling combinatorial optimization? problem建模组合优化?问题
【发布时间】:2010-08-10 18:10:13
【问题描述】:

我无法将这个问题与某个规范问题相匹配,我想要一些指南来构建/使用算法并解决它。说明如下:


我们有些人想吃早餐。每个人都可以点任意数量的咖啡、果汁和吐司。我们为所有组累积订单。

InitialOrder = { C1, J1, T1 } with C1, J1, T1 being integer non-negative numbers.

每个组件都有一个给定的价格,所以初始订单的总价格是

InitialPrice = C1 * Pc + J1 * Pj + T1 * Pt with Pc, Pj, Pt being rational positive numbers

自助餐厅还提供由标准项目组合组成的“早餐菜单”

全套早餐 = 咖啡 + 果汁 + 吐司
普通早餐=咖啡+吐司
面包早餐= 2吐司

选择这些菜单比单独选择每个组件要便宜,所以我们有

Pf 

人们希望将初始订单分组到菜单中,以最大限度地减少总花费。那么

FinalOrder = { C2, J2, T2, F, N, B } with C2, J2, T2, F, N, B integer non-negative numbers

我们会有一个 FinalPrice

FinalPrice = C2 * Pc + J2 * Pj + T2 * Pt + F * Pf + N * Pn + B * Pb with Pc, Pj, Pt, Pf, Pn, Pb as rational positive numbers

所有价格(Pc、Pj、Pt、Pf、Pn 和 Pb)都是预先知道的。


请问,您知道我应该遵循哪种方法来构建算法以最小化给定 InitialOrder 的 FinalPrice?请随时询问您需要的更多详细信息。

提前谢谢你。

【问题讨论】:

    标签: algorithm theory puzzle combinatorics


    【解决方案1】:

    这看起来像是 Linear Integer Programming 问题。

    在给定线性约束(必须与初始订单匹配)的情况下,您需要最小化六个变量和一个线性方程(用于最终价格)。限制是变量是非负的并且取整数值。

    例如,在您的示例情况下,它将是(我假设您的实际问题比您的示例更复杂 :-))

    最小化

    C2 * Pc + J2 * Pj + T2 * Pt + F * Pf + N * Pn + B * Pb
    

    (如果需要,将 Pc 等与合适的整数相乘以使其成为整数)

    受制于

       C2 + F + N = C1
       T2 + F + N + 2B = T1
       J2 + F = J1
    

    在一般情况下,整数规划是 NP-Hard,但考虑到问题的规模和约束条件较小,标准求解技术可能会很快为您解决。

    希望对您有所帮助。

    【讨论】:

    • 如果我错了,请原谅,但我认为最终的六个变量不是独立的(菜单由项目组成)。是否可以将此限制建模到 LIP 中?
    • @antispam:是的,这就是我所说的限制。我将编辑答案以使其更清晰。
    • 我将尝试遵循这个方向并用我的发现更新问题。谢谢!
    • 经过一些成功的测试后,我将使用单纯形法求解线性松弛,然后分支定界寻找整数解,因为变量不多。
    • @anti:很高兴你的测试成功了。希望您使用的是已经编写的众多求解器之一:-)
    【解决方案2】:

    如果您不想全力以赴(整数线性规划,这是一个相当复杂的领域),请考虑使用分支定界的穷举树搜索。 BnB 本质上是深度优先搜索,您可以在当前分支的成本大于或等于您迄今为止找到的最佳解决方案的任何点回溯。

    不过,正如 Moron 所说,对于任何大问题,您都需要 ILP。

    【讨论】:

    • 最后我将在单纯形后使用 B&B 来搜索整数解。感谢您的回复。
    • 您可能应该尝试使用 B&B 进行香草深度优先搜索,看看是否足够快地找到结果。从 LP 解决方案转变为整数解决方案是一种魔法,并且是一个巨大的研究领域。如果您正在寻找高质量的免费 ILP 求解器,请查看 SCIP (scip.zib.de)。
    【解决方案3】:

    由于您的问题与装箱(或至少是它的矢量版本)密切相关,因此一些相关的启发式方法也可能会派上用场。具体来说,一个贪婪的启发式方法,你首先贪婪地打包全套早餐(或 2 * 正常 + 吐司,取决于相对成本),然后继续这种方式,可能就足够了。

    【讨论】:

    • 根据价格,它可能没有最优的子结构,因此有可能获得次优的解决方案。无论如何,谢谢你的建议。
    猜你喜欢
    • 2023-02-25
    • 1970-01-01
    • 2014-07-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多