Процесс Excel, чтобы найти оптимальный диапазон для максимизации данных

У меня есть электронная таблица с 5 столбцами: A, B, C, D и E, все одинаковой длины, содержащие числовые данные.

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

Я хочу найти отдельный диапазон для каждого из трех столбцов, который максимизирует среднее значение в соседнем столбце 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) в пределах указанного максимального и минимального диапазона. Если AB и C находятся в диапазоне строк MAX и MIN, он отправляет значение D в E, в противном случае он оставляет его пустым. Я использовал решатель, чтобы изменить значения в строках MAX / MIN, чтобы попытаться найти оптимальное сочетание максимума и минимума для ABC, которое привело бы к наивысшему среднему значению для столбца E.

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


person crams    schedule 15.03.2016    source источник
comment
Было бы полезно, если бы вы предоставили образец, показывающий, как выглядят ваши данные, с двумерным макетом, который имитирует электронную таблицу Excel. Есть некоторые вещи, которые вы не упомянули, но которые кажутся важными: 1) Являются ли числа целыми числами или они могут быть с плавающей запятой? 2) Как вычисляются результаты в столбце D? Какая формула используется в столбце E? 3) В терминологии решателя, что такое меняющиеся ячейки? ячейки ограничений? целевая ячейка? Вы дали очень мало для работы.   -  person John Coleman    schedule 16.03.2016
comment
Я отредактировал вопрос, чтобы отразить это, спасибо!   -  person crams    schedule 16.03.2016
comment
У меня начинает проясняться картина. Когда вы говорите оставить это поле пустым, означает ли это, что любая такая ячейка в столбце E рассматривается как нуль в среднем значении или она игнорируется в среднем, так что среднее значение находится только над непустым значением? ячейки в Е?   -  person John Coleman    schedule 16.03.2016
comment
В среднем игнорируется. E — это просто значение в D, если соблюдаются критерии максимального и минимального значений для ABC.   -  person crams    schedule 16.03.2016


Ответы (1)


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

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

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

введите здесь описание изображения введите здесь описание изображения введите здесь описание изображения

Примечания:

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

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

введите здесь описание изображения введите здесь описание изображения введите здесь описание изображения

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

person Erwin Kalvelagen    schedule 15.03.2016
comment
Что делает настройка случайного начального числа? - person crams; 16.03.2016
comment
Есть ли другой способ реализовать это, которое вы рекомендуете? - person crams; 16.03.2016
comment
Эволюционный алгоритм представляет собой рандомизированный алгоритм. Исправление начального числа гарантирует, что оно будет использовать ту же последовательность случайных чисел. - person Erwin Kalvelagen; 16.03.2016
comment
вау, это потрясающе, мне понадобится некоторое время, чтобы понять это. Спасибо вам за помощь! - person crams; 16.03.2016
comment
Это отличная работа, как вы думаете, было бы слишком сложно установить минимальное количество сэмплов? В электронных таблицах я намерен использовать эту формулу для столбцов. Например, ABC будет расширяться на несколько сотен строк, и я хочу найти диапазоны, чтобы максимизировать среднее значение и обеспечить минимальное количество точек данных, включенных в среднее значение. - person crams; 16.03.2016
comment
В модели уже есть ограничение minone (см. математическую модель). Это делается для предотвращения выбора нулевых элементов (тогда среднее значение не будет определено). Это ограничение minone можно изменить на любое число K. - person Erwin Kalvelagen; 16.03.2016
comment
Спасибо, завтра попробую реализовать в экселе. Я не использовал математику этого продвижения в течение многих лет и очень заржавел. Надеюсь, я смогу понять, как это сделать! - person crams; 16.03.2016
comment
Набор данных, который я предоставил, был просто примером, иллюстрирующим вопрос. Я планирую использовать это для наборов данных, которые будут содержать 100 строк в каждом столбце. Я собираюсь попытаться воспроизвести это сейчас, но математика у меня выше головы. Если я не могу заставить его работать, можно ли получить копию созданной вами электронной таблицы? - person crams; 16.03.2016
comment
Извините, я использовал внешний решатель и не тратил время на перевод уравнений обратно в Excel. - person Erwin Kalvelagen; 16.03.2016