【问题标题】:ILP variable mapping in converting Matlab problem-based formulation to solver-based formulation将 Matlab 基于问题的公式转换为基于求解器的公式中的 ILP 变量映射
【发布时间】:2019-05-13 22:05:13
【问题描述】:

我正在使用 Matlab 工具作为“工具”来开发 ILP。它们既有传统的"solver" based (SB) formulation,又有更高抽象级别的"problem" based (PB) formulation

SB 和 PB 的区别在于,对于 PB,用户不必担心问题变量映射到变量 ILP 列向量的元素。 优化问题对象以符号形式接受优化函数和等式/不等式约束,类方法处理定义问题变量的列向量、优化函数的系数和矩阵 &用于平等和不平等约束的相关 RHS。

实际上可以通过使用prob2struct 将PB 转换为SB 来检查PB 公式的SB 对应物。不幸的是,尚不清楚prob2struct 如何决定哪些 PB 变量映射到变量列向量的哪些元素。

我尝试在 PB 公式中搜索优化问题对象,以查看它是否包含其自己的内部 SB 公式详细信息(无论它是否与 prob2struct 的匹配),或者至少是变量映射。我找不到这样的细节。

对于prob2struct,是否有一个可靠的规则让我们知道哪些符号PB变量映射到SB的变量列向量中的哪些元素?

【问题讨论】:

    标签: matlab mathematical-optimization integer-programming mixed-integer-programming


    【解决方案1】:

    试试varindex 功能。它是在 R2019a 中引入的。

    【讨论】:

    • @mcfeneton:谢谢,我不敢相信它在prob2struct 页面中被引用了。在我的辩护中,尽管有渐进镜片,但我在特写镜头方面几乎是盲目的。对于从事分析的职业来说,这不是好兆头。 doc 页面说返回的结果 idx 包含线性索引,但我想知道这是否也意味着多维 ILP 变量中的元素也采用线性索引顺序,例如 3x3 变量 y在这个例子中?这是了解映射到idx 的关键细节。
    • 其实答案就在prob2struct页面的算法部分。这些变量按照它们在optiproblem 属性Variables 中的显示顺序进行获取。对于多维变量,元素对应于原型 ILP 问题中的标量变量,它们按线性索引顺序排列。在我看来,这会引发关于变量在optiproblem.Variables 属性中的排序方式以及是否有任何方法可以控制排序的问题。
    猜你喜欢
    • 2020-03-31
    • 1970-01-01
    • 2022-09-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-13
    • 2017-01-20
    • 1970-01-01
    相关资源
    最近更新 更多