Задача оптимизации - жадный подход или есть лучший подход? - PullRequest
0 голосов
/ 25 сентября 2019

Проблема оптимизации:

Поэтому я пытаюсь оптимизировать набор данных массива.Цель состоит в том, чтобы как можно меньше модифицировать набор данных для соответствия требуемым условиям.

Чтобы определить это: │ [исходный массив] - [конечный массив] │ = x Где x Iхотите быть минимально возможным значением

Условия:

Абсолютная разница в смежных значениях в массиве должна быть ≤1

• │(n-1) -n│≤1

• │n- (n + 1 │≤1

• • Сумма данных в исходном массиве должна быть равна суммеданные в окончательном массиве.

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

Массив ниже, где я сейчас нахожусь, я просто ищунесколько советов о том, как лучше использовать процесс в будущем. Я не уверен, что алгоритм Greedy - это лучший подход или есть что-то, что будет работать лучше.

(array([1, 0, 1, 0, 1, 1, 0, 0, 3, 0, 0, 3, 0, 0, 2, 1, 1, 2, 1, 1, 3, 1,
   0, 5, 0, 2, 4, 0, 3, 2, 1, 4, 2, 2, 3, 1, 1, 4, 4, 0, 4, 2, 1, 5,
   0, 4, 4, 0, 5, 2, 1, 4, 2, 3, 4, 3, 1, 4, 2, 2, 6, 1, 3, 5, 0, 5,
   3, 1, 5, 2, 4, 3, 3, 2, 4, 5, 0, 6, 3, 1, 7, 1, 5, 3, 2, 5, 3, 3,
   4, 5, 2, 3, 6, 1, 6, 4, 1, 7, 2, 5, 3, 2, 7, 3, 4, 5, 2, 4, 4, 6,
   2, 6, 1, 2, 6, 3, 5, 1, 3, 4, 2, 4, 2, 4, 4, 3, 3, 2, 5, 2, 2, 6,
   1, 5, 2, 2, 5, 1, 5, 3, 2, 3, 4, 2, 3, 4, 3, 4, 3, 1, 6, 0, 5, 5,
   1, 4, 4, 2, 3, 3, 3, 4, 3, 2, 6, 3, 2, 5, 2, 2, 6, 1, 3, 5, 3, 3,
   6, 1, 4, 3, 2, 7, 3, 1, 6, 2, 3, 6, 2, 3, 4, 5, 2, 5, 2, 5, 3, 3,
   5, 4, 1, 6, 1, 2, 6, 2, 5, 5, 3, 4, 4, 2, 5, 3, 3, 5, 3, 3, 6, 2,
   2, 7, 1, 5, 4, 4, 5, 2, 4, 4, 5, 1, 7, 4, 2, 5, 4, 1, 7, 4, 4, 4,
   2, 6, 3, 2, 7, 4, 3, 6, 3, 3, 6, 4, 3, 6, 3, 2, 7, 2, 5, 6, 2, 4,
   3, 4, 5, 4, 5, 2, 6, 2, 4, 3, 4, 5, 4, 3, 3, 5, 2, 1, 6, 2, 3, 4,
   1, 3, 3, 3, 2, 2, 3, 1, 2, 4, 1, 0, 5, 2, 1, 2, 2, 1, 2, 2, 1, 2,
   2, 2, 1, 2, 2, 0, 1, 1, 3, 0, 1, 2, 0, 0, 3, 1, 0, 0, 2, 0, 0, 2,
   2, 0, 0, 2, 0, 0, 0, 2, 1, 1, 1, 0, 0, 0, 1, 0, 1, 2, 0, 0, 0, 1,
   0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1]

Я смогдобиться этой проблемы в Excel, однако я сейчас пытаюсь оптимизировать это решение в Python с помощьюлучше подход

# Create arrays for optimisation process
# Setup of bin edges
bins = np.arange(Min_Delay, Max_Delay + Bin_size, Bin_size)
# Create array of histogram results
hist = np.histogram(df, bins=bins)
print(hist)
...