假设有5个组件,并且每个组件都有随机供应:
-------------------
| Comp | Quantity |
|------|----------|
| C1 | 500 |
| C2 | 700 |
| C3 | 400 |
| C4 | 1000 |
| C5 | 850 |
-------------------
我的工厂可以生产25种不同的产品,每种产品需要不同数量的每种成分:
--------------------------------------------
| Product | Price | C1 | C2 | C3 | C4 | C5 |
|---------|-------|----|----|----|----|----|
| P1 | $450 | 6 | 7 | 2 | 9 | 4 |
| P2 | $300 | 8 | 5 | 3 | 3 | 7 |
| P3 | $100 | 2 | 4 | 9 | 4 | 6 |
| P4 | $500 | 4 | 1 | 0 | 9 | 8 |
| .. | .. | .. | .. | .. | .. | .. |
--------------------------------------------
我需要确定我需要制造每种产品中的多少种,以便在不超出每种成分供应的情况下最大化最终收益?
到目前为止,我已经编写了最好的算法,循环遍历每种产品,找到可以生产的最大数量,然后选择收益最高(价格*最大数量)的产品,然后从列表中删除该产品并减去供应中的组件数量,然后对其余产品重复该过程。
这是我到目前为止拥有的伪代码:
foreach (var product in productList)
{
product.MaxQty = MaxQty(product, supply);
product.Revenue = product.Price * product.MaxQty;
}
// Take product with highest Revenue;
// Update supply;
// Repeat the loop;
我知道这不是最佳方法,因为有时获得最高收益的产品并不是最佳选择,因为我的目标是使所有生产的产品总和最大,而不是一次只生产一种产品。