2016-03-15 4 views
-1

У меня есть лист с 5 колонками, A, B, C, D и E, все одинаковые длины, содержащие числовые данные.Excel процесс для поиска оптимального диапазона для максимизации данных

Столбцы A, B и C имеют значения от -10 до +10, а столбец D - результаты. в столбце E у меня есть формула If AND, которая показывает только соответствующий результат из D, если A, B или C попадают в диапазон. Диапазон задается отдельными ячейками, которые ссылаются на формулу IF AND.

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

Примером результатов, которые я ищу, является; A должно быть от 0 до 5, B может быть от -10 до +10, C от -2 до 0. Этот критерий максимизирует среднее значение в смежных ячейках E.

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

Моя таблица выглядит следующим образом:

   A | B | C | D | E 
       1 3  4  6  6 
       3 -5 -0.2 -2  -2 
       0.5 -1  2  1  1 
       2 4  6  2  2 
       -1 2  1 10  10 

       A B  C 
     Max 10 10 10 
     Min -10 -10 -10 

    E count: 5 
E avg: 3.4 

ABCD все наклеенные значения, E использует инструкцию IF, чтобы проверить, соответствует ли соответствующий столбец (ABC) указанным m ax и min range, если A B и C находятся в диапазоне MAX и MIN, он помещает значение D в E, иначе он оставляет его пустым. Я использовал решатель для изменения значений в строках MAX/MIN, чтобы попытаться найти оптимальное сочетание max и min для ABC, что приведет к наивысшему среднему значению для столбца E.

только ограничения i были максимальными и min должно быть в пределах от 10 до -10, а минимальное значение составляет 10, а максимальное значение должно быть> min (в фактической таблице данные продолжаются для 100 образцов)

+0

Было бы полезно, если бы вы дали образец, который показывает, как выглядят ваши данные, например, с 2-мерным макетом, который имитирует электронную таблицу Excel. Есть определенные вещи, которые вы не упоминаете, но которые кажутся важными: 1) Являются ли числа целыми числами или могут быть плавающей точкой? 2) Как вычисляются «результаты» в столбце D? * Что * формула используется в столбце E? 3) В решающей терминологии, каковы изменяющиеся ячейки? ячейки ограничения? целевая ячейка? С вами очень мало работать. –

+0

Я отредактировал вопрос, чтобы это отразить, спасибо! – crams

+0

Я начинаю получать четкую картину. Когда вы говорите «оставьте это пусто», означает ли это, что любая такая ячейка в столбце E рассматривается как нуль в среднем или она игнорируется * в среднем так, что среднее значение будет только над непустыми ячейками в E ? –

ответ

1

Способ, которым это реализовано, делает это неприятная проблема. Операции IF/AND заставляют это быть сильно нелинейными и прерывистыми и недифференцируемыми. То есть не очень легко оптимизировать, используя традиционные методы на основе градиента. Эволюционный алгоритм смотрит на меня как на правильную вещь, чтобы попробовать. По умолчанию он будет использовать другое семя каждый раз при его запуске. Вы можете изменить это в параметрах решателя, установив RandomSeed на положительное число.

Я думаю, что эта проблема может быть решена как задача линейного смешанного целочисленного программирования. Требуется немного работы, но это позволит найти гарантированные оптимальные решения. Я посмотрю, смогу ли я попробовать это.

Математическая модель несколько сложна, поскольку нам нужно выполнить несколько линеаризаций.Вот что у меня есть:

enter image description here enter image description here enter image description here

Примечания:

  • переменная б показывает, если ячейка данных слишком низкая или слишком высокая
  • переменная дельта указывает, если строка данных имеет все значения внутри границ
  • вычисление среднего усложняется по мере того, как мы делим переменную на переменную е, так что нам нужно линеаризуем
  • мы добавили, что мы можем установить минимальный K выбранных строк

Некоторые результаты для различных K:

enter image description here enter image description here enter image description here

Этот набор данных не так интересно. Было бы более интересно, если при увеличении размера окна min/max неожиданно возникнет появление низких значений в решении.

+0

Что делает случайная установка семян? – crams

+0

есть ли другой способ реализовать это, вы рекомендуете? – crams

+0

Эволюционный алгоритм - это рандомизированный алгоритм. Фиксация семени гарантирует, что она будет использовать ту же последовательность случайных чисел. –