Моделирование пространственно-временных сетей с помощью cplex OPL - PullRequest
0 голосов
/ 08 июля 2019

Я хотел бы смоделировать пространственно-временную сеть в контексте поставщика услуг по обмену машинами, который определяется как S (станции) x (0, ... t ,. .., Tmax) с различными дугами, которые соединяют узел i в момент времени t с узлом j в момент времени t 'с t'> t. Каждая дуга связана с разными значениями (например, прибыль).

Есть ли у вас идеи о том, как реализовать эти дуги?

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

1 Ответ

0 голосов
/ 09 июля 2019

Я думаю, у вас есть график, который определяет, как станции подключены:

{int} nodes = { 1, 2, 3, 4 };
tuple Arc {
  int origin;
  int destination;
}
{Arc} arcs = { <1,2>, <1,3>, <1,4>, <2,3> };

Если я правильно понимаю, этот график необходимо дублировать для каждого периода в интервале времени, который определяется как

int Tmax = 5;
range T = 0..Tmax;

Вы можете определить новый кортеж, который определяет дугу с началом и назначением, а также временем начала и окончания:

tuple TArc {
  int origin;
  int destination;
  int starttime;
  int endtime;
}
{TArc} tarcs = { <o, d, s, e> | <o,d> in arcs, s in T, e in T : e > s };

Если вам также нужны узлы дублированных графов, сначала определите узлы:

tuple TNode {
  int node;
  int time;
}
{TNode} tnodes = { <n,t> | n in nodes, t in T };

, а затем дуги:

tuple TArc {
  TNode origin;
  TNode destination;
}
{TArc} tarcs = { <<o,s>,<d,e>> | <o,d> in arcs, s in T, e in T : e > s };

Стоимость / прибыль для дуги a, вероятно, зависит либо от расстояния между узлами (которое будет distance(a.origin.node, a.destination.node)), либо от дельты времени (которая будет a.destination.time - a.origin.time).

...