我有一份N项目清单 每个项目都有货币价值 每件商品可以是3个品牌中的一个,每件商品可以是2种款式中的一种。
我想创建一种算法,用户可以在其中设置他们想要花费的特定金额,并设置他们希望创建符合所有条件的项目列表的每个品牌和体型的百分比。
例如,我想在电视上花费5万美元。我希望20%是索尼,50%是Visio,剩下的30%是三星。我希望其中75%至少为50“,另外25%将低于50”。还有一个硬限制百分比。因此,虽然我希望20%的索尼,我可以将硬限制设置为25%以允许余地,并使解决方案成为可能。
我正在寻找(最好)一个可扩展的方程式,以便轻松添加新的限制(例如我希望20%是智能电视)。我知道多种配置可能会解决这个问题,但必须有一种方法可以根据给定的一组项目来确定最佳解决方案。
我正在使用.NET这样的高级对象和LINQ很受欢迎。
目前我只能考虑满足一个要求并运行剩余变量的所有可能性,并为有效组合标记哈希表。这是耗时且耗费内存的,我想要更精简的算法。
提前感谢您提供任何帮助:)
编辑:澄清我想要帮助的是开发逻辑流程(伪代码)来解决这个问题,以便我可以把它放到代码中。我知道它类似于旅行商问题,但复杂性来自于添加规则。我希望那里的人能够用英语的逻辑和步骤方式进行清晰的阐述。我可以将它转换为代码。
答案 0 :(得分:0)
您可以搜索用于容纳包装容器中的算法或旅行销售人员问题的算法,因为您的问题类似于此。
快速而肮脏的方法是购买价格较高的产品,然后用价格较低的产品填补空白,这通常会为您提供足够好的解决方案;但如果您想拥有绝对最佳的解决方案,那么您需要运行所有可能性并选择最佳解决方案。