【问题标题】:Set belongings in AMPL在 AMPL 中设置物品
【发布时间】:2014-11-07 22:15:41
【问题描述】:

我打算进行优化,在其中找到一些供应节点和需求节点之间的最小路径。为此,我有一组公司 C。这些公司有一些他们“控制”的供应节点和需求节点,例如库存地点和工厂。但是,其他公司可以从其他公司的股票中扣除产品,并将这些产品退回到自己的需求节点。

为此,我想定义一组 c 公司(在 C 中)控制的供应节点,以及一些相同类型的需求节点。 我认为子集等不应该是有效的(除非我认为错误),因为它必须在 C 和这些节点中都包含元素。例如,我希望 C 中的公司 c 控制供应节点 I,而 C 中的公司 c2 控制供应节点 G,依此类推。这可以在 AMPL 中实现吗?

问候, 森德泽

【问题讨论】:

    标签: ampl


    【解决方案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 控制的供应。

    【讨论】:

    • 如何“组合”这些集合?例如,公司 c 拥有几个供应点,但我很想知道它是否是一个更优化的解决方案,允许 c 公司从系统内的任何供应点中扣除供应,但仍然“保持供应归属感给上述公司”。后者对于例如限制可以从每个公司的供应节点集中扣除多少供应是必要的。
    • 您可以使用setof 表达式setof{(c,n) in CompanySupplies} n 为所有公司获取一组供应节点,如果这正是您所寻找的。​​span>
    • 类似地,对于一个索引集union {c in C} CompanySupplies[c] 为所有公司提供了一组供应节点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-03
    • 1970-01-01
    • 2011-09-23
    相关资源
    最近更新 更多