Машина включается и выключается. seqStartStop
- seq<DateTime*DateTime>
, который собирает начальное и конечное время выполнения задач машины.Работа с последовательностями с отстающими операторами
Я хотел бы создать последовательность периодов, когда машина находится в режиме ожидания. Для этого я хотел бы построить последовательность кортежей (beginIdle, endIdle)
.
beginIdle
соответствует времени остановки машины во время предыдущего цикла.endIdle
соответствует времени начала текущего производства цикл.
На практике, я должен построить (beginIdle, endIdle)
, взяв второй элемент кортежа для i-1
и кулачного элемент следующего кортежа i
мне было интересно, как я мог бы получить эту задачу сделать без преобразования seqStartStop
к массиву, а затем циклически перемещаясь по массиву.
Другая идея, создающая две копии seqStartStop
: одна, где головка - хвост, удаляется, где головка удаляется (смещение назад элементов); а затем - map2
. я мог бы использовать skip
и take
, как описано here
Все кажется довольно громоздким. Есть ли что-то более прямолинейное В общем, мне было интересно, как выполнять вычисления по элементам с разными лагами в последовательности.
Как вы рассчитываете 'beginIdle' для первого периода и' endIdle' за последний период? –
или есть еще несколько периодов простоя, чем периоды работы машины, и в этом случае нам не нужно беспокоиться об этом. –
Хороший вопрос. Да, время работы устройства меньше. Периоды простоя - это периоды между рабочими периодами. Поэтому всегда существует один период простоя меньше числа рабочих периодов. – NoIdeaHowToFixThis