Предполагая, что при использовании продукта потребляется один его элемент, который затем можно заменить, производя второй элемент этого продукта, я бы смоделировал его, назначив стоимость каждого продукта и выяснив, как минимизировать стоимость конечного продукта. , В этом случае я думаю, что это то же самое, что минимизация затрат на каждый продукт, потому что минимизация затрат на вход никогда не увеличивает стоимость любого продукта. В итоге вы получите множество уравнений, таких как
a = min (b + c, d + e, f + g)
, где a - это стоимость продукта, который может быть произведен в альтернативные способы, один способ потребления единиц со стоимостью b и c, другой способ потребления единиц со стоимостью d и e, другой способ потребления единиц со стоимостью f и g и так далее. В связанном графике могут быть циклы.
Один из способов решения такой проблемы состоит в том, чтобы начать с присвоения бесконечности затрат всем продуктам, изначально не предоставленным в качестве входных данных (с затратами), а затем многократно сокращать затраты там, где уравнения показать способ расчета затрат, меньших текущих затрат, отслеживания перерасчетов, вызванных еще не учтенными ресурсами или сокращением затрат. На каждом этапе я бы рассматривал последствия наименьшего входного или пересчитанного значения, с разрывом связей по второму компоненту, который составляет налог на производство. Выходные данные, полученные в результате расчета, всегда, по крайней мере, равны любому входному значению, поэтому вновь созданные значения всегда больше, чем рассмотренное пересчитанное значение, и пересчитанное значение, рассмотренное на каждом этапе, никогда не уменьшается, что должно уменьшить повторный пересчет.
Другим способом было бы превратить это в линейную программу и запустить ее с высоко оптимизированным гарантированным полиномиальным временем (по крайней мере, на практике) для решателя линейного программирования.
a = min (b + c, d + e, f + g)
становится
a = b + c -x
a = d + ey
a = f + gz
x> = 0
y> = 0
z> = 0
минимизировать сумму (x + y + z + ....)