给定一些输入,找到图形边缘的最佳权重以最大化某些输出
Given some input, find the optimal weightings for edges of a graph to maximize some output
我有一个有向图,它通过配方(边)描述了项目(节点)之间的关系。
食谱的简单示例:2 Iron Ore => 1 Iron Ingot
.
我想为每个配方找到一个权重(也就是说每个配方应该应用的次数),以便给定一些起始数量的项目,它会产生指定项目的最大数量。
我怎样才能找到每个食谱的权重?
注意:所有权重必须是非负数(可以是小数)。没有权重会导致需要的输入多于可用的数量。
这是我要解决的主要问题,但接下来,我要解决的下一件事是考虑能源使用情况。每个食谱都会使用一定量的能量或产生一定量的能量。
如何确保在求权重时,能源生产减去能源消耗是非负的?
提前感谢您的任何建议:)
我已经设法通过放弃图形结构并将问题视为 linear programming problem 来解决这个问题。
如果将问题视为 max flow problem,则可能可以使用图结构,但我还没有研究它。
这是求解最大铁锭的 LP 的一个小例子:
Maximize
iron_ingot: 30 recipe_iron_ingot + 50 recipe_iron_alloy_ingot + 65 recipe_pure_iron_ingot
Subject To
iron_ore: 30 recipe_iron_ingot + 20 recipe_iron_alloy_ingot + 35 recipe_pure_iron_ingot <= 70380
copper_ore: 20 recipe_iron_alloy_ingot <= 28860
Bounds
0 <= recipe_iron_ingot
0 <= recipe_iron_alloy_ingot
0 <= recipe_pure_iron_ingot
End
这代表每分钟输入70380铁矿石,每分钟输入28860铜矿石和无限水。它分析了制造铁锭的 3 种不同配方。
结果为:
0×铁锭配方
1443×铁alloy锭配方
1186.29×纯铁锭配方
相当于每分钟 149258.85 铁锭。
这还没有考虑到电力生产/消耗,但只需将电力视为 input/output 就像处理物品一样,这应该很容易添加。
我有一个有向图,它通过配方(边)描述了项目(节点)之间的关系。
食谱的简单示例:2 Iron Ore => 1 Iron Ingot
.
我想为每个配方找到一个权重(也就是说每个配方应该应用的次数),以便给定一些起始数量的项目,它会产生指定项目的最大数量。
我怎样才能找到每个食谱的权重?
注意:所有权重必须是非负数(可以是小数)。没有权重会导致需要的输入多于可用的数量。
这是我要解决的主要问题,但接下来,我要解决的下一件事是考虑能源使用情况。每个食谱都会使用一定量的能量或产生一定量的能量。
如何确保在求权重时,能源生产减去能源消耗是非负的?
提前感谢您的任何建议:)
我已经设法通过放弃图形结构并将问题视为 linear programming problem 来解决这个问题。
如果将问题视为 max flow problem,则可能可以使用图结构,但我还没有研究它。
这是求解最大铁锭的 LP 的一个小例子:
Maximize
iron_ingot: 30 recipe_iron_ingot + 50 recipe_iron_alloy_ingot + 65 recipe_pure_iron_ingot
Subject To
iron_ore: 30 recipe_iron_ingot + 20 recipe_iron_alloy_ingot + 35 recipe_pure_iron_ingot <= 70380
copper_ore: 20 recipe_iron_alloy_ingot <= 28860
Bounds
0 <= recipe_iron_ingot
0 <= recipe_iron_alloy_ingot
0 <= recipe_pure_iron_ingot
End
这代表每分钟输入70380铁矿石,每分钟输入28860铜矿石和无限水。它分析了制造铁锭的 3 种不同配方。
结果为:
0×铁锭配方
1443×铁alloy锭配方
1186.29×纯铁锭配方
相当于每分钟 149258.85 铁锭。
这还没有考虑到电力生产/消耗,但只需将电力视为 input/output 就像处理物品一样,这应该很容易添加。