Visual Basic for Applications. Практика. Нагина Е.К - 19 стр.

UptoLike

Составители: 

19
Задача 2.5. Отделу логистики корпорации «Славия» поручено разра-
ботать маршрут перемещения сотрудника отдела продаж корпорации, за-
нимающегося сбытом мебели, для поиска новых рынков сбыта. Условия
задачи следующие: агент по продажам должен выехать из города Воро-
неж, посетить все остальные города по одному разу, а затем возвратиться в
город Воронеж. Определить маршрут
перемещения сотрудника с мини-
мальным общим расстоянием. Рассмотрим решение задачи на примере 10
городов. Для этого в ячейки диапазона с В2 по К2 ввести названия городов
маршрута следования менеджера по продажам. В ячейки диапазона с А3
по А12 ввести те же названия городов и в том же порядке. Расстояния ме-
жду
городами будем формировать случайным образом, используя, опера-
тор Randomize и функцию Rnd. Приложение будет состоять из двух проце-
дур. Первая, GetRandomTrack, генерирует случайные расстояния между
городами. Это сделано в целях экономии времени студента при выполне-
нии лабораторной работы. Оператор Randomize позволяет при каждом за-
пуске процедуры генерировать новые расстояния между городами. Други-
ми словами каждая задача будет создаваться на основе собственного набо-
ра расстояний между городами. Программный код составлен в процедуре
таким образом, что в этой матрице расстояния расположены симметрично
относительно главной диагонали. Например, расстояние от города 5 до
города 10 совпадает с расстоянием от города 10 до города 5. Диапазону
ячеек B3 : K12, в которых генерируются случайным
образом расстояния
между городами, присвоить имя MatrixTrack.
Дпя запуска процедуры GetRandomTrack на рабочем листе рядом с
диапазоном MatrixTrack расположить кнопку с панели инструментов Фор-
мы и дать ей название «Формирование расстояний».
Sub GetRandomTrack ()
Dim i As Integer, j As Integer,
Dim Quancity As Integer
Randomize
With Range (“MatrixTrack”)
Quancity = .Rows.Count
Заполняет матрицу над главной диагональю _
случайными числами
For i = 1 To Quancity – 1
For j = i + 1 To Quancity
.Cells (i, j) = Int (Rnd * 100) + 1
Next j
Next i
Создает зеркальное отражение уже введенных _
значений над
диагональю под диагональю
      Задача 2.5. Отделу логистики корпорации «Славия» поручено разра-
ботать маршрут перемещения сотрудника отдела продаж корпорации, за-
нимающегося сбытом мебели, для поиска новых рынков сбыта. Условия
задачи следующие: агент по продажам должен выехать из города Воро-
неж, посетить все остальные города по одному разу, а затем возвратиться в
город Воронеж. Определить маршрут перемещения сотрудника с мини-
мальным общим расстоянием. Рассмотрим решение задачи на примере 10
городов. Для этого в ячейки диапазона с В2 по К2 ввести названия городов
маршрута следования менеджера по продажам. В ячейки диапазона с А3
по А12 ввести те же названия городов и в том же порядке. Расстояния ме-
жду городами будем формировать случайным образом, используя, опера-
тор Randomize и функцию Rnd. Приложение будет состоять из двух проце-
дур. Первая, GetRandomTrack, генерирует случайные расстояния между
городами. Это сделано в целях экономии времени студента при выполне-
нии лабораторной работы. Оператор Randomize позволяет при каждом за-
пуске процедуры генерировать новые расстояния между городами. Други-
ми словами каждая задача будет создаваться на основе собственного набо-
ра расстояний между городами. Программный код составлен в процедуре
таким образом, что в этой матрице расстояния расположены симметрично
относительно главной диагонали. Например, расстояние от города 5 до
города 10 совпадает с расстоянием от города 10 до города 5. Диапазону
ячеек B3 : K12, в которых генерируются случайным образом расстояния
между городами, присвоить имя MatrixTrack.
      Дпя запуска процедуры GetRandomTrack на рабочем листе рядом с
диапазоном MatrixTrack расположить кнопку с панели инструментов Фор-
мы и дать ей название «Формирование расстояний».

Sub GetRandomTrack ()
   Dim i As Integer, j As Integer,
   Dim Quancity As Integer
   Randomize
   With Range (“MatrixTrack”)
        Quancity = .Rows.Count
‘ Заполняет матрицу над главной диагональю _
‘ случайными числами
        For i = 1 To Quancity – 1
          For j = i + 1 To Quancity
             .Cells (i, j) = Int (Rnd * 100) + 1
          Next j
        Next i
‘ Создает зеркальное отражение уже введенных _
‘ значений над диагональю под диагональю

                                   19