Название Антонов Александр Сергеевич. Содержание Описание предметной области Постановка задачи Алгоритмы решения Направление работ в будущем.

Презентация:



Advertisements
Похожие презентации
Название Антонов Александр Сергеевич. Содержание Описание предметной области Постановка задачи Алгоритмы решения Направление работ в будущем.
Advertisements

Применение декларативных языков при решении задач на графах Антонов Александр Сергеевич.
Задача о пациентах Антонов Александр Сергеевич. Содержание Описание задачи Постановка задачи Алгоритмы и решения Направление работ в будущем.
Применение декларативных языков при решении задач на графах Антонов Александр Сергеевич.
Бизнес-процесс и веб-сервисы Антонов Александр Сергеевич.
Массивы 9 класс. Основные теоретические сведения Примеры решения задач.
Динамическое программирование (Dynamic Programming)
Одномерные массивы Понятие массива, виды массивов Описание, заполнение и вывод одномерного массива Обработка одномерного массива.
Графики квадратичных функций Учитель: Чехова Нина Григорьевна.
Моделирование и исследование мехатронных систем Курс лекций.
Одномерные массивы. Одномерный массив Статический массив – упорядоченная последовательность фиксированного количества переменных одного типа, имеющая.
Теория графов Основные определения. Задание графов Графический способ – Привести пример графического задания графа, состоящего из вершин А, В и С, связанных.
ЕГЭ информатика Алгоритмизация и программирование Консультация 4.
Урок 10. Сортировки 425 а1а2а3а4 Пример: Дан целочисленный массив А из 4-х элементов. 1 шаг. а1>a2? Да 3 b If a[1]>a[2] then begin b:=a[2]; a[2]:=a[1];
Задача о максимальном потоке в сети Алгоритм Фалкерсона-Форда.
1 Программирование на языке Паскаль Тема 2. Максимальный элемент массива.
Массивы Массив – именованный набор с фиксированным количеством однотипных данных Массив одномерный многомерный Общий вид элемента массива (двумерный массив.
МЕТОДЫ СОРТИРОВКИ. Сортировка - расположение элементов множества в порядке расположения некоторого ключа. ОГРАНИЧЕНИЯ: 1. Рассматриваются внутренние сортировки.
Классификация и регрессия Доклад по курсу Интеллектуальный анализ данных Закирова А.Р. 1.
Классическими примерами для демонстрации возможностей массивов являются задачи сортировки и поиска.
Транксрипт:

название Антонов Александр Сергеевич

Содержание Описание предметной области Постановка задачи Алгоритмы решения Направление работ в будущем

Описание предметной области В городе есть несколько госпиталей. Каждому госпиталю приписано определенное число бригад скорой помощи. Требуется развести пациентов с места аварии по госпиталям.

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

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

Общее представление города

Этапы решения Решение задачи можно разделить на два этапа: 1.Определить кратчайшие пути (будем использовать термин «кратчайший», но речь идет не о расстоянии, а о времени, необходимом бригаде на преодоление пути) от места аварии до госпиталей на момент поступления сигнала. Далее будут браться в расчет только эти пути, чтобы для каждого больного не решать новую задачу поиска кратчайшего пути. 2.Распределить пациентов по бригадам и госпиталям.

1. Определение кратчайших путей

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

2. Распределение пациентов

Если первая бригада (которая первой приезжает наместо аварии) заберет пациента в ближайший (первый) госпиталь, то второго пациента заберет вторая бригада, и так как первый госпиталь уже будет заполнен, повезет его во второй госпиталь. Время, за которое эвакуируют обоих, составит 120 (Первая бригада совершит путь до места аварии и в госпиталь Н1 затратив на это 15, вторая бригада совершит путь до места аварии и в госпиталь Н2 и затратит 120, т.о. время за которое последний пациент будет доставлен в госпиталь составит 120). Однако видно, что если первая бригада повезет пациента во второй (т.е. дальний) госпиталь, то вторая сможет доставить своего пациента в первый, и тогда общее время составит 105 (Первая бригада совершит путь до места аварии и в госпиталь Н2 затратив на это 105, вторая бригада совершит путь до места аварии и в госпиталь Н1 и затратит 30, т.о. время за которое последний пациент будет доставлен в госпиталь составит 105).

Постановка 1 задачи распределения пациентов Размерность задачи: b – бригады (1…B) i – итерации: 1 – приехать на место аварии и отвезти 1-го пациента, 2 – вернуться на место аварии и отвезти 2-го пациета,... (1…PQ), где PQ - число пациентов. h – госпитали (1…H) Постановка: 1.Набор булевых переменных Pbih (везем или нет пациента бригадой b на итерации i в госпиталь h). Если нет булевых, то целочисленные от 0 до 1. 2.Вспомогательные булевые переменные i > 1: Rbih (вспомогательная переменная для определения, нужно ли бригаде b возвращаться на место аварии после итерации i – 1) 3.Вспомогательная переменная TEmax (максимальное время эвакуации пациента) 4. h: bi Pbih HCh (hospital capacity) 5.– bih Pbih – PQ (должны отвезти не меньше пациентов, чем требуется) 6. (b, i): h Pbih 1 (нельзя везти больше одного пациента за раз) 7. (b, i1, i2), i1 < i2: h Pbi1h – h Pbi2h 0 (нельзя везти на итерации, если не везли на предыдущей итерации) 8. (b, i, h), i > 1: h Pbih + Pb,i-1,h – Rbih 1 (связь R и P) 9. (b, i), i = 1: h Pbih (ATb + HTbh) – TEmax 0 (b, i), i > 1: h Pb1h (ATb + HTbh) + ik=2 h HTbh ( Pbih + Rbih) – TEmax 0 Цель: Минимизировать TEmax, изменяя Pbih, Rbih.

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

Постановка 2 задачи распределения пациентов путь := первый шаг, путь | шаг, путь | [] шаг := вернуться из госпиталя, отвезти пациента первый шаг := прибыть к месту аварии, отвезти пациента в госпиталь | []

Входные данные % hospital capacity(hospital nuber, capacity) hc(1,1). hc(2,2). % arrival time /to disaster/ (N brigade, time) at(1,5). at(2,20). % time to hospital (N brigade, N hospital, time) ht(1,1,10). ht(1,2,100). ht(2,1,10). ht(2,2,100).

Реализация задачи распределения пациентов :- use_module(library('clp/bounds')). :- consult(conditions). :- consult(inc_arr). % path(N brigade, N from, N to, path time) path(Br,0,B,T) :- at(Br,AT), ht(Br,B,HT), T #= AT + HT. path(Br,A,B,T) :- ht(Br,A,HT1), ht(Br,B,HT2), T #= HT1 + HT2. % store path to list [A,B,T] step(Br,A,B,T,[A,B,T]) :- path(Br,A,B,T).

Реализация задачи распределения пациентов % route(N brigade, N from, N to, path time, Ps - edges list, HC - total quantity of patients delivered to each hospital before this route, HC - total quantity of patients delivered to each hospital after this route, Pq - number of patients) route(_,X,X,0,[],HC,HC,0). route(Br,X,Y,T,Ps,HC,HCnew,Pq) :- %write('3333 '), nl, Pq #> 0, Pq1 #= Pq - 1, route(Br,X,Z,T1,Ps1,HC,HC1,Pq1), step(Br,Z,Y,T2,Ps2), inc(Y,_,HC1,HCnew), nth1(Y,HCnew,Hc1), hc(Y,Hc2), Hc1 =< Hc2, T #= T1 + T2, solution(BT,_,_), T < BT, Ps = [Ps1|Ps2].

Реализация задачи распределения пациентов %mutual(T - max time for all brigades, Ps - edges list of all brigades, HC - total quantity of patients delivered to each hospital, PQ - sum of patients) %example: mutual(T,Ps,HC,2). mutual(PQ):- [PQ1,PQ2] in 0..PQ, PQ1 + PQ2 #= PQ, HC1 = [0,0], route(1,0,_,T1,Ps1,HC1,HC2,PQ1), route(2,0,_,T2,Ps2,HC2,HC,PQ2), Ps = [Ps1, #|Ps2], T #= max(T1,T2), retract(solution(_,_,_)), asserta(solution(T,Ps,HC)), fail.

Реализация задачи распределения пациентов % solve(TE - total time, PS - list of routs for brigades ([route of Br1 # rout of Br2]), HC - total quantity of patients delivered to each hospital, PQ - number of patients to save) % example: solve(TE,PS,H,2). solve(TE,PS,HC,PQ):- asserta(solution(10000,ps,hc)), not(mutual(PQ)), retract(solution(TE,Ps,Hc)), flatten(Ps,PS), flatten(Hc,HC).

Реализация задачи распределения пациентов Запрос к системе: ?- solve(TE,PS,H,2). Ответ: TE = 105, PS = [0, 2, 105, #, 0, 1, 30], H = [1, 1]

Направление работ в будущем Автоматизация получения входных данных для задачи распределения пациентов по исходным данным задачи и результатам решения задачи поиска кратчайших путей Ускорение решения задачи распределения пациентов Решение задачи поиска кратчайших путей Связь с графическим модулем приложения