Использование инструментов Google ИЛИ для планирования экипажа - PullRequest
0 голосов
/ 20 марта 2019

Я ищу правильный способ использования инструментов Google OR для решения годовой задачи планирования экипажа судна.Я пытался следовать приведенным примерам задач планирования, но не мог найти способ установить необходимую 4-мерную переменную решения (D[i,j,k,t], i для капитанов, j для инженеров, k для корабля и t за период времени (дни или недели)).

Хотя приведено много примеров (для C #), с основными проблемами, с которыми я столкнулся, является способ задания и использования этой основной переменной решения и способ использования построителя решений, поскольку во всех примерах переменные имели 2 измеренияи были расквартированы для сравнения.К сожалению, я не нашел способа использовать меньшие D-переменные, поскольку оценка штрафа (проблема минимизации штрафа) оценивается возможными наборами кораблей-капитанов, кораблей-капитанов и кораблей-инженеров.

1 Ответ

0 голосов
/ 23 марта 2019

Почему бы вам не создать свой 4D массив, а затем заполнить его переменными по одной.

Вот код для матриц:

public IntVar[,] MakeIntVarMatrix(int rows, int cols, long min, long max) {
  IntVar[,] array = new IntVar[rows, cols];
  for (int i = 0; i < rows; ++i) {
    for (int j = 0; j < cols; ++j) {
      array[i,j] = MakeIntVar(min, max);
    }
  }
  return array;
}

При этом, пожалуйста, используйте решатель CP-SAT, поскольку исходный решатель CP устарел.

Для ознакомления:

см .:

...