2017-01-15 2 views
0

Это может показаться немного странным, и, возможно, я просто пропускаю лес через деревья по этому вопросу, но есть способ заставить Excel Solver вернуть только один экземпляр результата ? В качестве краткого примера представьте, что у нас есть некоторые результаты по поводу привлекательности различных объектов (цветов, животных и фигур). Мы хотим, чтобы решатель возвращал три наиболее предпочтительных объекта из этого списка.Excel Solver - предотвращение идентичных имен

Красный (400) собаки (120) круг (100) Красные (400) Cat (90) площадь (75) Синие (90) лошадь (60) треугольника (70) Зеленый (80) Змея (30) прямоугольник (40) Желтый (40) Кролик (20) Пентагон (15)

проблема заключается в том, конечно, упрощена в этом примере. В основном, моя проблема возникает в том, что я хочу один из каждого типа, а именно Red, Dog и Circle, но я продолжаю получать Red, Red (снова) и Dog, потому что общая сумма выше. Я хочу определить способ предотвращения возврата Solver двух значений, названных одинаковыми. Я просто не могу понять это, и Google, похоже, не дает никаких жизнеспособных ответов.

+0

Нахождение три наиболее предпочтительнее (по одному от каждой категории) кажется проблемой * сортировки *, а не проблемой * оптимизации *, поэтому я не уверен, как Solver даже имеет значение. В любом случае, если у вас есть несколько ячеек, соответствующих «красному» (или более расширенной категории, например цвету), - вводите новые бинарные переменные решения, которые соответствуют выбору этого объекта и ограничивают их сумму равным <= 1, поэтому что выбирается не более одного такого объекта. Ваш вопрос находится на неопределенной стороне, поэтому я не могу сказать больше, но решение, вероятно, связано с ограничениями на суммы двоичных переменных. –

+0

Непонятно, есть ли у вас структура в ваших данных - например, Красный-Собака-Кружок запись (строка) или просто красный? – OldUgly

ответ

1

Непонятно, как настроены ваши данные, и это может повлиять на то, как вы настраиваете проблему Solver, но вот один из методов (nb - этот метод будет работать, только если у вас есть 200 или менее значений).

  1. Сделать колонку A для категории. Это будет иметь такие значения, как «Цвет», «Животное» и «Форма».
  2. Столбец B предназначен для «Тип» и содержит информацию, предоставленную вами. (например, Dog, Cat, ... Red, Blue, ... Circle, Square, ...)
  3. Столбец C - это значение или показатель для типа, показанного в столбце B, снова предоставленную вами информацию.
  4. В столбце D есть поля, которые Solver будет манипулировать, назовем его «Selected». Выбранный будет 0 или 1.
  5. Столбец E является результатом выбора, простой расчет, =C2*D2, заполненный.
  6. Сделайте Cell H2 сумму столбца E. Это будет ваша задача для Solver.
  7. Сделайте G3 через G5 значениями в «Категория» (Цвет, Животное, Форма).
  8. Сделайте H3 через H5 общее количество выбранных значений в каждой категории. То есть =SUMIF($A$2:$A$16,"="&G3,$D$2:$D$16) заполнено.

Учебное пособие выглядит следующим образом ...

enter image description here

... от этого, вы можете настроить Solver следующим ...

  1. Set Цель: это $H$2
  2. Кому: установлено значение Макс. (т. е. вы ищете наиболее предпочтительные)
  3. Изменение переменных ячеек: установлено на $D$2:$D$16
  4. При наличии ограничений: имеет четыре записи.$D$2:$D$16 = binary; $H$3 = 1; $H$4 = 1; $H$5 = 1
  5. Выберите метод решения: установлен на Эволюционный. Вы можете использовать GRG Nonlinear, но это занимает больше времени.

диалоговое окно выглядит следующим образом ...

enter image description here

... следующий результат, который соответствует вашим критериям ...

enter image description here

+0

Ваш ответ получает меня так близко, и спасибо за это! Мои данные отформатированы почти так же, как и у вас, так что мне тоже нравится. Одна маленькая морщина, которая, возможно, не была ясна в исходном посте, что, если «Тип» используется более одного раза в двух «категориях», но мне нужен только один «Тип» в качестве ответа? Подумайте об этом так: «Оранжевый» может быть «Цвет» (значение 150) и (хотя и не показан в исходном примере) может быть категории «Фрукты» (значение 130). Тем не менее, мне нужен только цветной ответ, а не фруктовый. – Ryan

+0

Другим примером может быть это; говорят, что человек хорошо работает в двух отделах и оценивается как главный ресурс в каждом отделе. Однако мы можем собрать только команду руководства, где все отделы представлены одинаково, если человек представляет только один отдел в этой команде. Несмотря на то, что он является главным ресурсом для каждого отдела, как заставить Solver взять второй лучший ресурс от одного из отделов? В этом примере Department = Category и Name = Type. – Ryan

+0

Вы можете создать ограничение с помощью функции SUMIF против любого столбца, который вы выберете. – OldUgly

Смежные вопросы