我正在开展一个有趣的项目,但它最终导致了一个我无法解决的难以解决的问题。所以这是一个两部分的问题
我在日常生活中遇到的大多数算法通常看起来很简单,只是涉及问题分解/简化,并且几乎总能在最坏的情况下用暴力解决。这个问题不同。
A
- Acme公司生产各种不同的组件 (从基本电路板到完整电脑的所有内容)
- 每个组件定义为由零件或其他组件构成
- Acme不定期收到供应商的零件
- 每个组件都有一个优先级(可能更重要的是构建 主板比显示器)
- 醇>
优先级可以根据约束(例如,如果有)进行更改 库存少于3台显示器,等待部件构建显示器)
问:Acme应该构建什么?
我认为解决这个问题的一种可能方法是将所有不同组件的树组织起来,使得最高优先级的项目位于顶部。根据优先级遍历每个节点,并在每个节点上检查是否需要等待此组件的部件,或者是否可以构建下一个较低优先级的项目。我甚至可以根据已构建的内容在优先级树上上下移动组件。摆弄这个想法,我想我可以得到一些工作。可能有许多有效的解决方案,但我只需要返回一个有效的集合。
但是,如果我想让问题更加真实,我还有其他功能
B中。
- 每个组件都需要部件+工具+人力资源来构建。
醇>
我认为这可以与第一种情况类似地解决,工具和人力资源只是消耗性部件。但现在变得艰难
C
- 每个部分,工具,人力资源都有某种品质 与之相关的
- 质量下降需要更多时间来制作
- 时间是根据零件,工具和人之间的某种关系来定义的 资源......所以,如果你有良好的人力资源和良好的工具,时间 将会比你有糟糕的资源和糟糕的工具少。
- 可能会有数量有限的工具/人员需要安排
醇>问题可以调整到我们应该在下个月建立什么
经验丰富的算法开发人员将如何解决此问题?
答案 0 :(得分:1)
听起来每个项目都有与之相关的绝对成本,其中包括其他项目,资源和优先级的成本。能够计算每个项目的成本并选择具有最低或最高成本的项目(取决于您如何看待它)将产生项目的构建顺序。但是,我担心计算这种“主”成本的公式会因情况而异,只有了解完整的规格才有助于建立公式。即便如此,您可能需要动态调整以优化效率。