我打算进行优化,在其中我将找到一些供应节点和需求节点之间的最小路径。为此我有一组公司C.它们有一些供应节点和他们“控制”的需求节点,例如库存地点和工厂。但是,其他公司可以从其他公司股票中扣除产品,并将这些产品退回到自己的需求节点。
为此,我想定义一些公司c(在C中)控制的供应节点,以及一些需要相同类型的节点。 我认为子集等不应该是有效的(除非我认为是错误的),因为它必须在C和这些节点中包含元素。作为一个例子,我希望C中的公司c控制供应节点I,C中的公司c2控制供应节点G等等。这可以在AMPL中实现吗?
此致 Cenderze
答案 0 :(得分:1)
您可以使用多维集:
set C;
set SupplyNodes;
set CompanySupplies within {C, SupplyNodes};
其中CompanySupplies
的第二个索引代表公司c in C
控制的供应,即setof{(c, n) in CompanySupplies: c == c2} == G
。
或者,您可以使用索引集:
set CompanySupplies{C} within SupplyNodes;
其中CompanySupplies[c]
表示由公司c in C
控制的供应品。