52 3. ВОПРОСЫ РЕАЛИЗАЦИИ АЛГОРИТМОВ НА ЭВМ В предыдущей главе были рассмотрены алгоритмы решения задач безусловной оптимизации. В разделе 3.1 настоящей главы рассматривается вопрос о модификации этих алгоритмов для решения задач с ограничениями. Как было отмечено выше, к разрабатываемым алгоритмам предъявляется ряд требований, связанных с реализацией этих алгоритмов на ЭВМ в форме пакетов программ. Было указано два из них: универсальность алгоритмов и разнообразие алгоритмов. Кроме того, программная реализация алгоритмов, включаемых в пакет, должна обладать определенными свойствами, которые диктуются способом организации системной части пакета: 1. Схемы алгоритмов должны предусматривать возможность прерывания вычислительного процесса и восстановления его с момента прерывания в следующем сеансе работы пакета. 2. Объем данных, которые сохраняются для восстановления работы алгоритма, должен быть минимальным. 3. Схемы алгоритмов должны предусматривать возможность прерывания вычислений для проведения сеанса диалога между пользователем и пакетом. В процессе создания пакетов программ возникает ряд вопросов, эффективное решение которых не может быть выполнено без активного сотрудничества между разработчиками системной части пакета и разработчиками алгоритмов. Такое сотрудничество осуществлялось при разработке ПП ВЕКТОР–2 [12,13]. В 3.2 – 3.4 обсуждается ряд общих вопросов, касающихся разработки пакета. В настоящее время разрабатываются ЭВМ, которые допускают распараллеливание вычислений [9,10]. Это порождает ряд новых требований к алгоритмам, которые предназначены для решения задач на таких ЭВМ. 3.1. Решение оптимизационных задач с ограничениями В этом разделе изучаются возможности решения оптимизационных задач при наличии ограничений, т.е., когда Z P . Основной вопрос, на который здесь обращается внимание, состоит в следующем: при каких типах ограничений из числа указанных во введении применимы указанные методы? Метод ветвей и границ. Приведенная выше схема этого метода позволяет решать задачи при наличии всех четырех типов ограничений. Для этого достаточно пункт 3 схемы заменить на такие: 3. k k 1 . Проверить ограничения. Если ограничения выполняются, то перейти к 3.1, иначе перейти к 7. 3.1. Вычислить нижнюю оценку k на множестве Pk , которое определено компонентами p1 ,..., pk текущей перестановки. Рассмотрим порядок проверки ограничений. 53 1. Фиксированное назначение. Если задано s 1,..., k , то требуется, чтобы pk s . Поэтому достаточно проверить последнее равенство. 2. Запретное назначение. Если задано s 1,..., n такое, что требуется, чтобы pk s , то достаточно проверить последнее неравенство. 3. Непосредственное следование. Если pk равно такому j , для которого задано k1 и требуется, чтобы pk 1 k1 , то достаточно проверить последнее неравенство. 4. Простое следование. Если pk равно такому j , для которого задано l , и требуется, чтобы j l , то достаточно проверить принадлежность l N \ I k . Приведенные правила проверки ограничений можно реализовать в виде отдельных алгоритмов, временная сложность каждого их которых не превосходит O n . Наличие этих алгоритмов позволяет использовать метод ветвей и границ также и для поиска допустимого начального приближения. Метод вектора спада. Приведенная выше схема этого метода также позволяет решать задачи со всеми четырьмя типами ограничений. Для этого достаточно пункт 4 схемы с кольцевым генератором вариантов заменить на такие: 4. s s 1 . Если s k , то s 1 . 4.1. Проверить выполнение ограничений. Если ограничения выполняются, то перейти к 5, иначе перейти к 3. Приведем порядок проверки ограничений при 1 . В этом случае генерация очередной точки окрестности состоит в транспозиции пары компонент перестановки, например, pi и p j . Ограничения 1 (фиксированное назначение) и 2 (запретное назначение) проверяются отдельно для pi и p j так же, как и в методе ветвей и границ. 3. Непосредственное следование. Если pi равно такому l , для которого заданы k1 и / или k2 и требуется, чтобы pi 1 k1 и / или pk 1 k2 , то достаточно проверить эти последние равенства. То же следует проверить для p j . 4. Простое следование. Если pi равно такому s , для которого задано l и требуется, чтобы s l , то достаточно проверить принадлежность l N \ I i . Аналогично, если требуется, чтобы s l , то достаточно проверить, что l N \ I i 1 . Подобную проверку следует провести для p j . Разумеется, что указанные алгоритмы проверки ограничений применимы только в том случае, когда центр окрестности входит в допустимую область. Поэтому метод вектора спада без соответствующей адаптации не может использоваться для поиска начального приближения. 54 Метод Монте–Карло. Приведенная выше схема метода Монте–Карло также приспособлена для решения задач со всеми четырьмя типами ограничений. Для этого достаточно пункт 3 схемы заменить на такие: 3. Проверить ограничения. Если ограничения выполняются, то перейти к 3.1, иначе перейти к 5. 3.1. Вычислить f p . Не будем здесь приводить алгоритмы для проверки ограничений. Отметим только, что эти алгоритмы так же просты, как и в методах ветвей и границ и вектора спада. Отметим одно свойство этой модифицированной схемы алгоритмов для метода Монте–Карло. Так как случайные перестановки равномерно распределены по области P , то вероятность получить некую перестановку p из области Z P равна отношению мощностей этих областей: P pZ Z . P Нетрудно видеть, что последняя величина практически довольно мала, даже при наличии небольшого числа ограничений. Например, если заданы два ограничения типа фиксированное назначение, то Z 1 , P n n 1 что при n 80 составляет величину порядка 1 . 6400 Вероятность того, что при m бросаниях будет получено хотя бы одно допустимое решение, равна m Z 1 1 . P В нашем примере, если взять m 1000 , то получим, что m m Z 1 m 1 1 1 1 1 ... . 1 1 P 6400 6400 6 Машинное время, которое будет затрачено на эти вычисления, будет составлять, например, для линейной задачи о назначениях величину в 8900 сек. (см. табл. 2.11). Приведенные рассуждения показывают практическую неприменимость указанной схемы метода Монте–Карло для получения допустимого решения при наличии ограничений. Можно построить схемы этого метода, применимые для решения отдельных из исследуемых задач при наличии отдельных типов ограничений, однако эти исследования выходят за рамки данной работы. 55 3.2. Прерывание и восстановление вычислительного процесса при решении задач методом ветвей границ и методом вектора спада В ПП ВЕКТОР–2 прерывание вычислительного процесса может инициализироваться такими способами: 1) по специальной команде пользователя, введенной с дисплея; 2) по достижении величиной одного из выделенных параметров вычислительного процесса заданного порога (например, числа осуществленных итераций, изменению значения целевой функции); 3) по истечении заданного интервала времени счета. Рассмотрим общую схему алгоритмов метода ветвей и границ, которые включены в пакет. В этой схеме предусмотрена отработка указанных типов прерываний. 1. 0. Если R 0 , то перейти к 2, иначе перейти к 3. 2. Начало работы алгоритма. Задать текущую перестановку p 1,..., n . F f p . k 0. 3. Блок отработки прерываний. Выработать значение управляющей переменной . Если 0 , то перейти к 4, иначе перейти к 14. 4. Начало прямого движения по дереву решений. 5. k k 1 . Вычислить оценку k на множестве Pk , которое определено компонентами p1 ,..., pk текущей перестановки. 6. Если k n , то перейти к 7, иначе перейти к 8. 7. Если k F , то перейти к 5, иначе перейти к 10. 8. Если k F , то заменить рекорд p p, F k . 9. k k 1 . 10. Начало обратного движения по дереву решений. 11. k k 1 . Компоненты pk 2 ,..., pn текущей перестановки упорядочены по возрастанию. Если среди этих компонент есть большие, чем pk 1 , то из всех таких компонент выбрать наименьшую. Пусть индекс этой компоненты j . 12. Если компонента p j найдена, то выполнить транспозицию pk 1 и p j и перейти к 3, иначе перейти к 13. 13. Если k 0 , то перейти к 11, иначе перейти к 14. 14. Конец работы алгоритма. p – найденное решение в данном сеансе работы пакета. В этой схеме используются такие дополнительные обозначения. Значение кода режима работы R определяется до начала работы алгоритма одним из системных блоков пакета: 0, если пакет начинает решать задачу данным алгоритмом; R 1, если алгоритм продолжает прерванный ранее процесс решения. 56 Код окончания работы алгоритма вырабатывается равным единице, если работа алгоритма завершена из-за того, что найдено решение и нулю, если по иной причине. Блок отработки прерываний, о котором упоминается в пункте 3 схемы, реализован в виде отдельного программного модуля, который выполняет такие функции: 1) осуществляет контроль времени; 2) в случае необходимости инициирует сеанс диалога с пользователем; 3) вырабатывает значения управляющих переменных, в том числе значение управляющей переменной , которая используется непосредственно в алгоритме. В конце работы алгоритма при отработке пункта 14 для последующего использования сохраняются некоторые данные. В их число, кроме исходных данных задачи, входят текущая и рекордная перестановки p и p , а также переменные k и F . Этого объема данных достаточно для восстановления счета в последующих сеансах пакета. Схема работы алгоритма вектора спада также модифицирована с целью удовлетворения перечисленным выше требованиям. Эта схема включает такие пункты. 1. 0. Если R 0 , то перейти к 2, иначе перейти к 4. 2. Начало работы алгоритма. v 1. s 0. и p 0 заданы. 3. v v 1. t 0. 4. Блок отработки прерываний. Выработать значение управляющей переменной . Если 0 , то перейти к 5, иначе перейти к 9. 5. t t 1 . Если t k , то перейти к 9, иначе перейти к 6. 6. s s 1 . Если s k , то s 1 . 7. p s p v . Вычислить v p – очередную компоненту вектора спада. 8. Если v p 0 , то pv 1 pv и перейти к 3, иначе перейти к 4. 9. Конец работы алгоритма. p v – решение, найденное в данном сеансе работы. В этой схеме обозначения , и k имеют тот же смысл, что и в схеме метода ветвей и границ. Для восстановления счета в других сеансах работы сохраняется перестановка p v , а также величины v и t . Остальные величины вычисляются при отработке пункта 3 схе- мы. Вывод, который следует из рассмотрения приведенных схем, состоит в том, что эти схемы достаточно приспособлены для их использования в пакете. 3.3. Планирование вычислительного процесса и создание комбинированных схем алгоритмов Требование обеспечить эффективную работу пакета и создать удобства для пользователей вызвало необходимость максимально автоматизировать процесс функционирования ПП ВЕКТОР–2. Одна из сторон функционирования – процесс выбора алгоритма решения 57 задачи из числа имеющихся в пакете. Если пользователь сам не задает выбор алгоритма, то выбор осуществляет специальный блок, который называется Планировщик алгоритмов. Для выполнения своей работы Планировщику алгоритмов требуется значение ряда величин, характеризующих эффективность алгоритмов при решении задач. Эти сведения первоначально вводятся разработчиком данного алгоритма, а затем уточняются в процессе эксплуатации пакета. Для того, чтобы получить значения этих характеристик алгоритмов, были проанализированы результаты теоретического и экспериментального исследований, которые описаны в главе 2. В ПП ВЕКТОР–2 имеются средства, предоставляющие пользователю возможность решать задачу, составляя комбинированные схемы алгоритмов, имеющихся в пакете. Для успешного функционирования такого комбинированного алгоритма каждый из входящих в него алгоритмов должен удовлетворять соответствующему требованию. Это требование состоит в том, что схема алгоритма должна быть одной и той же независимо от того, в какую комбинированную схему этот алгоритм включается. Приведенные алгоритмы удовлетворяют этому требованию. Кроме того, каждый из алгоритмов использует информацию о решении, полученном предыдущим алгоритмом. В частности, алгоритмы метода вектора спада используют начальное приближение, а метод ветвей и границ использует его как начальную перестановку. Метод среднего значения целесообразно использовать первым в комбинированных схемах. 3.4. Функционирование пакета при решении задач Процесс решения задач с помощью пакета программ ВЕКТОР–2 состоит из трех последовательных этапов: этапа ввода задания и синтаксического контроля, этапа семантического контроля и планирования вычислительного процесса, этапа счета по алгоритму. Рассмотрим особенности функционирования пакета, а также возможности, предоставляемые пользователю по управлению ходом вычислительного процесса на каждом этапе. Будем говорить, каждому этапу решения задачи соответствует одноименное состояние пакета. В общих чертах ход вычислительного процесса представлен на рис.1. Сплошными стрелками на рисунке указана последовательность этапов решения задачи, которая соблюдается при отсутствии вмешательства со стороны пользователя; пунктирные стрелки отражают возможные изменения в чередовании этапов при таком вмешательстве. Начало решения Этап ввода Этап контроля Этап счета Рис.1. Схема процесса решения задачи Конец решения 58 На этапе ввода задания и синтаксического контроля введенный пользователем очередной оператор входного языка сразу же проходит синтаксический контроль и, в случае необходимости, выводится сообщение о характере ошибок в тексте этого оператора. Синтаксически верная часть обрабатывается, и результаты обработки запоминаются. При повторном вводе оператора старые значения его параметров заменяются вновь введенными – этим обеспечивается одна из возможностей коррекции данных. Другая возможность коррекции обеспечивается наличием специальных операторов (например, используя оператор ИСКЛЮЧИТЬ, можно удалить или заменить произвольную часть массива данных [12]). Если введен оператор ВЫПОЛНЯТЬ, пакет переходит в состояние семантического контроля, а если оператор ШАГ, то происходит подготовка к решению следующей задачи. На этапе семантического контроля и планирования вычислительного процесса прежде всего выполняется семантический контроль имеющихся данных. Если ошибки не обнаружены, то происходит адаптация этих данных (перевод данных во внутреннюю форму и вычисление непрямых данных) и планирование вычислительного процесса. Средства входного языка позволяют на этом этапе решения задачи ознакомиться с результатами семантического контроля и планирования вычислительного процесса, просмотреть часть данных, а также вывести пакет из данного состояния. В диалоговом режиме работы предусмотрено три способа вывода пакета из состояния семантического контроля: перевод пакета в состояние ввода задания (оператор ВНИМАНИЕ), отказ от решения данной задачи (оператор СТОП), перевод пакета в состояние счета по алгоритму (оператор ПРОДОЛЖАТЬ). На этапе счета по алгоритму вычислительный процесс может многократно прерываться для обмена сообщениями между пакетом и пользователем. Прерывания могут происходить по одной из трех причин, указанных и рассмотренных в [12]. При каждом прерывании пользователь может получить информацию о ходе вычислительного процесса, дать указание продолжать вычисление по алгоритму (оператор ПРОДОЛЖАТЬ), перевести пакет в состояние ввода (оператор ВНИМАНИЕ), либо отказаться от дальнейшего решения задачи (оператор СТОП). Характеризуя процесс функционирования пакета в целом, отметим такие моменты. Диалоговый режим является основным режимом работы пакета ВЕКТОР–2. В этом режиме функционирование пакета характеризуется многократным переходом из одного состояния в другое. Пакетный режим является частным случаем диалогового, когда вычислительный процесс однократно проходит три рассмотренных выше этапа. При этом вопросы, которые в диалоговом режиме могут решаться пользователем, в пакетном решаются соответствующими блоками планирования работы пакета. За один сеанс работы с помощью пакета может быть последовательно решено несколько задач. Прерывание процесса решения очередной задачи (и тем самым начало решения следующей) может произойти по одной из таких причин: – найдено решение; – исчерпан лимит времени, указанный пользователем; – обнаружена фатальная ошибка в данных при счете в пакетном режиме; – введен пользователем оператор СТОП в диалоговом режиме; 59 – введен оператор ШАГ, означающий начало следующего задания. В первых четырех случаях происходит запись во внешнюю память файла данных, характеризующих текущее состояние вычислительного процесса. Вычисления по этой задаче могут быть продолжены в других сеансах работы с пакетом, при этом режим работы (пакетный, диалоговый) может быть другим. Если же процесс решения задачи был прерван вводом оператора ШАГ, то запись файла данных во внешнюю память не производится, поэтому там остается информация, записанная ранее. Управление вычислительным процессом и процессом обмена сообщениями между пользователем и пакетом на каждом этапе решения задачи осуществляется различными программными блоками пакета. На этапе ввода задания и синтаксического контроля работают блоки анализатора операторов входного языка, синтаксического контроля и интерпретатора директив входного языка. На этапе семантического контроля работают блоки семантического контроля, адаптера исходных данных, синтеза математической модели и планирования вычислительного процесса. На этапе счета работает блок построения машинных алгоритмов оптимизации, блок построения допустимого начального приближения и один из блоков алгоритмов. Когда структура математического обеспечения диалогового пакета такова, что управление его функционированием децентрализовано, важное место занимает решение вопроса об организации обмена информацией между пакетом и пользователем. Рассмотрим подход к решению этого вопроса, который использован при создании ПП ВЕКТОР–2. При создании пакета было введено понятие виртуальной вычислительной машины (ВВМ), которая обладает такими свойствами: 1. Внутренним языком ВВМ является ФОРТРАН–IV. 2. ВВМ имеет одно устройство обмена. Единицей обмена для этого устройства служит строка символов. Устройство обмена ВВМ может работать в одном из трех режимов: вывод строки, ввод строки, вывод и ввод строки. Обращение к устройству обмена из программы на ФОРТРАНе происходит путем вызова CALL специальной системной подпро- граммы. Главная цель, которая преследовалась при вводе понятия ВВМ, состояла в том, чтобы четко разделить программное обеспечение пакета на две части: первая часть не связана с особенностями конкретной ЭВМ, вторая – отражает такие особенности. Системная подпрограмма, предназначенная для выполнения обмена, которая разрабатывается при адаптации пакета к конкретной ЭВМ, имеет простую структуру и незначительный объем. Функции этой подпрограммы состоят в том, чтобы выяснить, какое внешнее устройство служит в данный момент средством обмена и, в зависимости от заданного режима работы, осуществить передачу строки символов от внешнего устройства (терминала) к одному из блоков пакета и обратно. Таким образом, специфика конкретной ЭВМ находит отражение только в структуре подпрограммы обмена, а различным программным блокам пакета обеспечивается возможность унифицированного и простого доступа к внешним устройствам ЭВМ. В результате этого, как показал опыт, созданный пакет обладает простой структурой и, вместе с тем, 60 предоставляет пользователю широкие возможности для управления функционирование пакета в диалоговом режиме. Известно, что расширяется круг задач, при решении которых можно достичь наилучших результатов, если обеспечить гибкое взаимодействие человека с ЭВМ. Чтобы уточнить понятие «гибкое взаимодействие» применительно к ПП для решения задач оптимизации, целесообразно рассмотреть следующий перечень возможностей, которые предоставляются пользователю для коррекции хода вычислительного процесса: 1. Ввод задания и требуемых исходных данных. 2. Коррекция числовых данных. 3. Коррекция варьируемых параметров алгоритмов. 4. Коррекция модели (изменение критерия, введение или удаление ограничений). 5. Изменение алгоритма без переввода остальных данных по задаче. 6. Оперативное вмешательство в ход вычислительного процесса (т.е. до завершения работы алгоритма). Анализ наиболее известных ПП [2,5,12,17,36,37,40], разработанных в последние годы, показывает, что основное внимание уделяется реализации пунктов 1–3, и то время как реализация возможностей, отраженных в пунктах 4–6, осуществляется не всегда в достаточной степени. Все перечисленные возможности в полном объеме реализованы при разработке ПП ВЕКТОР–2. 3.5. Схемы алгоритмов, допускающих распараллеливание вычислений Существуют и разрабатываются многопроцессорные вычислительные комплексы (МВК), в которых распараллеливание реализовано различным образом [10]. В частности, есть МВК, которые допускают распараллеливание на уровне целых программных блоков [9]. Покажем, как модифицировать выбранную схему алгоритмов метода ветвей и границ, а затем схему метода вектора спада с целью реализации на таких ЭВМ. Основная идея создания параллельной схемы алгоритмов метода ветвей и границ состоит в том, чтобы дерево вариантов разбить на множество поддеревьев. Для просмотра каждого поддерева можно использовать отдельный процессор, программа для которого составляется по следующей схеме (эта схема является незначительной модификацией схемы, приведенной в главе 2). 1. Начало программы для процессора q, q 1, L . Считать в память процессора исходные данные задачи. Задана текущая перестановка p p1 ,... pn и конечная перестановка p p1,... pn . Пусть l – наименьший из индексов, для которых pl pl . Если все pl pl , то l n 1 . Вычислить n x xi , j 1 где 61 если i l , 0, xi pi pi, если i l. k n . Перейти к 11. 2. Если x 0 , то перейти к 16. 3. Считать из общей памяти F . 4. Начало прямого движения по дереву вариантов. 5. k k 1 . Если k l 1 pk pk , то перейти к 6, иначе перейти к 7. 6. x x pk pk . l k . 7. Вычислить нижнюю оценку k на множестве Pk , которое определено компонентами p1 ,..., pk текущей перестановки. 8. Если k n , то перейти к 9, иначе перейти к 10. 9. Если k F , то перейти к 5, иначе перейти к 11. 10. Если k F , то заменить рекорд в общей памяти p q p, F q k и в памяти данного процессора F k . 11. k k 1 . 12. Начало обратного движения по дереву вариантов. 13. k k 1 . Если среди компонент pk 2 ,..., pn есть большие, чем pk 1 , то из всех таких компонент выбрать наименьшую. Пусть индекс этой компоненты j . 14. Если компонента p j найдена, то выполнить транспозицию pk 1 и p j , затем упорядочить по возрастанию компоненты pk 2 ,..., pn и перейти к 2, иначе перейти к 15. 15. Если k 0 , то перейти к 13, иначе перейти к 16. q 16. конец работы процессора. Записать во внешнюю память y 1 . Программа работы процессора L 1 составляется по следующей схеме. 1. Задано число процессоров L 1 . Разбить дерево вариантов на поддеревья с примерно равным числом вариантов. Определить тем самым для каждого из процессоров q, q 1, L текущую и конечную перестановки. 2. Задать произвольно рекордную перестановку p . F f p . Записать в общую память p q p , F q F , y q 0, q 1, L . 3. Запустить в работу процессоры q, q 1, L . q 4. Выбрать из всех q такое, чтобы F было минимальным. Записать в общую память q F F q и p p . q 5. Если хотя бы одно значение y 0, q 1, L , то перейти к 4, иначе перейти к 6. q 6. Из всех q 1,... L выбрать такое, чтобы F было минимальным. F F q . p p q . 7. Конец работы алгоритма. p – решение задачи. 62 Приведенные схемы показывают лишь один вариант распараллеливания вычислений при решении задач методом ветвей и границ. Для создания эффективных алгоритмов следует учитывать характеристики конкретной ЭВМ. В частности, можно рассмотреть такой вопрос. Предположим, что время обращения к общей памяти велико по сравнению с выполнением операций во внутренней памяти процессора. Тогда считывание F из общей памяти, которое производится в пункте 3 первой схемы, может недопустимо увеличить время работы алгоритма. В этом случае пункт 3 следует модифицировать так, чтобы считывание выполнять не каждый раз при выполнении этого пункта, а до очередного считывания пользоваться «старым» рекордом. Следует отметить,однако, что при такой модификации время счета может увеличиваться по другой причине: с помощью «старого» рекорда отсекается меньше вариантов. Нам известна одна публикация [42], посвященная разработке алгоритма метода вектора спада для ЭВМ с параллельной организацией вычислений. Этот алгоритм предназначен для решения задачи частично целочисленного программирования специального вида. Покажем, что после незначительных изменений приведенная выше схема вектора спада с линейным генератором вариантов может быть приспособлена для реализации на МВК. Распараллеливание в алгоритме происходит на этапе перебора точек очередной окрестности. Пусть заданное число процессоров равно L 1 . Обозначим через l1 ,..., lL1 натуральные числа, которые делят отрезок 1, k на примерно равные промежутки, причем l1 0, lL1 k . Здесь, как и выше, k – число точек в окрестности радиуса . Схема алгоритма для процессора L 1 включает такие основные пункты. 1. v 1 . Задать . Произвольно задать или определить p 0 p10 ,..., pn0 . 2. Начало очередной итерации. v v 1 . 3. Передать в процессоры q, q 1, L перестановку p v . 4. Принять из процессоров q, q 1, L значения –функции и выбрать из них минимальное, а соответствующую ему перестановку обозначить p v 1 . 5. Если f p v 1 f p v , то перейти к 2, иначе перейти к 6. 6. Конец работы алгоритма. p v – приближенное решение задачи. Схема алгоритма для процессора q, q 1, L включает такие основные пункты. 1. Принять от процессора L 1 перестановку p v . s lq . 0. p pv . 2. Если s lq 1 , то перейти к 6, иначе перейти к 3 . 3. s s 1. p s p v . Вычислить v p – очередную компоненту вектора спада. 4. Если v p , то v p . p p . 5. Перейти к 2. 63 6. Передать в процессор L 1 перестановку p и значение –функции . Перейти к 1. Исследуем зависимость времени работы алгоритма, составленного по двум последним схемам, от числа процессоров L 1 . Используем методику и обозначения, приведенные в работе [10]. Пусть 0n – среднее время выполнения операции (арифметической или логической); 0 – среднее время обмена между процессорами одним числом. Тогда время t1 обработки точек окрестности одним процессором выражается равенством: t1 c1k 0n , где c1 0 – некоторая константа. Эффективность многопроцессорного варианта алгоритма по сравнению с однопроцессорным в работе [10] предлагается оценивать двумя коэффициентами: коэффициентом ускорения k у t1 t L 1 и коэффициентом эффективности kэ ky L 1 . Эффект от распараллеливания считается наилучшим, если k y L 1 , а kэ 1 . Можно показать, что число точек окрестности k является полиномом от n , причем k n 1 ... k 2 k 1 Если обозначить n n 1 . 2 2c2 0 const , то k y и kэ можно оценить снизу: c1 0 n L2 k y L 1 , n n 1 kэ L L2 1 . L 1 n n 1 Из этих неравенств следует, что с ростом n k y стремится к L , а kэ – к 1 . L 1 РЕЗУЛЬТАТЫ И КРАТКИЕ ВЫВОДЫ К ГЛАВЕ 3 1. Показано, как предлагаемые в работе алгоритмы методов ветвей и границ и вектора спада использовать для решения задач оптимизации при наличии ограничений. 2. Показано, что реализация этих алгоритмов методов ветвей и границ и вектора спада в рамках ПП обеспечивает возможность организации прерывания процесса счета и восстановления его в последующих сеансах работы пакета. 3. Изучаемые алгоритмы могут использоваться для создания комбинированных схем алгоритмов, позволяющих повысить эффективность процесса решения комбинаторных задач оптимизации. 64 4. Проведенный численный эксперимент позволил получить сведения, необходимые для повышения эффективности работы ПП ВЕКТОР–2 при решении рассматриваемых в работе задач. 5. Использование введенного при разработке ПП ВЕКТОР–2 понятия виртуальной вычислительной машины позволило достичь высокой степени мобильности программного обеспечения, а также обеспечить создание пакета простой структуры и, вместе с тем, представить пользователям пакета широкие возможности для управления его функционированием в диалоговом режиме. 6. Предложены и исследованы алгоритмы метода ветвей и границ и метода вектора спада, предназначенные для реализации на многопроцессорном вычислительном комплексе. 65 ОСНОВНЫЕ РЕЗУЛЬТАТЫ И ВЫВОДЫ 1. Осуществлена формализация и проведено исследование ряда важных в практическом и теоретическом отношении задач (размещения, теории расписаний и др.), сформулированных как комбинаторные задачи оптимизации. 2. Предложен ряд новых алгоритмов решения выделенного класса задач и исследована их эффективность. 3. Разработаны принципы организации и функционирования мобильных ПП для решения задач комбинаторной оптимизации, которые нашли применение при создании ПП ВЕКТОР–2. 4. Проведен численный эксперимент по решению широкого круга практических и тестовых задач комбинаторной оптимизации, который подтвердил эффективность предложенных алгоритмов. 5. Разработаны компоненты модульного программного обеспечения пакета программ ВЕКТОР–2, в котором реализованы основные алгоритмы, предложенные в диссертации. 6. Разработаны алгоритмы решения задач из выбранного класса, предназначенные для реализации на ЭВМ с параллельной организацией вычислений. 66 СПИСОК ЛИТЕРАТУРЫ 1. Ахо А., Хопкфорт Дж., Ульман Дж. Построение и анализ вычислительных алгоритмов. – М.: Мир, 1979. – 536 с. 2. Батищев Д. И., Бедная Р. И., Комардин В. М. Решение задач поисковой оптимизации в интерактивном режиме. В кн.: Интерактивная технология в САПР. – Таллин: НИИ Таллинского электротехнического завода им. М. И. Калинина, 1981, с. 26–27. 3. Бурдюк В. Я. Дискретные метрические пространства. – Днепропетровск: ДГУ, 1982. –99 с. 4. Бусленко Н. П., Шрейдер Ю. А. Метод статистических испытаний (Монте-Карло) и его реализация на цифровых вычислительных машинах. – М: Физматгиз, 1961. –231 с. 5. Веселов В. Н., Евтушенко Ю. Г., Мазурик В. П. Содержательные возможности диалоговой системы оптимизации (ДИСО) В кн.: Проблемы вычислительной техники. М.: Международный центр науч. и техн. информации, 1981, с. 110–112. 6. Волкович В. Л., Волошин А. Ф. Об одной общей схеме последовательного анализа и отсеивания вариантов. – Кибернетика, 1978, № 5, с. 98 –105. 7. Голенко Д. И. Моделирование и статистический анализ псевдослучайных чисел на электронных вычислительных машинах. – М.: 1965. 229 с. 8. Глушков В. М. О системной оптимизации. – Кибернетика, 1980, № 5, с. 89 – 90. 9. Глушков В. М., Капитонова Ю. В., Летичевский А. А., Горлач С. П. Макроконвейерные вычисления функций над структурами данных. – Кибернетика, 1981, № 4, с. 13 – 21. 10. Глушков В. М., Молчанов И. Н. О некоторых проблемах решения задач на ЭВМ с параллельной организацией вычислений. – Кибернетика, 1981, № 4, с. 82 – 88. 11. Гуляницкий Л. Ф., Сергиенко И. В., Ходзинский А. Н. Об одном пакете программ решения задач размещения дл ЭВМ БЭСМ–6. В кн.: II Республиканская конференция «Вычислительная математика в современном научно–техническом прогрессе». Тезисы докладов. – Киев: ИК АН УССР, 1978, с. 190 – 191. 12. Гуляницкий Л. Ф., Сергиенко И. В., Ходзинский А. Н. Диалоговый пакет программ ВЕКТОР–2. – Киев: ИК АН УССР, 1981. – 55 с. (Препринт/АН УССР. Ин–т кибернетики: 81– 63). 13. Гуляницкий Л. Ф., Сергиенко И. В., Ходзинский А. Н. О принципах решения задач комбинаторной оптимизации в пакете программ ВЕКТОР–2. – В кн.: Моделирование и оптимизация в САПР. Тезисы докладов V Всесоюзного совещания по автоматизации проектирования электротехнических устройств. Часть II. – Таллин: НИИ ПО Таллинский электротехнический завод им. М. И. Калинина, 1983, с. 37 – 39. 14. Гуляницкий Л. Ф., Ходзинский А. Н. Особенности реализации метода ветвей и границ и метода вектора спада в пакете ВЕКТОР–IВ. – В кн. Вычислительные аспекты в пакетах прикладных программ. Сб. научн. тр. – Киев: ИК АН УССР, 1979, с. 45 – 48. 15. Гэри М., Джонсон Д. Вычислительные машины и труднорешаемые задачи. – М.: Мир, 1982, 416 с. 67 16. Емеличев В. А., Комлик В. И. Метод построения последовательности планов для решения задач дискретной оптимизации. – М.: Наука, 1981. – 208 с. 17. Желиховский А. А. Принципы организации диалоговой системы «ПИОНЕР». – Кибернетика, 1978, № 5, с. 62 – 67. 18. Журавлев Ю. И. Локальные алгоритмы вычисления информации. I. – Кибернетика, 1965, № 1, с. 12 – 19. 19. Журавлев Ю. И. Локальные алгоритмы вычисления информации. I. – Кибернетика, II. – Кибернетика, 1966, № 2, с. 1 – 11. 20. Журавлев Ю. И., Финкельштейн . Ю. Ю. Локальный алгоритм для задач целочисленного программирования. – В кн.: Проблемы кибернетики, 1965, вып. 14, с. 289 – 296. 21. Журавлев Ю. И. Корректные алгебры над множествами некорректных (эвристических) алгоритмов. I. – Кибернетика, 1977, № 4, с. 14 – 21. 22. Карманов В. Г. Математическое программирование. – М.: Наука, 1975. – 272 с. 23. Карп Р. М. Сводимость комбинаторных проблем. – В кн.: Кибернетический сборник. Новая серия, 1975, вып.12, с. 16 – 36. 24. Каспшицкая М. Ф., Сергиенко И. В., Хильченко В. И. Об одном подходе к решению задач размещения. – Кибернетика, 1974, № 5, с. 51–60. 25. Кейс П., Граф Г., Гриффит Л. и др. Автоматизация проектирования вычислительных систем с использованием логических схем на твердом теле. – В кн.: Кибернетический сборник: Сб. статей. М.: Мир, 1965, вып.1, с. 71–86. 26. Ковалев М. М., Котов В. М. Анализ градиентного решения задачи коммивояжера. – ЖВМ и МФ, М.: 1981, № 4, с. 1035–1038. 27. Конвей Р. В., Максвелл В. Л., Миллер Л. В. Теория расписаний. – М.: Наука, 1975. – 375с. 28. Крапчин А. И., Покровский А. Н., Мальчинов Е. Н. Компоновка и размещение модулей при автоматизации проектирования радиоэлектронной аппаратуры. – Автоматика и вычислительная техника, 1965, № 5, с. 7–11. 29. Кристофидес Н. Теория графов. Алгоритмический подход. – М.: Мир, 1978, 432 с. 30. Математическое обеспечение ЕС ЭВМ, вып. 9. – Минск: Институт математики АН БССР, 1973, с. 117–123. 31. Мелихов А. Н., Берштейн Л. С., Курейчик В. М. Применения графов для проектирования дискретных устройств. – М.: Наука, 1974. 32. Михалевич В. С. Последовательные алгоритмы оптимизации и их применение. – Кибернетика1965, № 1, с. 45–55. 33. Михалевич В. С. Последовательные алгоритмы оптимизации и их применение. – Кибернетика1965, № 2, с. 85–89. 34. Михалевич В. С., Волкович В. Л. Вычислительные методы исследования и проектирования сложных систем. – М.: Наука, 1982. –286 с. 35. Михалевич В. С., Кукса А. И. Методы последовательной оптимизации в дискретных сетевых задачах оптимального распределения ресурсов. – М.: Наука, 1983. –208 с. 68 36. Михалевич В. С., Сергиенко И. В., Лебедев Т.Т. и др. Пакет прикладных программ ДИСПРО, предназначены для решения задач дискретного программирования. – Кибернетика, 1981, № 3, с. 117–137. 37. Михалевич В. С., Сергиенко И. В., Трубин В. А. и др. Пакет программ для решения задач производственно–транспортного планирования большой размерности (ПЛАНЕР). – Кибернетика, 1983, № 3, с. 57–71. 38. Михалевич В. С., Шор Н. З. Метод последовательного анализа вариантов при решении вариационных задач управления, планировании и проектирования. – В кн.: Докл. на IV Всесоюзном математическом съезде М., 1961. –91 с. 39. Пашкеев С. Д., Минязов Р. И., Могилевский В. Д. Машинные методы оптимизации в технике связи. – М.: Связь, 1976. – 272 с. 40. Пецко А. А., Цветков А. А. Состав и функциональные характеристики пакета математического программирования ПМП–2. – Управляющие системы и машины, 1983, № 3, с. 94–96. 41. Селютин В.А. Машинное конструирование электронных устройств. – М.: Советское радио. 1979. –383 с. 42. Семенова Н. В. Алгоритм решения одной задачи целочисленного программирования с использованием параллельных вычислений. – В кн.: III Республиканская конференция «Вычислительная математика в современном научно–техническом прогрессе». Киев, 14– 16 сентября 1982 г.: Тезисы докладов. – Киев: ИК АН УССР, 1982, с. 101–102. 43. Сергиенко И. В. О применении метода вектора спада для решения задач оптимизации комбинаторного типа. – Управляющие системы и машины, 1975, № 2, с. 86–94. 44. Сергиенко И. В., Каспшицкая М. Ф. Модели и методы решения на ЭВМ комбинаторных задач оптимизации. – Киев: Наукова думка, 1981. – 288 с. 45. Сергиенко И. В., Лебедева Т. Т., Рощин В. А. Приближенные методы решения дискретных задач оптимизации. – Киев: Наукова думка, 1980. – 276 с. 46. Стоян Ю. Г., Соколовский В. З. Решение некоторых многоэкстремальных задач методом сужающихся окрестностей. – Киев: Наукова думка, 1980. –206 с. 47. Финкельштейн Ю. Ю. Приближенные методы и прикладные задачи дискретного программирования. – М.: Наука, 1976. –264 с. 48. Ханан М., Курцберг Дж. М. Методы размещения. – В кн.: Теория и методы автоматизации проектирования вычислительных систем. – М.: Мир, 1977, с. 147–225. 49. Хелд М., Карп Р. М. Применение динамического программирования к задачам упорядочения. – Кибернетический сборник, М.: Мир, 1964, № 9, с. 202–218. 50. Ходзинский А. Н. Результаты машинного эксперимента по решению одного типа задач теории расписаний методом ветвей и границ и методом вектора спада. – В кн.: Разработка технических и математических средств АСУ. Сборник научных трудов – Киев: ИК АН УССР, 1978, с. 17–24. 51. Ходзинский А. Н. Об одном алгоритме поиска начального приближения в задачах размещения узлов ЭВМ. – В кн.: Вычислительные аспекты в пакетах прикладных программ. Сборник научных трудов – Киев: ИК АН УССР, 1979, с. 39–44. 69 52. Ходзинский А. Н. Формализация и алгоритм решения одной задачи распределения интегральных схем по конструктивным узлам ЭВМ. – В кн.: Дискретные системы управления. Сборник научных трудов – Киев: ИК АН УССР, 1980, с. 66–68 53. Ходзинский А. Н. Использование закона распределения значений целевой функции при решении задач комбинаторной оптимизации. – В кн.: Всесоюзный научно–практический семинар «Прикладные аспекты управления сложными системами». Тезисы докладов. – М.: Всесоюзный совет научно–технических обществ, 1983, с. 225–226. 54. Ходзинский А. Н. Статистические свойства критерия и их использование в алгоритмах решения задач комбинаторной оптимизации. В кн.: применение случайного поиска при решении прикладных задач. Тезисы докладов 3-го рабочего совещания «Статистические методы в угольной промышленности». (Междуреченск, 12–16 марта 1984 года). – Кемерово: Кемеровский областной совет НТО, 1984, с. 41–42. 55. Юрин С. Н. Единая система автоматизации проектирования ЭВМ. – М.: Советское радио, 1976. –175 с. 56. Яблонский С. В. Об алгоритмических трудностях синтеза минимальных контактных схем. – В кн.: Проблемы кибернетики, М.: 1959, вып. 2, с. 75–122. 57. Burkard R. E. Stratmann K. H. Numerical investigations on quadratic assignment problems. – Naval research logistics quarterly, 1978, v. 25 N1, p. 129–148. 58. Gilmore P. C. Optimal and suboptimal algorithms for the quadratic assignment problem. – “I. SIAM”, 1962, v. 10, No 2, p. 305–313. 59. Land A. H. Doig A. G. An automatic method of solving discrete programming problems. – Econometcrica, 1960, 28. No 3, p. 497–520. 60. Lover E. L. The quadratic assignment problem. – “Management science”. 1963, v. 9, No 4, p. 586–599. 61. Little I. D. C., Murty K. G., Sweeney D. W., Karel C. An algorithm for traveling salesman problem. – Operat. Res., 1963.11, N 6, p. 972–989.