У меня есть таблица с функциями = {A, B}. B является столбцом целых чисел. Сканируя таблицу, когда у меня есть изменение значения в столбце B, я увеличиваю переменную «изменения» на 1:
if data[i,B]!=data[i-1,B]
then changes=changes+1
Я хочу найти заказ, который минимизирует изменения и в то же время сохраняет повторение значения в B в [0, upper_bound]. Я думаю использовать массив в качестве переменной решения, где сохранить позицию j для элемента i:
order[i]=j means i element in data is the j-th element in ordering.
Как я могу моделировать с ограничением? Вот что я делаю до сих пор:
array[1..n, Features] of int: data;
int: changes=0;
constraint
forall(i in 1..n) (
if data[i,B] != data[i-1,B] then
changes=changes+1
endif
)
;
minimize changes;
Я думаю, что я ошибаюсь, используя изменения в качестве постоянной переменной, верно? Заранее спасибо.