Задаче коммивояжера в excel

Мощным средством
анализа данных MS
Excel
является надстройка «Поиск
решения»
.
С ее помощью можно определить, при каких
значениях указанных влияющих ячеек
формула в целевой ячейке принимает
нужное значение (минимальное, максимальное
или равное какой-либо величине). Для
процедуры поиска решения можно задать
ограничения, причем не обязательно,
чтобы при этом использовались те же
влияющие ячейки, данные которых,
определяют значение целевой ячейки.
Для расчета заданного значения применяются
различные математические методы поиска.
Вы можете установить режим, в котором
полученные значения переменных
автоматически заносятся в таблицу.
Кроме того, результаты работы программы
могут быть оформлены в виде отчета.

Программа Поиск
решений – дополнительная надстройка
табличного процессора MS Excel, которая
предназначена для решения определенных
систем уравнений, линейных и нелинейных
задач оптимизации, используется с 1991
года.

Размер задачи,
которую можно решить с помощью базовой
версии этой программы, ограничивается
такими предельными показателями:
количество неизвестных (decision variable) –
200; количество формульных ограничений
(explicit constraint) на неизвестные – 100; количество
предельных условий (simple constraint) на
неизвестные – 400.

Постановка задачи
коммивояжера, которую необходимо решить
посредством надстройки «Поиск решения»
методом полного перебора следующая:

«Сотруднику
компании ООО «Новые технологии» Петрову
Н.И. необходимо обновить программный
продукт автоматизированного учета в
пяти организациях: А, Б, В, Г и Д. Он решил
начать свой обход с организации «А»,
так как она находится на первом этаже
дома, в котором проживает Петров.
Сотруднику необходимо, спланировать
свой маршрут таким образом, чтобы к
концу рабочего дня обойти все организации
в определенном порядке и выполнив свою
работу, вернутся домой (в пункт «А»). В
каком порядке Петрову следует обходить
организации, чтобы его замкнутый тур
был кратчайшим? Если расстояния между
каждой парой организаций заданы следующей
квадратной матрицей (5×5):

Решение: Разместим
исходные данные на рабочем листе (рис
2.1). Заменим знак

числом 10000 (на результат решения
исключение пути не оказывает влияния).

Рисунок 2.1 Исходные
данные задачи

Вводим формулы:

Таблица 1

Ячейка

Формула

Примечание

B9

=
СУММ(B4:B8)

Распространяем
на диапазон B9:F9

G4

=
СУММ(B4:F4)

Распространяем
на диапазон G4:G8

C19

=СУММПРОИЗВ(B4:F8;B13:F17)

Целевая функция

E19

=B4+C5+D6+E7+F8

Исключение пути

B23

=$C$10-C10+4*C5

Распространяем
на диапазон B23:E23

B24

=$D$10-C10+4*C6

Распространяем
на диапазон B24:E24

B25

=$E$10-C10+4*C7

Распространяем
на диапазон B25:E25

B26

=$F$10-C10+4*C8

Распространяем
на диапазон B26:E26

Сценарий решения.

1. Запускаем
надстройку MS
Excel
«Поиск решения» командой Сервис/ Поиск
решения. И заполняем (рис. 2.2).

2. Для того чтобы
выполнялись условия однократного
посещения сотрудником организаций и в
то же время запланированный Петровым
маршрут был пройден полностью, введем
ограничения: в строки B9,
G4
заводим формулы из таблицы 1 и распространяем
их на соответствующие диапазоны B9:F9
и G4:G8.
Задаем следующие данные $B$9:$F$9=1
и $G$4:$G$8=1
в Ограничения окна «Поиск решения».
Таким образом, мы можем отследить порядок
обхода организаций сотрудником, оценить
правильность выбора и оптимальность
его маршрута.

3. Выбираем ячейку
B19
и устанавливаем ее адрес в Целевую
ячейку окна «Поиск решения», чтобы
определить длину наикратчайшего
маршрута. Для этого в ячейку B19
предварительно заносим соответствующую
формулу из таблицы 1. Когда программа
«Поиск решения» вычислит оптимальный
маршрут Петрова и станет известен
порядок обхода организаций (из Матрицы
переменных) будут известны и расстояния
между конкретными парами организаций.
Затем при помощи простых математических
подсчетов программа рассчитает
протяженность оптимального маршрута.

4. Устанавливаем
еще одно ограничение в окно «Поиск
решения»: $E$19=0.
В указанную ячейку вводим формулу из
таблицы 1 и исключаем таким образом,
заведомо ложный порядок движения Петрова
в порядке обхода организаций.

5.
В связи с тем, что ячейки диапазона
B4:F8
– изменяемые, в Ограничение окна «Поиск
решения» необходимо добавить строку
B$4$:F$8$=двоичное.

6. Заводим в ячейки
B23;
B24;
B25;
B26
соответствующие формулы из таблицы 1 и
распространяем их на следующие диапазоны:
B23:E23
B24:E24;
B25:E25;
B26:E26
для учета всех возможных вариантов
обхода организаций сотрудником и выбора
из них оптимального. Формулы задаем
таким образом, чтобы обеспечить исключение
ложного пути, соблюдая условие задачи
об обходе всех организаций по одному
разу.

7. Добавляем в
Ограничения окна «Поиск решения»
$B$23:$E$26
≤ 3.

Рисунок 2.2 Окно
«Поиск решения»

Так как это линейная
модель, то необходимо фиксировать в
окне Параметры поиска решений на позицию
Линейная модель и Неотрицательные
значения (рис. 2.3). После того, как все
поля и ячейки заполнены нажимаем кнопку
«Выполнить» и появляется окно диалога
с описанием результатов процесса
оптимизации. Чтобы отобразить найденное
решение в ячейках листа, устанавливаем
переключатель «Сохранить найденное
решение» и нажимаем кнопку ОК. Найденная
минимальная величина помещается в
целевую ячейку, а переменные ячейки
заполняются оптимальными значениями
переменных, которые удовлетворяют
установленным ограничениям.

Рисунок 2.3 Окно
«Параметры поиска решения»

Таким
образом, получаем следующий результат.
Если Петров переходит из организации
в организацию, то на рис. 2.4 в диапазоне
B4:F8
мы будем наблюдать порядок его перемещений.
Если видим, что в ячейке, которая отнесена
к организации «В» стоит единица, значит
сотрудник посетил эту организацию
следующей за пунктом «А». Если в ячейке
ноль – сотрудник организацию не посещал.

Рисунок 2.4 Результаты
решения задачи коммивояжера

Вывод
к главе 2
:

В ходе анализа
полученных результатов, приходим к
выводу: наиболее оптимальным маршрут
Петрова будет в том случае, если он начал
свой путь с организации «А», посетит
другие организации в следующем порядке
«В», затем «Г», далее «Б» и «Д», из которой
вернется к началу своего пути (в
организацию «А»). представим путь
схематически:

АВГБДА

Если оставишь
этот, то сотри желтое выделение!!!

В ходе анализа
полученных результатов, приходим к
выводу: наиболее оптимальным маршрут
Петрова будет в том случае, если он начал
свой путь с организации «А», посетит
другие организации в следующем порядке
«В», затем «Д», далее «Б» и «Г», из которой
вернется к началу своего пути (в
организацию «А»). представим путь
схематически:

АВДБГА

Длина кратчайшего
маршрута (значение целевой ячейки) в
результате составит – 21.

Задача решена.
Кратчайший маршрут Петрова найден.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]

  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #
  • #

Skip to content

Постановка задачи коммивояжера

Целевая функция:

Целевая функция задача коммивояжера

Ограничения на посещение только одного города:

Целевая функция задача коммивояжера

Решим данную задачу коммивояжера в Excel

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

Таблица Excel условие задачи

Формулы приведены ниже

Таблица с формулами задача коммивояжёра

Формула целевой функции

=СУММПРОИЗВ(C4:G8;C15:G19)

Затем переходим на вкладку Данные -> Поиск решения, вводим целевую функцию, вводим диапазон изменяемых ячеек переменных, ограничения, ставим галочку сделать переменные без ограничений неотрицательными, метод решения — поиск решения линейной задачи симплекс-методом и жмём Найти решение

Поиск решения

В результате получаем решение, то есть целевая функция равна 250

Решение задачи коммивояжёра в excel

3318



Решим один из вариантов задачи коммивояжера для небольшого количества городов (5-10) с помощью надстройки Поиск решения. Построим нелинейную модель.

Рассмотрим задачу коммивояжера (англ. Travelling Salesman Problem, TSP) заключающуюся в отыскании самого короткого маршрута, проходящего через заданные города по одному разу с последующим возвратом в исходный город (также рассмотрим вариант без возврата).

Задача

Найдем кратчайший путь между 5 городами, координаты которых известны. Рассмотрим замкнутый вариант задачи: коммивояжёру требуется посетить все города, после чего вернуться в исходный город.

Решение

Так как даны координаты городов, то сначала найдем расстояния между ними (см.

файл примера, лист

5 городов

).

Расстояния рассчитаем с помощью формулы: =

КОРЕНЬ((ИНДЕКС($C$7:$D$11;$F7+1;1)-ИНДЕКС($C$7:$D$11;G$6+1;1))^2 +(ИНДЕКС($C$7:$D$11;$F7+1;2)-ИНДЕКС($C$7:$D$11;G$6+1;2))^2)

Теперь создадим модель для

Поиска решения

.


Совет

: Вводная статья про

Поиск решения

в MS EXCEL 2010

находится здесь

.


Переменные (выделено зеленым)

. В качестве переменных модели следует взять номера городов. Так как начальная и конечная точка известны (Город0), то переменных будет 4.

Ограничения (выделено синим)

. Необходимо, чтобы номера городов не повторялись. Это означает, что количество уникальных (неповторяющихся) номеров городов должно быть равно 4. Для этого используется формула для

подсчета уникальных значений

: =

СУММПРОИЗВ(1/СЧЁТЕСЛИ(B16:B19;B16:B19))


Целевая функция (выделено красным)

.

Длина маршрута должна быть минимальной.


Примечание

: для удобства настройки

Поиска решения

используются

именованные диапазоны

.

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


Найденное

Решение


Поиск решения

найдет (должен найти) самый короткий маршрут, т.е. последовательность 0-1-4-2-3-0 (или обратную).

В этой простейшей задаче можно проверить, действительно ли этот маршрут имеет минимальную длину, путем перебора всех вариантов маршрутов. Это реализовано в

файле примера

.


Совет

. Таблицы перебора перестановок от 1 до 5, от 1 до 6, … от 1 до 9 можно найти в этой статье

Перебор всех возможных Перестановок в MS EXCEL

.

Результаты Эволюционного метода сильно зависят от начальных условий и параметров его настройки (скорость изменения, размер совокупности). Повторный поиск, с теми же начальными условиями и параметрами, может привести к различным результатам. Убедиться в этом можно с помощью модели, созданной в

файле примера

на листе

11 городов.

Обнулите значения переменных модели на Листе

11 городов,

запустите

Поиск решения.

После окончания поиска (может занять несколько минут) опять обнулите значения переменных и перезапустите

Поиск решения:

найденные решения могут серьезно отличаться.


Совет

. Иногда, для того чтобы улучшить найденное решение, помогает следующий прием: запустите

Поиск решения

, сохраните найденное решение, измените параметры поиска (например, размер совокупности), повторно запустите

Поиск решения.

В

файле примера

также приведено решение задачи для замкнутого и незамкнутого маршрута посещения 9 городов. Решения найдены с помощью Эволюционного метода со следующими параметрами: Целочисленная оптимальность 0%, Использовать автоматическое масштабирование, Скорость изменения варьировалась 0,25-0,5; Размер совокупности варьировался 10-50. Оба решения проверены с помощью таблиц перебора всех маршрутов (см.

таблицы перебора перестановок

). Если при первом прогоне

Поиска решения

не удавалось найти оптимальное решение, то он запускался повторно, при этом 1 или 2 параметра изменялись. После второго прогона оптимальное решение, как правило, было найдено.


Вывод

: задачу коммивояжера (граф полностью связный, гамильтоновый цикл) можно решить стандартным

Поиском решения

с помощью построения нелинейных моделей. При количестве вершин графа (городов) <10 найденное решение можно проверить с помощью таблиц перебора перестановок, т.к. Эволюционный метод не гарантирует, что найденный путь является кратчайшим. Поиск решения может продолжаться значительное время. Однако, более лучшей альтернативой решения этой задачи в MS EXCEL является построение линейной модели (см. статью

Поиск решения MS EXCEL (6.3). Задача коммивояжера (полный граф, линейная модель)

) или написание программы на VBA.


Совет

: Решение задачи о поиске кратчайшего пути между 2-мя заданными городами можно найти в статье

Поиск решения MS EXCEL (6.4). Кратчайший путь (неполный граф, линейная модель)

.

Решение задачи коммивояжера при помощи надстройки MS Excel «Поиск решения»

Метод полного перебора

Мощным средством анализа данных MS Excel является надстройка «Поиск решения». С ее помощью можно определить, при каких значениях указанных влияющих ячеек формула в целевой ячейке принимает нужное значение (минимальное, максимальное или равное какой-либо величине). Для процедуры поиска решения можно задать ограничения, причем не обязательно, чтобы при этом использовались те же влияющие ячейки, данные которых, определяют значение целевой ячейки. Для расчета заданного значения применяются различные математические методы поиска. Вы можете установить режим, в котором полученные значения переменных автоматически заносятся в таблицу. Кроме того, результаты работы программы могут быть оформлены в виде отчета.

Программа Поиск решений – дополнительная надстройка табличного процессора MS Excel, которая предназначена для решения определенных систем уравнений, линейных и нелинейных задач оптимизации, используется с 1991 года.

Размер задачи, которую можно решить с помощью базовой версии этой программы, ограничивается такими предельными показателями: количество неизвестных (decision variable) – 200; количество формульных ограничений (explicit constraint) на неизвестные – 100; количество предельных условий (simple constraint) на неизвестные – 400.

Постановка задачи коммивояжера, которую необходимо решить посредством надстройки «Поиск решения» методом полного перебора следующая:

«Сотруднику компании ООО «Новые технологии» Петрову Н.И. необходимо обновить программный продукт автоматизированного учета в пяти организациях: А, Б, В, Г и Д. Он решил начать свой обход с организации «А», так как она находится на первом этаже дома, в котором проживает Петров. Сотруднику необходимо, спланировать свой маршрут таким образом, чтобы к концу рабочего дня обойти все организации в определенном порядке и выполнив свою работу, вернутся домой (в пункт «А»). В каком порядке Петрову следует обходить организации, чтобы его замкнутый тур был кратчайшим? Если расстояния между каждой парой организаций заданы следующей квадратной матрицей (5×5):

Решение: Разместим исходные данные на рабочем листе (рис 2.1). Заменим знак числом 10000 (на результат решения исключение пути не оказывает влияния).

Рисунок 2.1 Исходные данные задачи

Ячейка Формула Примечание
B9 = СУММ(B4:B8) Распространяем на диапазон B9:F9
G4 = СУММ(B4:F4) Распространяем на диапазон G4:G8
C19 =СУММПРОИЗВ(B4:F8;B13:F17) Целевая функция
E19 =B4+C5+D6+E7+F8 Исключение пути
B23 =$C$10-C10+4*C5 Распространяем на диапазон B23:E23
B24 =$D$10-C10+4*C6 Распространяем на диапазон B24:E24
B25 =$E$10-C10+4*C7 Распространяем на диапазон B25:E25
B26 =$F$10-C10+4*C8 Распространяем на диапазон B26:E26

1. Запускаем надстройку MS Excel «Поиск решения» командой Сервис/ Поиск решения. И заполняем (рис. 2.2).

2. Для того чтобы выполнялись условия однократного посещения сотрудником организаций и в то же время запланированный Петровым маршрут был пройден полностью, введем ограничения: в строки B9, G4 заводим формулы из таблицы 1 и распространяем их на соответствующие диапазоны B9:F9 и G4:G8. Задаем следующие данные $B$9:$F$9=1 и $G$4:$G$8=1 в Ограничения окна «Поиск решения». Таким образом, мы можем отследить порядок обхода организаций сотрудником, оценить правильность выбора и оптимальность его маршрута.

3. Выбираем ячейку B19 и устанавливаем ее адрес в Целевую ячейку окна «Поиск решения», чтобы определить длину наикратчайшего маршрута. Для этого в ячейку B19 предварительно заносим соответствующую формулу из таблицы 1. Когда программа «Поиск решения» вычислит оптимальный маршрут Петрова и станет известен порядок обхода организаций (из Матрицы переменных) будут известны и расстояния между конкретными парами организаций. Затем при помощи простых математических подсчетов программа рассчитает протяженность оптимального маршрута.

4. Устанавливаем еще одно ограничение в окно «Поиск решения»: $E$19=0. В указанную ячейку вводим формулу из таблицы 1 и исключаем таким образом, заведомо ложный порядок движения Петрова в порядке обхода организаций.

5. В связи с тем, что ячейки диапазона B4:F8 – изменяемые, в Ограничение окна «Поиск решения» необходимо добавить строку B$4$:F$8$=двоичное.

6. Заводим в ячейки B23; B24; B25; B26 соответствующие формулы из таблицы 1 и распространяем их на следующие диапазоны: B23:E23 B24:E24; B25:E25; B26:E26 для учета всех возможных вариантов обхода организаций сотрудником и выбора из них оптимального. Формулы задаем таким образом, чтобы обеспечить исключение ложного пути, соблюдая условие задачи об обходе всех организаций по одному разу.

7. Добавляем в Ограничения окна «Поиск решения» $B$23:$E$26 ≤ 3.

Рисунок 2.2 Окно «Поиск решения»

Так как это линейная модель, то необходимо фиксировать в окне Параметры поиска решений на позицию Линейная модель и Неотрицательные значения (рис. 2.3). После того, как все поля и ячейки заполнены нажимаем кнопку «Выполнить» и появляется окно диалога с описанием результатов процесса оптимизации. Чтобы отобразить найденное решение в ячейках листа, устанавливаем переключатель «Сохранить найденное решение» и нажимаем кнопку ОК. Найденная минимальная величина помещается в целевую ячейку, а переменные ячейки заполняются оптимальными значениями переменных, которые удовлетворяют установленным ограничениям.

Рисунок 2.3 Окно «Параметры поиска решения»

Таким образом, получаем следующий результат. Если Петров переходит из организации в организацию, то на рис. 2.4 в диапазоне B4:F8 мы будем наблюдать порядок его перемещений. Если видим, что в ячейке, которая отнесена к организации «В» стоит единица, значит сотрудник посетил эту организацию следующей за пунктом «А». Если в ячейке ноль – сотрудник организацию не посещал.

Рисунок 2.4 Результаты решения задачи коммивояжера

В ходе анализа полученных результатов, приходим к выводу: наиболее оптимальным маршрут Петрова будет в том случае, если он начал свой путь с организации «А», посетит другие организации в следующем порядке «В», затем «Д», далее «Б» и «Г», из которой вернется к началу своего пути (в организацию «А»). представим путь схематически:

Длина кратчайшего маршрута (значение целевой ячейки) в результате составит – 21.

Задача решена. Кратчайший маршрут Петрова найден.

ЗАКЛЮЧЕНИЕ

Задача коммивояжера была поставлена в 1934 году. Ее сущность заключается в поиске оптимального маршрута движения при необходимости посетить все запланированные объекты с наименьшими финансовыми и временными издержками. Как правило, речь идет о простом перемещении по заданным точкам, либо с перевозкой груза небольшого формата на транспортном средстве.

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

Среди современных практических приложений задачи можно выделить: доставку продуктов в магазин со склада, работу почтальона по разноске корреспонденции, мониторинг объектов (нефтяные вышки, базовые станции сотовых операторов), изготовление отверстий на специализированном станке.

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

В работе была поставлена задача, сводимая к задаче коммивояжера, и составлена схема оптимального маршрута, подробно рассмотрен порядок выбора кратчайшего пути при помощи использования надстройки MS Excel «Поиск решения» методом полного перебора. Результаты решения были выведены на отдельный рабочий лист Excel.

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

Министерство образования и науки РФ

ГБОУ СПО «Шадринский политехнический колледж»

Заведующая учебной частью

____________ Блинова Н.А.

Курсовая работа

по дисциплине «Математические методы»

на тему «Задача о коммивояжере. Метод полного перебора»

Урок по теме «Решение уравнений в среде MS Excel»

Одна из наиболее актуальных проблем компьютерного обучения – проблема отбора и использования педагогически целесообразных обучающих программ.

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

В данной статье я представила те задачи, решение которых с помощью MS EXCEL позволяет получить наглядное, доступное для понимания учащимися решение, показать его логику, рациональность. Попутно учащиеся получают устойчивые навыки работы с программой.

Нахождение корней уравнения с помощью подбора параметра

Пример 1.

Пусть известно, что в штате больницы состоит 6 санитарок, 8 медсестер, 10 врачей, 3 заведующих отделениями, главный врач, заведующий аптекой, заведующая хозяйством и заведующий больницей. Общий месячный фонд зарплаты составляет 1000 000 условных единиц. Необходимо определить, какими должны быть оклады сотрудников больницы.

Решение такой задачи можно искать методом перебора. Однако в лучшем случае на это уходит много времени. Можно предложить другой способ решения. В EXCEL он реализован как поиск значения параметра формулы, удовлетворяющего ее конкретному значению.

Построим модель решения этой задачи. За основу возьмем оклад санитарки, а остальные оклады будем вычислять, исходя из него: во столько-то раз или на столько-то больше. Говоря математическим языком, каждый оклад является линейной функцией от оклада санитарки: Ai*С+Вi, где С – оклад санитарки; Аi и Вi – коэффициенты, которые для каждой должности определяют следующим образом:

  • медсестра получает в 1,5 раза больше санитарки (А2=1,5; В2=0);
  • врач – в 3 раза больше санитарки (А3=3; В3=0);
  • заведующий отделением – на 30 y.e. больше, чем врач (А4=3; B4=30);
  • заведующий аптекой – в 2 раза больше санитарки (А5=2; В5=0);
  • заведующий хозяйством – на 40 y.e. больше медсестры (А6=1,5; В6=40);
  • заведующий больницей – на 20 y.e. больше главного врача (А8=4; В8=20);
  • главный врач – в 4 раза больше санитарки (А7=4; В7=0);

Зная количество человек на каждой должности, нашу модель можно записать как уравнение: N1*(A1*C+B1)+N2*(A2*C+B2)+. +N8*(A8*C+B8) = 1000000, где N1 – число санитарок, N2 – число медсестер и т.д.

В этом уравнении нам известны A1. A8, B1. B8 и N1. N8, а С неизвестно. Анализ уравнения показывает, что задача вычисления заработной платы свелась к решению линейного уравнения относительно С. Предположим, что зарплата у санитарки 150,00 y.e.

Введите исходные данные в рабочий лист электронной таблицы, как показано ниже.

A

B

C

D

E

F

Оклад мед. Работников

Общий фонд равен

В столбце D вычислите заработную плату для каждой должности. Например, для ячейки D4 формула расчета имеет вид =B4*$D$3+C4.

В столбце F вычислите заработную плату всех работников данной должности. Например, для ячейки F3 формула расчета имеет вид =D3*E3.

В ячейке F11вычислите суммарный фонд заработной платы больницы. Рабочий лист электронной таблицы будет выглядеть, как показано ниже.

A

B

C

D

E

F

Оклад мед. Работников

Общий фонд равен

Чтобы определите оклад санитарки так, чтобы расчетный фонд был равен заданному надо:

  • Активизировать команду Подбор параметра во вкладке Данные / Работа с данными /Анализ «Что, если»;
  • В поле «Установить в ячейке» появившегося окна ввести ссылку на ячейку F11, содержащую формулу;
  • В поле «Значение» набрать искомый результат 1000000;
  • В поле «Изменяя значение ячейки» ввести ссылку на изменяемую ячейку D3 и щелкните на кнопке ОК.

Анализ задачи показывает, что с помощью Excel можно решать линейные уравнения. Конечно, такое уравнение может решить любой школьник. Однако, благодаря этому простому примеру стало, очевидным, что поиск значения параметра формулы, удовлетворяющего ее конкретному значению, – это не что иное, как численное решение уравнений. Другими словами, используя Excel, можно решать любые уравнения с одной переменной.

Задание для учащихся:

Составить несколько вариантов штатного расписания с использованием функции Подбор параметра и оформить их в виде таблицы:

  • Изменить количество сотрудников на различных должностях;
  • Подобрать зарплату санитарки в новых условиях;
  • Составить таблицу нескольких вариантов штатного расписания.

Рассмотрим еще один пример нахождения корней уравнения с помощью подбора параметра. При решении этого уравнения используется также метод последовательных приближений. Учащиеся в классах с углубленным изучением математики знакомы с этим методом. Поэтому, чтобы этот пример был доступен для других учащихся, предлагаю краткую теорию этого метода.

Пусть дано уравнение, записанное в виде x=F(x). Выбирают некоторое начальное приближение x1 и подставляют его вместо x в F(x). Полученное значение x2=F(x1) этой функции считают вторым приближением. Далее находят третье приближение по формуле x3=F(x2) и так далее. Таким образом, получаем последовательность x1, x2, x3,…, xn,… чисел, имеющая предел α. Тогда если функция F(x) непрерывна, из равенства xn+1=F(xn) получаем α=F(α). Это означает, что α является решением уравнения x=F(x).

Пример 2.

Пусть нам дан многочлен третьей степени:

x 3 -0,01x 2 -0,7044x+0,139104=0.

Так как мы ищем корни полинома третьей степени, то имеются не более трех вещественных корней. Для нахождения корней их первоначально надо локализовать, то есть найти интервалы, на которых они существуют. Такими интервалами локализации корней могут служить промежутки, на концах которых функция имеет противоположный знак. С целью нахождения интервалов, на концах которых функция изменяет знак, необходимо построить ее график или протабулировать ее. Составим таблицу значений функции на интервале [-1;1] с шагом 0,2. Для этого необходимо:

Решение уравнений в excel — примеры решений

Microsoft Office Excel может здорово помогать студентам и магистрантам в решении различных задач из высшей математики. Не многие пользователи знают, что базовые математические методы поиска неизвестных значений в системе уравнений реализованы в редакторе. Сегодня рассмотрим, как происходит решение уравнений в excel.

Первый метод

Суть этого способа заключается в использовании специального инструмента программы – подбор параметра. Найти его можно во вкладке Данные на Панели управления в выпадающем списке кнопки Анализ «что-если».

1. Зададимся простым квадратичным уравнением и найдем решение при х=0.

2. Переходите к инструменту и заполняете все необходимые поля

3. После проведения вычислений программа выдаст результат в ячейке с иксом.

4. Подставив полученное значение в исходное уравнение можно проверить правильность решения.

Второй метод

Используем графическое решение этого же уравнения. Суть заключается в том, что создается массив переменных и массив значений, полученных при решении выражения. Основываясь на этих данных, строится график. Место пересечения кривой с горизонтальной осью и будет неизвестной переменной.

1. Создаете два диапазона.

На заметку! Смена знака результата говорит о том, что решение находится в промежутке между этими двумя переменными.

2. Переходите во вкладку Вставка и выбираете обычный график.

3. Выбираете данные из столбца f (x), а в качестве подписи горизонтальной оси – значения иксов.

Важно! В настройках оси поставьте положение по делениям.

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

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

Третий метод

Решение систем уравнений можно проводить матричным методом. Для этого в редакторе есть отдельная функция МОБР. Суть заключается в том, что создаются два диапазона: в один выписываются аргументы при неизвестных, а во второй – значения в правой стороне выражения. Массив аргументов трансформируется в обратную матрицу, которая потом умножается на цифры после знака равно. Рассмотрим подробнее.

1. Записываете произвольную систему уравнений.

2. Отдельно выписываете аргументы при неизвестных в каждую ячейку. Если нет какого-то из иксов – ставите ноль. Аналогично поступаете с цифрами после знака равно.

3. Выделяете в свободной зоне диапазон ячеек равный размеру матрицы. В строке формул пишете МОБР и выбираете массив аргументов. Чтобы функция сработала корректно нажимаете одновременно Ctrl+Shift+Enter.

4. Теперь находите решение при помощи функции МУМНОЖ. Также предварительно выделяете диапазон размером с матрицу результатов и нажимаете уже известное сочетание клавиш.

Четвертый метод

Методом Гаусса можно решить практически любую систему уравнений. Суть в том, чтобы пошагово отнять одно уравнение из другого умножив их на отношение первых коэффициентов. Это прямая последовательность. Для полного решения необходимо еще провести обратное вычисление до тех пор, пока диагональ матрицы не станет единичной, а остальные элементы – нулевыми. Полученные значения в последнем столбце и являются искомыми неизвестными. Рассмотрим на примере.

Важно! Если первый аргумент является нулевым, то необходимо поменять строки местами.

1. Зададимся произвольной системой уравнений и выпишем все коэффициенты в отдельный массив.

2. Копируете первую строку в другое место, а ниже записываете формулу следующего вида: =C67:F67-$C$66:$F$66*(C67/$C$66).

Поскольку работа идет с массивами, нажимайте Ctrl+Shift+Enter, вместо Enter.

3. Маркером автозаполнения копируете формулу в нижнюю строку.

4. Выделяете две первые строчки нового массива и копируете их в другое место, вставив только значения.

5. Повторяете операцию для третьей строки, используя формулу

=C73:F73-$C$72:$F$72*(D73/$D$72). На этом прямая последовательность решения закончена.

6. Теперь необходимо пройти систему в обратном порядке. Используйте формулу для третьей строчки следующего вида =(C78:F78)/E78

7. Для следующей строки используйте формулу =(C77:F77-C84:F84*E77)/D77

8. В конце записываете вот такое выражение =(C76:F76-C83:F83*D76-C84:F84*E76)/C76

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

Метод Гаусса является одним из самых трудоемких среди прочих вариантов, однако позволяет пошагово просмотреть процесс поиска неизвестных.

Как видите, существует несколько методов решения уравнений в редакторе. Однако каждый из них требует определенных знаний в математике и четкого понимания последовательности действий. Однако для упрощения можно воспользоваться онлайн калькулятором, в который заложен определенный метод решения системы уравнений. Более продвинутые сайты предоставляют несколько способов поиска неизвестных.

Жми «Нравится» и получай только лучшие посты в Facebook ↓

источники:

http://urok.1sept.ru/articles/606276

http://mir-tehnologiy.ru/reshenie-uravnenij-v-excel-primery-reshenij/

Задача коммивояжера

MCH

Дата: Среда, 23.07.2014, 21:37 |
Сообщение № 1

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Задача коммивояжера (англ. Travelling salesman problem, сокращённо TSP) — одна из самых известных задач комбинаторной оптимизации, заключающаяся в отыскании самого выгодного маршрута, проходящего через указанные города хотя бы по одному разу с последующим возвратом в исходный город.
Тем кто с ней не знаком, можете почитать в Wikipedia
Можно решать различными алгоритмами.

Попытки решения на этом форуме публиковались здесь:
http://www.excelworld.ru/forum/10-10953-1
http://www.excelworld.ru/forum/2-11826-1

Реализовал пока два варианта решения:
1. Графическим (геометрическим) методом https://yadi.sk/d/Gg1Qbv26XCnkR
В основе решения геометрия — наносим координаты городов на плоскость, строим выпуклый многоугольник проходящий через указанные точки, так, чтобы все точки были внутри данного многоугольника. Затем пытаемся включить в данный многоугольник новые точки с наименьшими «затратами». Присутствует эвристика, поэтому маршрут не обязательно получается оптимальным, но близок к нему. Для исключения из маршрутов образование «петель», проходим перебором близко стоящие точки полученного маршрута, пытаясь улучшить решение.
К достоинствам можно отнести довольно высокую скорость нахождения пути для большого количества точек. При этом маршрут получается близким к оптимальному.
К недостаткам — нет гарантии, что маршрут оптимальный, необходимость задавать координаты точек и вычислять расстояния между точками геометрическим образом, а не использовать матрицу расстояний между точками (которая не обязательно должна быть симметричной)

2. Полным перебором (см. вложение) — можно применять не более чем для 12 городов (придется перебирать 11! вариантов маршрутов, это примерно 40 млн вариантов).
Увеличение количество городов более 12 приводит к существенному увеличению времени расчетов и уже не оправдано.

Если получится, то в планах решить задачу коммивояжера методом Литтла (как частный случай метода ветвей и границ). Материала по описанию данного метода нашел много, но как то все в голове пока не укладывается.

 

Ответить

MCH

Дата: Понедельник, 01.09.2014, 15:21 |
Сообщение № 2

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


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

Сообщение отредактировал MCHПонедельник, 01.09.2014, 15:21

 

Ответить

Desmont

Дата: Среда, 03.09.2014, 10:52 |
Сообщение № 3

Группа: Пользователи

Ранг: Прохожий

Сообщений: 3


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

Посмотрел вложение, это какая-то легкая наркомания, автор как ты это вообще придумал?)
Решал такое на *корпоративном тесте способностей персонала* в одной из компаний с годовой выручкой 1млрд+$, тут даже близко никто так не оптимизировал :)

 

Ответить

MCH

Дата: Четверг, 25.09.2014, 00:15 |
Сообщение № 4

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Дополнил решение задачи коммивояжера методом динамического программирования.
Можно использовать до 20 городов. Решение находится относительно быстро.

К сообщению приложен файл:

5637276.rar
(35.1 Kb)

Сообщение отредактировал MCHЧетверг, 25.09.2014, 23:03

 

Ответить

SLAVICK

Дата: Четверг, 02.10.2014, 16:22 |
Сообщение № 5

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Я просчитал для 24 городов :) — заменил MOD и типы на double.
Просчет занял 25 мин. Много времени ушло на создание массивов. Комп «завис» на несколько минут. (ОС 64 бит)

А вот для 25 не хватило памяти :( :
для 24 создается 2 Массива: 16 777 215 x 24.
а для 25 нужны массивы : 33 554 431 х 25.

Может можно без них — с временными массивами? Или это невозможно?


Иногда все проще чем кажется с первого взгляда.

 

Ответить

MCH

Дата: Четверг, 02.10.2014, 16:55 |
Сообщение № 6

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Если маршруты целочисленные, то для экономии памяти можно объявлять первый массив как Long.
Второй массив можно объявить как Byte, все равно там хранятся числа не более 255 (не более 25).
От второго массива, наверное, можно избавиться и восстанавливать маршрут расчетным путем.

 

Ответить

SLAVICK

Дата: Четверг, 02.10.2014, 17:59 |
Сообщение № 7

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Поменял просчиталось для 24 за 15 мин.
И памяти хватает для 25 :) .

А может вместо расчета восстановленного маршрута сделать массив, чтобы не считать?


Иногда все проще чем кажется с первого взгляда.

 

Ответить

MCH

Дата: Четверг, 02.10.2014, 18:33 |
Сообщение № 8

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


А может вместо расчета восстановленного маршрута сделать массив, чтобы не считать?

Так я и сделал второй массив, который запоминает оптимального предка для каждого состояния, по этому массиву и происходит восстановление пути

Сообщение отредактировал MCHЧетверг, 02.10.2014, 19:00

 

Ответить

SLAVICK

Дата: Понедельник, 06.10.2014, 10:38 |
Сообщение № 9

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Пока я не совсем разобрался с алгоритмом. Времени сейчас не хватает :(
Я думал создать одномерный массив 1…n(количество точек) и перезаписывать в него данные по маршруту.
Если это возможно. Я наверное не учел что

второй массив, который запоминает оптимального предка для каждого состояния

пойду разбирать механизм дальше :)
А может ссылку дадите на мат часть?
Расчетным путем это формулами? как раньше в версии «brute»?. Может так и лучше.
Выполнение немного замедлится, но можно просчитать больше.


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICKПонедельник, 06.10.2014, 13:18

 

Ответить

MCH

Дата: Понедельник, 06.10.2014, 14:22 |
Сообщение № 10

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


А может ссылку дадите на мат часть?

Описание алгоритма брал здесь: http://cybern.ru/zadacha-kommivoyazhyora.html

Расчетным путем это формулами? как раньше в версии «brute»?.

Не совсем так. По завершению алгоритма мы вычисляем длину оптимальнго маршрута и знаем из какго последнего состояния в него попали, но при этом не знаем последовательность точек.
Для того, чтобы определить всю цепочку нужно будет поочередно перепроверять каждый элемент и определять предка. В процессе вычисления предки запоминаются. Поэтому последовательно восстанавливается простым циклом. Если не запоминать предков, то с вычислением могут быть трудности, которые упираютя в стандарт вычислений с плавающей точкой (например, если a=0.1, b=a+4, c=b-4 то при этом a<>c)

 

Ответить

SLAVICK

Дата: Понедельник, 06.10.2014, 19:22 |
Сообщение № 11

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

если a=0.1, b=a+4, c=b-4 то при этом a<>c

А если так?
a-c<=0.1
где 0.1 — нужная точность?

или изначально округлять до (например) сотых а, b, c
[vba]

Код

a = Round(0.1, 2)
b = Round(4 + a, 2)
c = Round(b — 4, 2)
a = c = True

[/vba]

А маршрут можно записать в одномерный массив вместе с мин. длиной(тогда когда и мин длину).?


Иногда все проще чем кажется с первого взгляда.

Сообщение отредактировал SLAVICKПонедельник, 06.10.2014, 19:33

 

Ответить

MCH

Дата: Вторник, 02.01.2018, 13:38 |
Сообщение № 12

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Вариант решения Задачи Коммивояжера для 200 точек, заданных координатами x и y
Исходные данные для расчета взял отсюда: https://github.com/gumpu/TSP_Animation/blob/master/problem3.dat
При этом решение по этим данным выложенное автором кода составляет 30944.3: https://www.youtube.com/watch?v=q6fPk0—eHY
мне удалось найти решение 29842,5 (если запустить на более долгий пересчет, то решение можно немного улучшить)

UPD: улучшенное решение:

29493,1
Нашел оптимальное решение для данного набора точек — 29440,4 (29437 для целочисленных отрезков)

 

Ответить

MCH

Дата: Вторник, 09.01.2018, 17:57 |
Сообщение № 13

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Реализовал другой метод решения задачи коммивояжера динамическим программированием.
Описание метода взял здесь: https://revolution.allbest.ru/programming/00555478_0.html
Реализовал самостоятельно, так как понял (возможно не совсем оптимально, будет над чем подумать, чтобы оптимизировать).

Отличия от предыдущей реализации:
1. Использован тип Long, для хранения данных и уменьшения размера объявляемых массивов, что позволило немного увеличить максимальное число городов.
2. Перенес алгоритм на FreeBasic (из VBA переносится в FB достаточно легко), реализовал все это в виде dll, которую можно подключить к Excel файлу, передавать в dll модель и решить ее, скорость решения значительно увеличилась, 20 городов у меня решается менее чем за 1 секунду
3. Отдельно скомпилировал решатель в виде exe файла, данные (матрицу) можно заносить в текстовый файл «problem.dat», решение сохраняется также в текстовый файл

Во вложении пример с исходными данными на 200 точек из предыдущего поста решаемый dll (проверено в Excel 32bit)
а также exe файлы под win32 и win64

 

Ответить

MCH

Дата: Среда, 10.01.2018, 23:01 |
Сообщение № 14

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Примеры решения задачи коммивояжера динамическим программированием:
1. Два варианта функции на VBA
2. Решение с помощью DLL
3. Решение внешней программой

 

Ответить

SLAVICK

Дата: Четверг, 11.01.2018, 10:55 |
Сообщение № 15

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

MCH, как всегда на высоте — понимаю, что мне есть еще чего учить.
Есть несколько пожеланий, как для готового решения:
— можно сделать проверку для подключения библиотек #if VBA7 then… — так будет работать у всех.
https://msdn.microsoft.com/ru-ru….4).aspx
И совсем не лишним(на мой взгляд) было бы добавить вывод в ячейку время выполнения кода, чтобы глаз радовался :).


Иногда все проще чем кажется с первого взгляда.

 

Ответить

SLAVICK

Дата: Четверг, 11.01.2018, 16:14 |
Сообщение № 16

Группа: Модераторы

Ранг: Старожил

Сообщений: 2290


Репутация:

766

±

Замечаний:
0% ±


2019

Наверное так — должно работать у всех :)


Иногда все проще чем кажется с первого взгляда.

 

Ответить

MCH

Дата: Четверг, 11.01.2018, 17:44 |
Сообщение № 17

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Спасибо, архив в 14м сообщении перезагрузил

 

Ответить

MCH

Дата: Вторник, 30.01.2018, 13:46 |
Сообщение № 18

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Если получится, то в планах решить задачу коммивояжера методом Литтла (как частный случай метода ветвей и границ).

Реализовал на VBA метод ветвей и границ (то как его понял). Код еще сырой и нуждается в оптимизации.
Для сравнения сделал в одном файле решение динамикой и МВиГ: https://yadi.sk/d/Reg-KIOE3RurPe

Ограничение для динамического программирования — 23-24 города, для МВиГ количество городов может быть и больше, но расчет может занять продолжительное время, также может не хватить памяти при рекурсивном вызове функций.

 

Ответить

AK

Дата: Воскресенье, 04.03.2018, 16:10 |
Сообщение № 19

Группа: Пользователи

Ранг: Прохожий

Сообщений: 3


Репутация:

0

±

Замечаний:
0% ±


Excel 2016

MCH, добрый день.

Вариант решения Задачи Коммивояжера для 200 точек

Я воспользовался вашим файлом для своего примера — 48 городов.
Почему то один из городов не посещается при построении маршрута и я не смог понять, где допустил ошибку.
Буду очень благодарен, если вы посмотрите.

Спасибо.

Сообщение отредактировал AKВоскресенье, 04.03.2018, 16:21

 

Ответить

MCH

Дата: Понедельник, 05.03.2018, 08:34 |
Сообщение № 20

Группа: Админы

Ранг: Старожил

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Почему то один из городов не посещается при построении маршрута

В коде была небольшая ошибка, исправлено во вложении, также алгоритм решения убран в dll для ускорения расчетов (будет работать только в Excel 32bit)

К сообщению приложен файл:

mchTSP48.rar
(89.8 Kb)

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Задача что будет если excel примеры
  • Задать формулу в excel прибавить проценты
  • Задача линейного программирования средствами excel
  • Задача срока в excel
  • Задать формулу в excel для табеля