Меня бросили в Cplex, и у меня совершенно нет опыта его использования. Возможно, мне не хватает какой-то очевидной информации.
Мы пытаемся построить простую модель оптимизации на пропускной способности порта. Каждый обработанный продукт имеет свой путь, используя несколько железнодорожных сегментов. Я ищу способ получить мой текущий индекс в массиве сегментов, чтобы сделать сумму.
Короче говоря, я ищу эквивалент ".getindex ()" в Cplex. Я огляделся безрезультатно.
Вот упрощенная версия соответствующих параметров.
int amountSegments=6;
int products=1..2;
int time=15;
int path[products][segments]=[[2,1,4,5],[2,1,3,6,4,5]];
Вот одно из соответствующих ограничений
forall(l in products)
forall(i in path)
sum(t in XXXX)
x[i][l][t]==d[l];
Что я пытаюсь сделать здесь, если x - это количество вагонов на каждом [сегменте], содержащем [продукт] в [время]: для каждого из двух продуктов и для каждого сегмента в этом пути продуктов я хочу сумма t в i.getindex () .. время-количествоSegments + i.getindex ().
Заранее спасибо, надеюсь, это несколько понятно.
Редактировать: Я постараюсь прояснить свой вопрос.
У нас есть два продукта, 1 и 2. Продукт один путь состоит из путей: 2,1,4,5, а продукт два состоит из путей 2,1,3,6,4,5. Для этого конкретного ограничения, для продукта один, модели необходимо сгенерировать сумму для сегментов 2, 1, 4 и 5. Порядок важен для остальной части модели.
Для сегмента 2 мне нужна сумма на t от 1 до 12 (первый сегмент на пути 15-4 + 1)
Для сегмента 1 мне нужна сумма на t от 2 до 13 (второй сегмент на пути 15-4 + 2)
для сегмента 4, мне нужна сумма на t от 3 до 14 (третий сегмент на пути, так что 15-4 + 3)
Для сегмента 5 мне нужна сумма на t от 4 до 15 (четвертый сегмент на пути 15-4 + 4)
Для второго продукта:
Для сегмента 2 мне нужна сумма на t от 1 до 10 (первый сегмент на пути 15-6 + 1)
Для сегмента 1 мне нужна сумма на t от 2 до 11 (второй сегмент на пути 15-6 + 2)
Для сегмента 3 мне нужна сумма на t от 2 до 12 (третий сегмент на пути 15-6 + 3)
для сегмента 6, мне нужна сумма на t от 3 до 13 (четвертый сегмент на пути, так что 15-6 + 4)
Для сегмента 4 мне нужна сумма на t от 4 до 14 (пятый сегмент на пути, так что 15-6 + 5)
Для сегмента 5 мне нужна сумма на t от 2 до 15 (шестой сегмент на пути, так что 15-6 + 6)
Короче говоря, для [i] мне нужна модель, чтобы прочитать массив путей для правильного продукта.
Для [l] это довольно просто, я думаю.
Для суммирования по [t] мне нужно перейти от моей позиции в массиве пути (индекс + 1) к (общее количество времени сегментов в пути + позиция в массиве пути)
Надеюсь, это немного лучше объясняет мою проблему!