首页 > 解决方案 > 我可以在 AMPL 中使用集合的乘法吗?

问题描述

我正在尝试为图形问题编写模型。我定义了一个成对的集合来标记边缘。因为我需要在一些边缘之间找到内积。更确切地说:

假设 E 是一组边,我定义了:

集合 N,在 E 内交叉 E;

例如,如果 E={1,2,3},N 可以是:{(2,3),(1,2)} 即我需要找到边 1 和边 3 之间以及边 1 和边之间的内积2.

不,我的问题是我必须将边与顶点相关联。例如假设 V={v1,v2,v3,v4,v5} 是顶点集。边 1 在 v1 和 v3 之间,边 2 在 v2 和 v3 之间。

我需要定义另一个成对集合,例如:集合 N,V 交叉 V 内;但我需要确定其背后的一组边缘。例如,如果 M={(1,3),(2,3)} 我需要第三列来确定第一对属于边缘 1,第二对属于边缘 2。我如何在 AMPL 中做到这一点?

标签: ampl

解决方案


你可以这样做:

set vertices;
set edgenames;
set edges_with_vertices within edgenames cross vertices cross vertices;

这样对于 edges_with_vertices 中的任何三元组,第一个元素是边名,第二个和第三个是结束顶点。


推荐阅读