Как я могу справиться с проблемой вне области в CPLEX - PullRequest
0 голосов
/ 01 мая 2020

ПРИВЕТ ВСЕМ !! ВОПРОС НИЖЕ, НУЖНА ВАША ПОМОЩЬ

с использованием CP;

int nbPilots = 50;

int nbLocations = 7;

int nbDays = 30;

пилот-сигналы диапазона = 1..nbPilots;

диапазон дней = 1..nbDays;

диапазон местоположений = 1..nbLocations;

dvar логическое назначение [пилотные] [дни] [местоположения];

dvar логический отдых [пилоты] [дни] [местоположения];

максимизация суммы (i в пилотах, j в днях, l в местоположениях) назначают [i] [j] [l] ;

в зависимости от {

всего (i в пилотах, j в днях, l в местах) (назначить [i] [j] [l] + назначить [i] [j + 1] ] [л] + правопреемник [I] [J +-] [л] + правопреемник [I] [J +-] [L] + правопреемник [I] [J +-] [л] + правопреемник [I] [J +5] [l] + assign [i] [j + 6] [l] + rest [i] [j + 7] [l] + rest [i] [j + 8] [l] == 9); }

как мне справиться, что [j + 8] также в днях <= 30 </strong>

1 Ответ

0 голосов
/ 01 мая 2020
using CP;
int nbPilots = 50; 
int nbLocations = 7; 
int nbDays = 30;

range pilots = 1..nbPilots; range days = 1..nbDays; range locations = 1..nbLocations;

//decision variable/ 

dvar boolean assign [pilots][days][locations] ; dvar boolean rest [pilots][days][locations];

//objective/ 

minimize sum(i in pilots, j in days, l in locations)assign[i][j][l];

//constraints/
 subject to{


forall(i in pilots, j in days, l in locations:(j+8) in days)
  (assign[i][j][l]+assign[i][j+1][l]+assign[i][j+2][l]+assign[i][j+3][l]+
  assign[i][j+4][l]+assign[i][j+5][l]+assign[i][j+6][l]+rest[i][j+7][l]+rest[i][j+8][l] == 9);



}

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

...