Поиск пути в excel


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

В статье

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

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

Задача

Имеется 11 городов, координаты которых известны. Маршруты проложены только между некоторыми городами (неполный граф). Найти кратчайший путь между 2-мя заданными городами. Построить Линейную модель.

Создание модели

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

файл примера

).

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

КОРЕНЬ((ИНДЕКС($C$7:$D$17;ПОИСКПОЗ($A30;$A$7:$A$17;0);1)-ИНДЕКС($C$7:$D$17;ПОИСКПОЗ(B$29;$A$7:$A$17;0);1))^2 +(ИНДЕКС($C$7:$D$17;ПОИСКПОЗ($A30;$A$7:$A$17;0);2)-ИНДЕКС($C$7:$D$17;ПОИСКПОЗ(B$29;$A$7:$A$17;0);2))^2)

Теперь создадим линейную модель для решения задачи с помощью

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

.


Совет

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

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

в MS EXCEL 2010

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

.

Обратите внимание, что не все города соединены сообщением (столбцы J:M), например нет прямого маршрута между Москвой и Парижем. Также для модели принципиально направление маршрута: Москва — Лондон, это не тоже самое, что Лондон-Москва (при необходимости список маршрутов можно расширить).


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

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

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

. Необходимо, чтобы из каждого города, в котором побывал путешественник, был входящий и выходящий маршрут. Так как входящий маршрут обозначается 1, а исходящий -1, то их сумма, равная 0, будет означать, что в город вошли и вышли (включен в кратчайший путь). Исключение составляют город – начальная точка путешествия (сумма =-1) и город – конечная точка (сумма =1). Изменяя ограничение в синем столбце, можно задавать начальные и конечные пункты путешествия.

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

.

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


Примечание

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

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

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

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

.

Выберите Линейный метод поиска решения, т.к. созданная модель является линейной.


Найденное

Решение


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

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

Изменив начальный и конечный пункт путешествия, и перезапустив

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

, получим другой маршрут.

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

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

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

Рассмотрим методику решения в Excel
задачи о нахождении кратчайшего пути.

Задача 3. Задача выбора кратчайшего
пути задана сетью, изображенной на рис.
3.1. Найдите кратчайший путь от узла с
номером 1 до узла с номеров 8, если c12=1
км, c13=4 км,
c14=6 км, c23=3
км, c26=5 км,
c27=1 км, c34=3
км, c35=5 км,
c45=1 км, c48=4
км, c54=1 км,
c56=1 км, c58=2
км, c65=1 км,
c67=3 км, c68=4
км, c72=1 км,
c76=3 км, c78=7
км.

На рис. 3.2 представлены Таблица
кратчайших расстояний
и План
перевозок товара
по кратчайшему
пути
, сформированные на рабочем листе
Excel. Здесь в Таблице кратчайших
расстояний
мы видим, что если между
отдельными складами отсутствует
возможность перевозки товара, то в
соответствующие ячейки таблицы
(выделенные темным фоном) заносится
любое большое число (большее на порядок
или два порядка, в данном случае 100).

Не сложно заметить, что данная задача
решается аналогично решению транспортной
задачи с промежуточными пунктами. В
целевую ячейку, в данном случае C24,
необходимо занести формулу:
=СУММПРОИЗВ(C4:I10;C16:I22).


Рис. 3.2. Таблицы задачи поиска кратчайшего
пути (до поиска решения)

Рис. 3.3. Окно поиска решения с
накладываемыми ограничениями

Используя меню СервисПоиск
решения
открываем
диалоговое окно Поиск решения
(см. рис. 3.3), в котором устанавливаем
целевую ячейку равной минимальному
значению, определяем диапазон изменяемых
ячеек и ограничения и запускаем процедуру
вычисления, щелкнув по кнопке Выполнить.

Рис. 3.4. Таблицы задачи поиска кратчайшего
пути (после поиска решения)

Результат решения данной задачи
представлен на рис. 3.4.

После того, как Excel найдет
решение, можно определить кратчайший
путь следующим образом. В первой строке
Плана перевозок товара по кратчайшему
пути
нетрудно видеть, что из первого
пункта автомобиль следует в пункт 2, так
как в столбце под потребителем 2 стоит
единица в ячейке, что означает заезд в
этот пункт. Далее смотрим на строку 2
(поставщик 2), так как следующее отправление
автомобиля происходит из этого пункта.
В этой строке единица стоит в столбце
7, значит автомобиль движется из пункта
2 в пункт 7. После этого смотрим строку
с поставщиком 7, и так далее пока не
появится конченый пункт 8.

Таким образом, мы видим, что кратчайший
путь перевозки товара следующий:
127658.
Расстояние перевозки при этом составит
8 км. Аналогично данную задачу можно
решить и на максимум, т.е. найти самый
длинный путь доставки товара.

Задания к лабораторной работе № 3 «Задача о нахождении кратчайшего пути»

Решите задачу 3, используя данные о
расстояниях между узлами транспортной
сети, представленные в табл. 3.1.

Таблица 3.1

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

c(ij)

Расстояние между смежными узлами
транспортной сети c(ij), км

по вариантам

1

2

3

4

5

6

7

8

9

10

c(12)

1

20

18

6

17

1

3

6

14

12

c(13)

5

6

9

9

14

19

17

6

1

14

c(14)

16

8

12

7

9

15

10

18

6

10

c(23)

2

12

4

9

1

15

13

1

10

19

c(26)

1

9

17

20

9

18

11

11

8

2

c(27)

16

3

16

17

11

12

3

10

18

14

c(34)

15

3

20

10

7

18

20

7

9

16

c(35)

17

2

11

20

8

12

20

2

13

11

c(45)

17

12

9

11

11

2

12

6

11

3

c(48)

17

3

4

4

6

12

10

18

10

4

c(54)

17

1

8

3

19

4

7

15

2

18

c(56)

10

8

10

6

5

9

20

7

20

12

c(58)

5

11

3

19

4

8

16

2

2

20

c(65)

1

19

7

6

19

10

16

6

8

11

c(67)

6

16

2

10

8

20

20

6

1

15

c(68)

14

17

11

2

11

5

13

17

14

16

c(72)

10

11

15

4

3

20

7

4

4

19

c(76)

7

1

7

9

12

20

14

14

5

17

c(78)

1

18

13

9

4

7

1

9

14

13

Вариант подбирается по последней цифре
шифра.

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

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

Поиск кратчайшего маршрута

Подробности
Создано 27 Март 2011
Содержание
Описание задачи
Решение задачи
Настройка параметров Excel
Алгоритм
Формула
Решение
Форматирование
Заключение

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

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

Описание задачи

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

   

Решение задачи

Настройка параметров Excel

В примере использованы формулы, работающие только с включенным режимом итерационных вычислений. Это режим устанавливается в параметрах Excel, в Excel 2000-2003 через меню СервисПараметрыВычисления. В Excel 2007-2010 через диалог настройки общих параметров (раздел Формулы):

Кроме установки числа итераций (зависит от размера лабиринта), желательно установить ручной режим вычислений. В противном случае будет серьезно замедлен расчет при любом изменении исходных данных.

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

Алгоритм

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

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

2. В ячейку «входа» устанавливается значение «1».

3. Цикл пока ячейка, обозначающая «выход», не заполнена номером. Выход из цикла также осуществляется, если за полный проход не было сделано никаких исправлений – в этом случае решения задачи нет.

3.1 Цикл по всем ячейкам

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

4. При успешном результате оптимальным маршрутом является любая последовательность с последовательным увеличением номера на единицу от «входа» к «выходу».

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

Формула

Любая ячейка внутри лабиринта на листе «Маршрут» содержит следующую формулу:

=IF(Карта!RC<>0;-1;
IF(INT(RC[-1])=INT(MIN(IF(RC[-1]>=0;RC[-1];999);IF(R[-1]C>=0;R[-1]C;999);IF(RC[1]>=0;RC[1];999);IF(R[1]C>0;R[1]C;999)));INT(RC[-1])+1,1;
IF(INT(R[-1]C)=INT(MIN(IF(RC[-1]>=0;RC[-1];999);IF(R[-1]C>=0;R[-1]C;999);IF(RC[1]>=0;RC[1];999);IF(R[1]C>0;R[1]C;999)));INT(R[-1]C)+1,2;
IF(INT(RC[1])=INT(MIN(IF(RC[-1]>=0;RC[-1];999);IF(R[-1]C>=0;R[-1]C;999);IF(RC[1]>=0;RC[1];999);IF(R[1]C>0;R[1]C;999)));INT(RC[1])+1,3;
IF(INT(R[1]C)=INT(MIN(IF(RC[-1]>=0;RC[-1];999);IF(R[-1]C>=0;R[-1]C;999);IF(RC[1]>=0;RC[1];999);IF(R[1]C>0;R[1]C;999)));INT(R[1]C)+1,4;
0)))))

Формула очень сложная (в Excel 2000-2003 достигается максимум по уровням вложенных скобок внутри одной формулы) и требует дополнительных пояснений. Общий смысл на самом деле соответствует описанному ранее циклическому алгоритму. Т.е. определяется минимум из соседних ячеек. При этом «стены» (отрицательные значения) не обрабатываются за счет замены их значений на большое число (999).

Дополнительно к описанному алгоритму вводится дробная часть числа, обозначающая направление движения от предыдущей ячейки. Все сравнения производятся над целыми числами (функция INT). Дробная часть введено только для облегчения показа маршрута через условное форматирование ячейки. Также только для целей условного форматирования в строках 18-117 находится служебная таблица с расчетами координат следующей ячейки оптимального маршрута. В примере заготовлено максимально 100 шагов для анализа. Расчет для показа маршрута можно было организовать каким-либо другим способом.

Обратите внимание, на преимущество R1C1 адресации – сразу видно, что формула абсолютна одинаковая во всех ячейках. Без использования итерационных вычислений будет выдана ошибка — циклическая ссылка в формулах . Действительно, все соседние ячейки лабиринта ссылаются друг на друга.

Решение

После изменений в расположении стен и проходов на листе «Карта» требуется перейти на лист «Лабиринт» и запустить ручной пересчет Excel. Это проще всего сделать через нажатие клавиши F9. Карта отобразит начальный лабиринт и маршрут оптимального перемещения. Стены выделены серым цветом, маршрут — желтым.

   

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

Форматирование

Ячейки внутри лабиринта содержат формулы, и соответственно вычисленные значения. В примере эти значения скрыты – видим только цвет фона. Числа скрыты, во-первых, для простоты восприятия («для красоты»), во-вторых, чтобы продемонстрировать возможности специального формата Excel. Вызовите диалог формата ячейки (проще всего это делается через сочетание клавиш Ctrl+1):

   

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

Для раскраски ячеек использованы условные форматы двух типов:

   

1. «Стены» вычисляются через формулу как значение «-1».

2. Ячейка попадает в оптимальный маршрут, если ее координата вычислена в служебной таблице. Здесь функция CELL(«address»; RC) выводит адрес текущей ячейки в формате R1C1. Служебная таблица собирает координаты маршрута от «выхода» к «входу», используя целую и дробную часть каждой ячейки лабиринта.

Заключение

Расширение масштаба лабиринта требует копирования формул и добавления строк в служебную таблицу для показа маршрута. Обратите только внимание, что ячейка «входа» не содержит формулу – там значение первого шага (1,1). Также, вероятно потребуется увеличить параметр «Предельное число итераций». Будьте осторожны с увеличением размеров лабиринта — скорость расчетов будет замедляться в геометрической прогрессии.

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

Пользовательский формат числа

Смотри также

» Перекрестный расчет себестоимости

При разработке экономических моделей одной из самых интересных задач является решение проблемы перекрестных связей между формулами….

» Объединение строк

У продвинутых пользователей Excel очень популярен вопрос о возможности объединения диапазона ячеек, содержащих текст, в одну строку при…

» Распределение начислений по платежам

При ведении финансового учета в электронных таблицах обычно ограничиваются, так называемым «котловым» методом расчета задолженности…

» Календарный план выпуска изделий

Одной из самых сложных задач экономического менеджмента является составление календарного плана выпуска продукции в условиях…

» Судоку

Пример решения головоломки «Судоку 9х9» без программирования. К экономике отношения не имеет, зато отлично показывает возможности Excel в…

Решение задачи коммивояжера при помощи надстройки 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/

Алгоритм Дейкстры — поиск кратчайшего пути

Rioran

Дата: Четверг, 23.07.2015, 18:15 |
Сообщение № 1

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

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


Excel 2013

Всем привет и хорошего настроения!

Предлагаю Вашему вниманию реализацию алгоритма Дейкстры (Дийкстры) в Excel. Позволяет найти кратчайший (или самый дешёвый) путь между множеством точек.

На ту же тему на форуме есть задача Коммивояжера, однако в отличие от неё — здесь НЕ требуется обойти все возможные точки.

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

Исходные данные должны быть представлены в виде квадратной матрицы. По столбцу слева указаны объекты, откуда происходит переход. По строке сверху — точки, куда идёт переход. На пересечении — стоимость перехода. При этом в разные стороны между одними и теми же точками сумма может отличаться. Если сумма перехода равна нолю — считается, что переход невозможен.

Код программы:

[vba]

Код

Option Explicit
Option Base 1

Sub Rio_Dij()
     Dim StartX As Long
     Dim FinishX As Long
     Dim BasE, NamS
     Dim nCost, nBack, nBack_tmp
     Dim i As Long
     Dim j As Long
     Dim k As Long
     Dim l As Long
     Dim SumX As Double
     Dim MinX As Double
     Dim MinID
     Dim Result() As String
     Dim RowA As Long
     Dim RowB As Long
     RowA = Cells(5, 1).End(xlDown).Row — 4
     RowB = RowA + 1
     Range(Cells(4, RowA + 3), Cells(4, RowA + 3).End(xlToRight).End(xlDown)).Clear
     MinX = 999999999999999#
     BasE = Range(«B5»).Resize(RowA, RowA)
     NamS = Range(«A5»).Resize(RowA, 1)
     For i = 1 To RowA
         If Range(«B2»).Value = NamS(i, 1) Then StartX = i
         If Range(«E2»).Value = NamS(i, 1) Then FinishX = i
     Next i
     ReDim nCost(RowA)
     ReDim nBack(RowA)
     ReDim nBack_tmp(RowA)
     For i = 1 To UBound(NamS, 1)
         nCost(i) = MinX
         nBack(i) = RowB
         nBack_tmp(i) = RowB
     Next i
     nCost(StartX) = 0
     nBack(StartX) = 0
     Do While nBack(FinishX) = RowB
         For i = 1 To RowA
             If nBack(i) < RowB Then
                 For j = 1 To RowA
                     If BasE(i, j) > 0 Then
                         SumX = nCost(i) + BasE(i, j)
                         If nCost(j) > SumX Then
                             nCost(j) = SumX
                             nBack_tmp(j) = i
                         End If
                     End If
                 Next j
             End If
         Next i
         MinX = 999999999999999#
         For i = 1 To RowA
             If nBack(i) <> nBack_tmp(i) Then
                 If nCost(i) < MinX Then
                     MinX = nCost(i)
                     MinID = i
                 End If
             End If
         Next i
         nBack(MinID) = nBack_tmp(MinID)
     Loop
     i = FinishX
     j = 0
     Do
         j = j + 1
         ReDim Preserve Result(4, j)
         Result(1, j) = NamS(nBack(i), 1) ‘Откуда
         Result(2, j) = NamS(i, 1) ‘Куда
         Result(3, j) = BasE(nBack(i), i) ‘Сколько стоило
         Result(4, j) = nCost(i) ‘Стоимость накопительно
         i = nBack(i)
     Loop While i <> StartX
     Range(«A4»).Offset(0, RowA + 2).Resize(1, 5).Value = Array(«Шаг», «Откуда», «Куда», «Сумма», «Накопительно»)
     For k = j To 1 Step -1
         Cells(5 + (j — k), RowA + 3).Value = j — k + 1
         For l = 1 To 4
             Cells(5 + (j — k), RowA + 3 + l).Value = Result(l, k)
         Next l
     Next k
End Sub

[/vba]


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

SLAVICK

Дата: Четверг, 23.07.2015, 18:30 |
Сообщение № 2

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

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

Сообщений: 2290


Репутация:

766

±

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


2019

По приложенному примеру выдало 4—2 — 1 — 6 = 35
а почему не 4—7—6 = 25
Или я чего -то не понял %)


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

 

Ответить

Rioran

Дата: Четверг, 23.07.2015, 18:34 |
Сообщение № 3

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

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


Excel 2013

SLAVICK, привет!

Потому что переход из 4 в 7 стоит 40 баллов:

По столбцу слева указаны объекты, откуда происходит переход

Таблица в файле — это исходные данные. Стоимости каждого ОТДЕЛЬНОГО перехода между всеми объектами. Именно на их основе происходят расчёты.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

Сообщение отредактировал RioranЧетверг, 23.07.2015, 18:35

 

Ответить

MCH

Дата: Четверг, 23.07.2015, 19:19 |
Сообщение № 4

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

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

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Роман, твой файл пока не смотрел (посмотрю).
Ты эту тему видел?

 

Ответить

Rioran

Дата: Четверг, 23.07.2015, 20:31 |
Сообщение № 5

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

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


Excel 2013

Спасибо за ссылку. Нет, ту тему не видел и, что странно, когда искал по форуму по названию алгоритма — не нашел.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

SLAVICK

Дата: Четверг, 23.07.2015, 21:49 |
Сообщение № 6

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

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

Сообщений: 2290


Репутация:

766

±

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


2019

Rioran, здравствуй.
Странная таблица. Т.е из 4→7=40 баллов
А из 7→4=10 баллов?
Дальше и не смотрел пока- таблица сбила с толку. :-)


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

Сообщение отредактировал SLAVICKЧетверг, 23.07.2015, 21:58

 

Ответить

AndreTM

Дата: Четверг, 23.07.2015, 22:49 |
Сообщение № 7

Группа: Друзья

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

Сообщений: 1762


Репутация:

498

±

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


2003 & 2010

Т.е из 4→7=40 баллов А из 7→4=10 баллов?

А почему нет? :)
Например (в приложении к физике реальности) — скажем, это кусок пути из одного города (4) в другой (7) пролегает по реке с бешеным течением, и указана стоимость затрат в каждом направлении…


Skype: andre.tm.007
Donate: Qiwi: 9517375010

Сообщение отредактировал AndreTMПятница, 24.07.2015, 19:48

 

Ответить

Gustav

Дата: Четверг, 23.07.2015, 23:14 |
Сообщение № 8

Группа: Друзья

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

Сообщений: 2398


Репутация:

986

±

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


начинал с Excel 4.0, видел 2.1

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

…или просто сложная схема улиц с односторонним движением внутри города…


МОИ: Ник, Tip box: 41001663842605

 

Ответить

SLAVICK

Дата: Пятница, 24.07.2015, 08:48 |
Сообщение № 9

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

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

Сообщений: 2290


Репутация:

766

±

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


2019


Так я и не спорю, просто :
Там не подписаны столбцы и строки, и я вместо 4—7=40 посмотрел на 7—4=10 :)


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

 

Ответить

Rioran

Дата: Пятница, 24.07.2015, 10:27 |
Сообщение № 10

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

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


Excel 2013

Там не подписаны столбцы и строки

Да, есть такое дело, каюсь =)

Выкладываю более наглядный пример по мотивам MMO RPG LineAge2. Матрицу стоимости и названия городов взял ЗДЕСЬ. Позволяет найти самый дешёвый по стоимости путь между выбранными городами. Код как и в первом посте, изменены только исходные данные.


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

nerv

Дата: Четверг, 30.07.2015, 19:52 |
Сообщение № 11

Группа: Редакторы

Ранг: Обитатель

Сообщений: 431


Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина — самый громкий звук

YM 41001156540584 / WM WMR R21924176233

https://github.com/nervgh/vba

Сообщение отредактировал nervЧетверг, 30.07.2015, 19:59

 

Ответить

Rioran

Дата: Пятница, 31.07.2015, 09:46 |
Сообщение № 12

Группа: Авторы

Ранг: Ветеран

Сообщений: 903


Репутация:

290

±

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


Excel 2013

nerv, первая ссылка просто восхитительна, сижу и медитирую =)

А про глаза что имеешь в виду?


Роман, Москва, voronov_rv@mail.ru
Яндекс-Деньги: 41001312674279

 

Ответить

MCH

Дата: Суббота, 01.08.2015, 14:38 |
Сообщение № 13

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

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

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


 

Ответить

MCH

Дата: Понедельник, 10.08.2015, 21:53 |
Сообщение № 14

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

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

Сообщений: 2002


Репутация:

751

±

Замечаний:
±


Делал поиск кратчайшего пути в лабиринте используя алгоритм Дейкстры по разреженному графу.
Исходная тема: http://www.sql.ru/forum….2%f0%e0
По исходному лабиринту построен граф. При указании начальной и конечной точки строится кратчайший путь «на лету»

 

Ответить

Понравилась статья? Поделить с друзьями:
  • Поиск решения для excel 2016 скачать
  • Поиск пустого столбца excel vba
  • Поиск решения двоичное ограничение excel
  • Поиск пробелов в word
  • Поиск решения в табличном процессоре excel