Набор узлов с непересекающимся подмножеством в CPLEX

В настоящее время я пытаюсь реализовать алгоритм ориентированного взвешенного графа в CPLEX.

Для этого мне нужно инициализировать следующий набор узлов P, который включает три разных непересекающихся подмножества.

Node Set P
Disjoint Subset 1: {u,v}
Disjoint Subset 2: {A,B,C,D}
Disjoint Subset 3: {1,2,3,4,5,6,7,8,9,10,11,12}

Кто-нибудь знает, как это работает? Так как же это выглядит на языке кода?

Большое спасибо! С Уважением

У меня есть два следующих узла:

{int} nodes = {44, 66};

Теперь я хочу определить разные дуги в зависимости от узлов. Для узла 44 есть дуги ‹44,123456›, ‹44,123457›, ‹44,123458›. Для 66 дуги нет. Как я могу это правильно реализовать? Я пробовал вот так, но знаю, что это не может работать, да и вообще не работает :(

{int} nodes = {44, 66};
tuple Arc {
  int origin;
  int destination;
}
{Arc} arcs[nodes] = {<44,123456>, <44,123457>, <44,123458>, <66,?>};

Кроме того, я не могу не вводить числа вручную из-за большого количества данных, но мне приходится читать их из Excel, в котором данные хранятся следующим образом: введите описание изображения здесь

И, возможно, мне следует добавить информацию о том, что это узлы и дуги взвешенного и ориентированного графа ... Итак, nodes = {44, 66} - это подмножество всех узлов графа, а arcs [nodes] - это подмножество всех дуги и представляют те дуги, которые исходят из узлов 44 и 66.

Итак, чтобы завершить мою проблему: я установил P, который имеет подмножества 1,2 и 3.

{string} Subset1= {"44","66"};
{string} Subset2= {"123456","123457","123458"};
{string} Subset3= {"1","2","3","4","5","6","7","8","9","10","11","12"};
{string} P=Subset1 union Subset2 union Subset3;

В зависимости от узла из P (подмножество 1,2 и 3) я хочу выразить дуги, исходящие из определенного узла.

Математически набор определяется как H_j с j в P. H_j - все дуги, исходящие из j. j - узел из P

Дуги берутся из файлов Excel со структурой выше. Может быть, для этого есть действительно простое решение. Буду очень благодарен!


person A321    schedule 24.06.2021    source источник


Ответы (1)


{string} Subset1= {"u","v"};
{string} Subset2= {"A","B","C","D"};
{string} Subset3= {"1","2","3","4","5","6","7","8","9","10","11","12"};
{string} P=Subset1 union Subset2 union Subset3;

execute
{
  writeln(P);
}

отлично работает и дает

{"u" "v" "A" "B" "C" "D" "1" "2" "3" "4" "5" "6" "7" "8" "9" "10" "11" "12"}
person Alex Fleischer    schedule 24.06.2021
comment
Большое спасибо @Alex Fleischer. Я добавил еще один вопрос выше. Ты тоже можешь мне помочь? Он начинается под последним и заканчивается словами "Большое спасибо!" С Уважением. Я был бы очень благодарен, если бы вы могли мне помочь. Может быть, снова есть простое решение - person A321; 28.06.2021
comment
По новым вопросам я предлагаю открывать новые темы - person Alex Fleischer; 28.06.2021
comment
Ты прав. Я разместил это снова в новой ветке - person A321; 28.06.2021