SlideShare a Scribd company logo
1 of 43
Структурный синтез и
планирование вычислений
Костенко Валерий Алексеевич
kost@cs.msu.su
Прикладные области
• Информационно-управляющие системы реального
времени (встроенные системы):
– авиационные,
– корабельные,
– автомобильные,
– роботы,
– автоматизированные системы управления технологическими
процессами.
• Центры обработки данных в том числе и
распределенные ЦОД.
– Предоставление вычислительных ресурсов пользователям
(например, «Ростелеком»).
– Использование ЦОД для обеспечения собственных
потребностей в вычислениях (например, «Сбербанк»).
Задачи комбинаторной оптимизации
Множество решений включает всевозможные:
• размещения исходно заданных объектов,
• упорядочивания исходно заданных объектов,
• разбиения на группы исходно заданных объектов.
Комбинаторная оптимизация включает в себя задачи
оптимизации, в которых множество допустимых
решений дискретно или может быть сведено к
дискретному множеству.
Этапы решения задачи
• Содержательная формулировка задачи
• Математическая формулировка задачи
• Анализ свойств задачи
• Выбор класса алгоритмов (или выбор
известного алгоритма)
• Разработка и реализация алгоритма
• Исследование свойств алгоритма
Задача о рюкзаке
(содержательная формулировка)
Дан рюкзак заданного объема и набор предметов.
Каждый предмет характеризуется:
• стоимостью
• и объемом.
Требуется упаковать рюкзак так, чтобы:
 суммарная стоимость упакованных предметов была
максимальной;
 суммарный объем упакованных предметов не превышал
объем рюкзака.
Задача о рюкзаке
(математическая формулировка)
Дано:
•b - объем рюкзака,
•{(ai , ci), I = 1,…,n}
n – число предметов,
ai и ci. - объем и стоимость предмета i.
Решение будем описывать вектором:
X = (x1,, x2, ….,xn)
Если предмет упакован в рюкзак, то xi=1, если нет xi=0.
Задача о рюкзаке
(математическая формулировка)
Целевая функция:
Функция ограничений:
.
)(max
1


n
i
ii
X
xc
bxa
n
i
ii 1
Задача о рюкзаке
(анализ свойств задачи)
Если все коэффициенты ai целые числа и b целое число, то
задача является NP-трудной.
Если все коэффициенты ai вещественные, то задача может
быть решена жадным алгоритмом сложности O(n∙log n).
Задача о рюкзаке
(алгоритм решения непрерывной задачи)
Вычислим относительную стоимость всех товаров в расчете
на единицу объема:
Оптимальный жадный алгоритм для непрерывной задачи
заключается в следующем:
•сначала в рюкзак укладывается по максимуму товар с самой
дорогой относительной стоимостью,
•если товар закончился, а рюкзак не заполнен, то
укладывается следующий по относительной стоимости товар,
затем следующий, и так далее, пока не набран вес b .
ii ac
Задача коммивояжера
Задачу коммивояжёра можно представить в виде нахождения
маршрута на графе.
Вершины графа – города.
Ребра - пути сообщения между
этими городами.
Каждому ребру сопоставлен вес.
Задача заключается в отыскании кратчайшего маршрута, в
который входит по одному разу каждая вершина графа.
Длина маршрута - сумма весов входящих в него ребер.
Задача коммивояжера
Маршрут может быть описан циклической перестановкой
номеров городов:
где - номер города находящийся в i –ой позиции
перестановки.
Пространством поиска решений является множество
перестановок n городов, таких, что все разные
и
Данная задача принадлежит к классу NP-трудных задач.
),,,( 121  nn jjjjJ 
ij
njjj ,, 21
11  njj
Итерационные алгоритмы построения
расписаний
• Алгоритмы случайного поиска
• Имитация отжига
• Муравьиные алгоритмы
• Генетические и эволюционные алгоритмы
f(HP)
HPHP1 HP2 HP3
Алгоритмы имитации отжига
• Алгоритмы имитации отжига с некоторой вероятностью
допускают переход в состояние с более высоким значением
целевой функции:
• где T - некоторая температура, - изменение целевой
функции.
• В ходе работы алгоритма температура постепенно снижается.






 
0),exp(
0,1
)( 1
F
T
F
F
XXP kk
F
Генетический алгоритм Холланда
(SGA)
• Holland J.N. Adaptation in Natural and
Artificial Systems. Ann Arbor, Michigan:
Univ. of Michigan Press, 1975.
Генетический алгоритм Холланда
(SGA)
• Основан на использовании
механизмов естественной эволюции:
1. Изменчивость → операция мутации
2. Наследственность → операция
скрещивания
3. Естественный отбор → операция селекции
Основные понятия
• Популяция - это множество битовых строк.
• Каждая строка - одно из возможных
решений задачи.
• По строке может быть вычислена функция
выживаемости, которая характеризует
качество решения.
• Основные операции алгоритма: селекция,
скрещивание и мутация выполняются над
элементами популяции.
Схема ГА
1. Сгенерировать случайным образом начальную
популяцию.
2. Вычислить функцию выживаемости для каждой строки
популяции.
3. Выполнить операцию селекции.
4. Выполнить операцию скрещивания:
– Выбрать пары для скрещивания.
– Для каждой выбранной пары выполнить скрещивание, получить
двух потомков и произвести в популяции замену родителей на их
потомков.
5. Выполнить операцию мутации.
6. Если критерий останова не достигнут, перейти к п.2,
иначе завершить работу.
Операция селекции
• Схема пропорциональной селекции:
• Схема рулетки:
…
Операция скрещивания
Операция мутации
Критерий останова
• Процесс продолжается итерационно
• Варианты критерия останова:
– Выполнение заданного числа итераций
– Выполнение заданного числа итераций без улучшения
функции выживаемости
– Достижение заданного значения функции выживаемости
Муравьиные алгоритмы
Муравьиные алгоритмы
(биологическая модель)
1. Изначально
вероятности выбора
маршрутов равны
2. Муравьи, выбравшие
кратчайший маршрут,
возвращаются
быстрее, количество
феромона на коротких
маршрутах больше
3. Вероятность выбора
кратчайшего маршрута
повышается
Муравьиные алгоритмы
(МА для решения задачи коммивояжера)
Общая схема итерации:
• «Создание» муравьев
• Построение маршрутов
муравьями
• Обновление
феромонного следа на
найденных маршрутах
Муравьиные алгоритмы
(построение маршрута)
- количество феромона на ребре (i,j),
τij(t) - значение локальной целевой функции на ребре
(i,j),
Lk – множество вершин, включенных в табу-список
муравья k,
a ≥ 0 и b ≥ 0 - параметры алгоритма, определяющие
важность феромонного следа и локальной целевой
функции.
)(tij
Муравьиные алгоритмы
(построение маршрута)
 
     
     











 

k
k
Jl
ilil
ijij
kij
Lj
Lj
tt
tt
tP
k
,0
,
,




ii
j
Муравьиные алгоритмы
(обновление феромонов)
Tk(t) – маршрут, построенный k-м муравьем,
F(Tk(t)) – целевая функция, определяющая качество
пути,
m – количество муравьев,
p [0,1] – коэффициент испарения феромонов.
Муравьиные алгоритмы
(обновление феромонов)
ii
j
       


m
k
kijijij ttpt
1
,11 
 
      
   





tTji
tTjitTF
t
k
kk
kij
,,0
,,
,
Муравьиные алгоритмы
(использование для построения расписаний)
Построение маршрутов
Построение расписаний
по маршрутам
Обновление
феромонного следа
Вычисление целевых
функции
останов?
нет
да
Конструктивные алгоритмы построения
расписаний
• Жадные алгоритмы
• Метод ветвей и границ
• Алгоритмы сочетающие жадные стратегии и
стратегии ограниченного перебора
523 76
2
4
t
1
2 3
4
t
1
2 3 5
4
t
1
6 7
Задача построения расписания выполнения
работ в одноприборном устройстве
• Шина может рассматриваться как
одноприборное устройство, обслуживающее
исходно заданный набор работ без
прерываний.
• Расписание выполнения работ, представляет
собой упорядоченное множество
• - исходно заданный набор работ
  JjsH
HN
kj  
,1
*
)},,{( jjj fstJ 
Задача построения расписания выполнения
работ в одноприборном устройстве
• Множество корректных расписаний
определим набором ограничений:
*
'
H
 
 
 ))()(())()((),),((:
)(:
)()()(:
3
2
1






ljljljlj
jjj
jjjj
ffsffsssljHljg
tsfHjg
ffssHjg
Жадные алгоритмы
(построение расписания выполнения работ
в одноприборном устройстве)
• Для частной задачи:
• известен оптимальный жадный алгоритм
сложности O(n∙log n).
jjj
HH
sftj
H


:
max*'
Жадные алгоритмы
(GrA - алгоритм построения расписания для
одноприборного устройства)
1. Упорядочиваем работы по возрастанию fj.
Заявки с одинаковым значением fj
располагаем в произвольном порядке.
Сложность - O(n∙log n).
2. Размещаем в расписание работу j=1.
3. Ищем первую работу для которой si≤ fj ,
размещаем ее в расписание и j=i.
4. Шаги 2, 3 повторяем пока список не
исчерпан. Количество повторов - O(n).
Иллюстрация работы алгоритма
0 1 2 3 7654 8 9 10 11 12
s1 f1
s2 f2 f3s3
Иллюстрация работы алгоритма
0 1 2 3 7654 8 9 10 11 12
s1 f1
s2 f2 f3s3
Иллюстрация работы алгоритма
0 1 2 3 7654 8 9 10 11 12
s1 f1
s2 f2 f3s3
Список не
размещенных работ
Иллюстрация работы алгоритма
0 1 2 3 7654 8 9 10 11 12
s1 f1
f3s3
Иллюстрация работы алгоритма
0 1 2 3 7654 8 9 10 11 12
s1 f1 f3s3
Алгоритмы сочетающие жадные стратегии и
стратегии ограниченного перебора
Выбор очередной ВМ (k1)
Построение мн. допустимых серверов (А)
для размещения ВМ
А=0
Разместить ВМ
Выбор места
размещения (k2)
Вызов процедуры
ограниченного перебора
нет да
Ограниченный перебор
4
3
5
2
3
5
2
4
4
1
1
R1 R2 R3
5
n=2 (R1,R2)
R1: 5, 5
R2: 3, 3, 4
R3: 4, 4, 1
n=3 (R1,R2, R3)
R1: 5, 5
R2: 3, 3, 4
R3: 4, 1, 5
Направления работы
Разработка алгоритмов решения конкретных задач структурного
синтеза и планирования вычислений:
• информационно-управляющие системы реального времени,
• центры обработки данных.
Разработка новых подходов к построению алгоритмов и
модификаций известных классов алгоритмов. Примеры:
• генетический алгоритм с самообучением,
• метод построения алгоритмов сочетающих жадные стратегии и
ограниченный перебор.
Машинное обучение:
• алгоритмы построения и обучения нейросетей для встроенных систем;
• алгоритмы построения и обучения нейросетей для больших баз данных.
Костенко Валерий Алексеевич
kost@cs.msu.su

More Related Content

What's hot

ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...Alexey Paznikov
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Mikhail Kurnosov
 
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Ontico
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Mikhail Kurnosov
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Mikhail Kurnosov
 
Лекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusЛекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusMikhail Kurnosov
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Mikhail Kurnosov
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksMikhail Kurnosov
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Mikhail Kurnosov
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPMikhail Kurnosov
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Mikhail Kurnosov
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахromovpa
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Mikhail Kurnosov
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Mikhail Kurnosov
 
Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Alexander Mezhov
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Nikolay Grebenshikov
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Nikolay Grebenshikov
 
Стабилизация программных движений маятника переменной длины на вращающемся ос...
Стабилизация программных движений маятника переменной длины на вращающемся ос...Стабилизация программных движений маятника переменной длины на вращающемся ос...
Стабилизация программных движений маятника переменной длины на вращающемся ос...Theoretical mechanics department
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Alexey Paznikov
 

What's hot (20)

ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
ПВТ - весна 2015 - Лекция 1. Актуальность параллельных вычислений. Анализ пар...
 
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)Семинар 3. Многопоточное программирование на OpenMP (часть 3)
Семинар 3. Многопоточное программирование на OpenMP (часть 3)
 
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
Хочу знать, сколько уникальных посетителей было на моём сайте за произвольный...
 
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)Семинар 6. Многопоточное программирование на OpenMP (часть 6)
Семинар 6. Многопоточное программирование на OpenMP (часть 6)
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 
Лекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk PlusЛекция 7. Язык параллельного программирования Intel Cilk Plus
Лекция 7. Язык параллельного программирования Intel Cilk Plus
 
Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)Семинар 12. Параллельное программирование на MPI (часть 5)
Семинар 12. Параллельное программирование на MPI (часть 5)
 
Лекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building BlocksЛекция 8. Intel Threading Building Blocks
Лекция 8. Intel Threading Building Blocks
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Лекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMPЛекция 6. Стандарт OpenMP
Лекция 6. Стандарт OpenMP
 
Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)Семинар 8. Параллельное программирование на MPI (часть 1)
Семинар 8. Параллельное программирование на MPI (часть 1)
 
Факторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системахФакторизационные модели в рекомендательных системах
Факторизационные модели в рекомендательных системах
 
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)Семинар 7. Многопоточное программирование на OpenMP (часть 7)
Семинар 7. Многопоточное программирование на OpenMP (часть 7)
 
CUDA Best Practices (2-3)
CUDA Best Practices (2-3)CUDA Best Practices (2-3)
CUDA Best Practices (2-3)
 
Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)Семинар 9. Параллельное программирование на MPI (часть 2)
Семинар 9. Параллельное программирование на MPI (часть 2)
 
Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Introduction in CUDA (1-3)
Introduction in CUDA (1-3)
 
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
Лекция №15. Методы программирования. Предмет "Структуры и алгоритмы обработки...
 
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
Лекция №2. Алгоритмические проблемы. Стандартные схемы программ. Предмет "Тео...
 
Стабилизация программных движений маятника переменной длины на вращающемся ос...
Стабилизация программных движений маятника переменной длины на вращающемся ос...Стабилизация программных движений маятника переменной длины на вращающемся ос...
Стабилизация программных движений маятника переменной длины на вращающемся ос...
 
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
Кулагин И.И., Пазников А.А., Курносов М.Г. Оптимизация информационных обменов...
 

Similar to 2020 03-31-lection

Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шагиAnton Gorokhov
 
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOMYuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOMOdessaJS Conf
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013AliyaAringazinova
 
Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...Mikhail Kurnosov
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioAndrey Karpov
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive ExtensionsGetDev.NET
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3etyumentcev
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3Eugeniy Tyumentcev
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Mikhail Kurnosov
 
BigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationBigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationAnton Gorokhov
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Hack Days
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке СиPositive Development User Group
 
Formal verification of C code
Formal verification of C codeFormal verification of C code
Formal verification of C codeDenis Efremov
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.sharikdp
 
практика 12
практика 12практика 12
практика 12student_kai
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2Vladimir Krylov
 
Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Dmitry Tsitelov
 

Similar to 2020 03-31-lection (20)

Big Data - первые шаги
Big Data - первые шагиBig Data - первые шаги
Big Data - первые шаги
 
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOMYuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
Yuriy Sherstyuk - Algorithms in Front End: from V8 to VDOM
 
тема множество для загрузки 2013
тема множество для загрузки 2013тема множество для загрузки 2013
тема множество для загрузки 2013
 
Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...Распределенные мультикластерные вычислительные системы и параллельное мультип...
Распределенные мультикластерные вычислительные системы и параллельное мультип...
 
Принципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-StudioПринципы работы статического анализатора кода PVS-Studio
Принципы работы статического анализатора кода PVS-Studio
 
Reactive Extensions
Reactive ExtensionsReactive Extensions
Reactive Extensions
 
4 algoritm
4 algoritm4 algoritm
4 algoritm
 
Алгоритм
АлгоритмАлгоритм
Алгоритм
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3разработка серверов и серверных приложений лекция №3
разработка серверов и серверных приложений лекция №3
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
 
BigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: PersonalizationBigData Week Moscow 2013 - Case: Personalization
BigData Week Moscow 2013 - Case: Personalization
 
Sokolov
SokolovSokolov
Sokolov
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Формальная верификация кода на языке Си
Формальная верификация кода на языке СиФормальная верификация кода на языке Си
Формальная верификация кода на языке Си
 
Formal verification of C code
Formal verification of C codeFormal verification of C code
Formal verification of C code
 
чернякова г.в.
чернякова г.в.чернякова г.в.
чернякова г.в.
 
практика 12
практика 12практика 12
практика 12
 
!Predictive analytics part_2
!Predictive analytics part_2!Predictive analytics part_2
!Predictive analytics part_2
 
Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)
 

2020 03-31-lection

  • 1. Структурный синтез и планирование вычислений Костенко Валерий Алексеевич kost@cs.msu.su
  • 2. Прикладные области • Информационно-управляющие системы реального времени (встроенные системы): – авиационные, – корабельные, – автомобильные, – роботы, – автоматизированные системы управления технологическими процессами. • Центры обработки данных в том числе и распределенные ЦОД. – Предоставление вычислительных ресурсов пользователям (например, «Ростелеком»). – Использование ЦОД для обеспечения собственных потребностей в вычислениях (например, «Сбербанк»).
  • 3. Задачи комбинаторной оптимизации Множество решений включает всевозможные: • размещения исходно заданных объектов, • упорядочивания исходно заданных объектов, • разбиения на группы исходно заданных объектов. Комбинаторная оптимизация включает в себя задачи оптимизации, в которых множество допустимых решений дискретно или может быть сведено к дискретному множеству.
  • 4. Этапы решения задачи • Содержательная формулировка задачи • Математическая формулировка задачи • Анализ свойств задачи • Выбор класса алгоритмов (или выбор известного алгоритма) • Разработка и реализация алгоритма • Исследование свойств алгоритма
  • 5. Задача о рюкзаке (содержательная формулировка) Дан рюкзак заданного объема и набор предметов. Каждый предмет характеризуется: • стоимостью • и объемом. Требуется упаковать рюкзак так, чтобы:  суммарная стоимость упакованных предметов была максимальной;  суммарный объем упакованных предметов не превышал объем рюкзака.
  • 6. Задача о рюкзаке (математическая формулировка) Дано: •b - объем рюкзака, •{(ai , ci), I = 1,…,n} n – число предметов, ai и ci. - объем и стоимость предмета i. Решение будем описывать вектором: X = (x1,, x2, ….,xn) Если предмет упакован в рюкзак, то xi=1, если нет xi=0.
  • 7. Задача о рюкзаке (математическая формулировка) Целевая функция: Функция ограничений: . )(max 1   n i ii X xc bxa n i ii 1
  • 8. Задача о рюкзаке (анализ свойств задачи) Если все коэффициенты ai целые числа и b целое число, то задача является NP-трудной. Если все коэффициенты ai вещественные, то задача может быть решена жадным алгоритмом сложности O(n∙log n).
  • 9. Задача о рюкзаке (алгоритм решения непрерывной задачи) Вычислим относительную стоимость всех товаров в расчете на единицу объема: Оптимальный жадный алгоритм для непрерывной задачи заключается в следующем: •сначала в рюкзак укладывается по максимуму товар с самой дорогой относительной стоимостью, •если товар закончился, а рюкзак не заполнен, то укладывается следующий по относительной стоимости товар, затем следующий, и так далее, пока не набран вес b . ii ac
  • 10. Задача коммивояжера Задачу коммивояжёра можно представить в виде нахождения маршрута на графе. Вершины графа – города. Ребра - пути сообщения между этими городами. Каждому ребру сопоставлен вес. Задача заключается в отыскании кратчайшего маршрута, в который входит по одному разу каждая вершина графа. Длина маршрута - сумма весов входящих в него ребер.
  • 11. Задача коммивояжера Маршрут может быть описан циклической перестановкой номеров городов: где - номер города находящийся в i –ой позиции перестановки. Пространством поиска решений является множество перестановок n городов, таких, что все разные и Данная задача принадлежит к классу NP-трудных задач. ),,,( 121  nn jjjjJ  ij njjj ,, 21 11  njj
  • 12. Итерационные алгоритмы построения расписаний • Алгоритмы случайного поиска • Имитация отжига • Муравьиные алгоритмы • Генетические и эволюционные алгоритмы f(HP) HPHP1 HP2 HP3
  • 13. Алгоритмы имитации отжига • Алгоритмы имитации отжига с некоторой вероятностью допускают переход в состояние с более высоким значением целевой функции: • где T - некоторая температура, - изменение целевой функции. • В ходе работы алгоритма температура постепенно снижается.         0),exp( 0,1 )( 1 F T F F XXP kk F
  • 14. Генетический алгоритм Холланда (SGA) • Holland J.N. Adaptation in Natural and Artificial Systems. Ann Arbor, Michigan: Univ. of Michigan Press, 1975.
  • 15. Генетический алгоритм Холланда (SGA) • Основан на использовании механизмов естественной эволюции: 1. Изменчивость → операция мутации 2. Наследственность → операция скрещивания 3. Естественный отбор → операция селекции
  • 16. Основные понятия • Популяция - это множество битовых строк. • Каждая строка - одно из возможных решений задачи. • По строке может быть вычислена функция выживаемости, которая характеризует качество решения. • Основные операции алгоритма: селекция, скрещивание и мутация выполняются над элементами популяции.
  • 17. Схема ГА 1. Сгенерировать случайным образом начальную популяцию. 2. Вычислить функцию выживаемости для каждой строки популяции. 3. Выполнить операцию селекции. 4. Выполнить операцию скрещивания: – Выбрать пары для скрещивания. – Для каждой выбранной пары выполнить скрещивание, получить двух потомков и произвести в популяции замену родителей на их потомков. 5. Выполнить операцию мутации. 6. Если критерий останова не достигнут, перейти к п.2, иначе завершить работу.
  • 18. Операция селекции • Схема пропорциональной селекции: • Схема рулетки: …
  • 21. Критерий останова • Процесс продолжается итерационно • Варианты критерия останова: – Выполнение заданного числа итераций – Выполнение заданного числа итераций без улучшения функции выживаемости – Достижение заданного значения функции выживаемости
  • 23. Муравьиные алгоритмы (биологическая модель) 1. Изначально вероятности выбора маршрутов равны 2. Муравьи, выбравшие кратчайший маршрут, возвращаются быстрее, количество феромона на коротких маршрутах больше 3. Вероятность выбора кратчайшего маршрута повышается
  • 24. Муравьиные алгоритмы (МА для решения задачи коммивояжера) Общая схема итерации: • «Создание» муравьев • Построение маршрутов муравьями • Обновление феромонного следа на найденных маршрутах
  • 25. Муравьиные алгоритмы (построение маршрута) - количество феромона на ребре (i,j), τij(t) - значение локальной целевой функции на ребре (i,j), Lk – множество вершин, включенных в табу-список муравья k, a ≥ 0 и b ≥ 0 - параметры алгоритма, определяющие важность феромонного следа и локальной целевой функции. )(tij
  • 26. Муравьиные алгоритмы (построение маршрута)                             k k Jl ilil ijij kij Lj Lj tt tt tP k ,0 , ,     ii j
  • 27. Муравьиные алгоритмы (обновление феромонов) Tk(t) – маршрут, построенный k-м муравьем, F(Tk(t)) – целевая функция, определяющая качество пути, m – количество муравьев, p [0,1] – коэффициент испарения феромонов.
  • 28. Муравьиные алгоритмы (обновление феромонов) ii j           m k kijijij ttpt 1 ,11                    tTji tTjitTF t k kk kij ,,0 ,, ,
  • 29. Муравьиные алгоритмы (использование для построения расписаний) Построение маршрутов Построение расписаний по маршрутам Обновление феромонного следа Вычисление целевых функции останов? нет да
  • 30. Конструктивные алгоритмы построения расписаний • Жадные алгоритмы • Метод ветвей и границ • Алгоритмы сочетающие жадные стратегии и стратегии ограниченного перебора 523 76 2 4 t 1 2 3 4 t 1 2 3 5 4 t 1 6 7
  • 31. Задача построения расписания выполнения работ в одноприборном устройстве • Шина может рассматриваться как одноприборное устройство, обслуживающее исходно заданный набор работ без прерываний. • Расписание выполнения работ, представляет собой упорядоченное множество • - исходно заданный набор работ   JjsH HN kj   ,1 * )},,{( jjj fstJ 
  • 32. Задача построения расписания выполнения работ в одноприборном устройстве • Множество корректных расписаний определим набором ограничений: * ' H      ))()(())()((),),((: )(: )()()(: 3 2 1       ljljljlj jjj jjjj ffsffsssljHljg tsfHjg ffssHjg
  • 33. Жадные алгоритмы (построение расписания выполнения работ в одноприборном устройстве) • Для частной задачи: • известен оптимальный жадный алгоритм сложности O(n∙log n). jjj HH sftj H   : max*'
  • 34. Жадные алгоритмы (GrA - алгоритм построения расписания для одноприборного устройства) 1. Упорядочиваем работы по возрастанию fj. Заявки с одинаковым значением fj располагаем в произвольном порядке. Сложность - O(n∙log n). 2. Размещаем в расписание работу j=1. 3. Ищем первую работу для которой si≤ fj , размещаем ее в расписание и j=i. 4. Шаги 2, 3 повторяем пока список не исчерпан. Количество повторов - O(n).
  • 35. Иллюстрация работы алгоритма 0 1 2 3 7654 8 9 10 11 12 s1 f1 s2 f2 f3s3
  • 36. Иллюстрация работы алгоритма 0 1 2 3 7654 8 9 10 11 12 s1 f1 s2 f2 f3s3
  • 37. Иллюстрация работы алгоритма 0 1 2 3 7654 8 9 10 11 12 s1 f1 s2 f2 f3s3 Список не размещенных работ
  • 38. Иллюстрация работы алгоритма 0 1 2 3 7654 8 9 10 11 12 s1 f1 f3s3
  • 39. Иллюстрация работы алгоритма 0 1 2 3 7654 8 9 10 11 12 s1 f1 f3s3
  • 40. Алгоритмы сочетающие жадные стратегии и стратегии ограниченного перебора Выбор очередной ВМ (k1) Построение мн. допустимых серверов (А) для размещения ВМ А=0 Разместить ВМ Выбор места размещения (k2) Вызов процедуры ограниченного перебора нет да
  • 41. Ограниченный перебор 4 3 5 2 3 5 2 4 4 1 1 R1 R2 R3 5 n=2 (R1,R2) R1: 5, 5 R2: 3, 3, 4 R3: 4, 4, 1 n=3 (R1,R2, R3) R1: 5, 5 R2: 3, 3, 4 R3: 4, 1, 5
  • 42. Направления работы Разработка алгоритмов решения конкретных задач структурного синтеза и планирования вычислений: • информационно-управляющие системы реального времени, • центры обработки данных. Разработка новых подходов к построению алгоритмов и модификаций известных классов алгоритмов. Примеры: • генетический алгоритм с самообучением, • метод построения алгоритмов сочетающих жадные стратегии и ограниченный перебор. Машинное обучение: • алгоритмы построения и обучения нейросетей для встроенных систем; • алгоритмы построения и обучения нейросетей для больших баз данных.