【发布时间】:2020-12-18 16:00:49
【问题描述】:
问题
我有四种不同的化学物质,我知道每种化学物质中下列化合物的比例如下:
|------------------|---------|---------|---------|---------|---------|
| Name | ZrO2 | Al2O3 | SiO2 | Na2O | Price |
|------------------|---------|---------|---------|---------|---------|
| AZS | 30% | 50% | 13% | 1.8% | 328.95 |
|------------------|---------|---------|---------|---------|---------|
| Fine salt | 25% | 30% | 43% | 0.2% | 203.95 |
|------------------|---------|---------|---------|---------|---------|
| ZDCF | 63% | 1% | 33% | 0.4% | 789.47 |
|------------------|---------|---------|---------|---------|---------|
| AB fines | 0% | 95% | 1% | 4% | 263.16 |
|------------------|---------|---------|---------|---------|---------|
| HJO | 90% | 1% | 1% | 0.2% | 1315.79 |
|------------------|---------|---------|---------|---------|---------|
我需要将它们混合在一起以获得具有给定目标内容(表示为范围)的混合物:
|------------------|---------|---------|---------|
| Compound | Min | Target | Max |
|------------------|---------|---------|---------|
| Zr02 | 32% | 33% | 34% |
|------------------|---------|---------|---------|
| Al203 | 49% | 50% | 52% |
|------------------|---------|---------|---------|
| Si03 | 15% | 16% | 17% |
|------------------|---------|---------|---------|
| Na20 | 1.3% | 1.6% | 2% |
|------------------|---------|---------|---------|
- 我需要找到最便宜的化学品组合,让我得到一个范围内所有值的混合物。
- 如果可以在不使用更昂贵的混合物的情况下达到目标混合物,我不必使用混合物中的所有化学物质。
这里是代码沙箱的链接,上面的值在 typescript 中定义:https://codesandbox.io/s/cost-effective-mix-imvz5?file=/src/index.ts:2162-2169
我知道没有单一的解决方案,而是我需要生成一个包含所有可能组合的结果集,过滤掉没有目标混合物的组合,最后按价格对剩余的混合物进行排序。我只是不确定如何以编程方式表达这一点。
谢谢!
【问题讨论】:
-
你有混合部分数据和总和的例子吗?
-
第二张表代表了所需的示例,即混合物中的所有四种化合物都需要在第二张表中列出的范围内。
-
不是缺少信息吗?如果我计算一份 AZS 和一份 Fine Salt,我怎么知道两者加起来的 ZrO2 百分比?换句话说,百分比表示什么? (体积百分比,重量百分比,分子计数?)如果体积,我们是否不需要知道 AZS 和细盐的体积之间的比率?如果重量,...与重量比相同吗?如果分子计数,......同样的事情?
-
百分比表示每公吨的重量含量,例如AZS 含有 300 公斤的 Zr02
标签: javascript algorithm