1 / 23

название

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

ayasha
Download Presentation

название

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

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

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

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

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

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

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

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

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

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

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

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

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

  14. Постановка 1 задачи распределения пациентов Размерность задачи: b – бригады (1…B) i – итерации: 1 – приехать на место аварии и отвезти 1-го пациента, 2 – вернуться на место аварии и отвезти 2-го пациета, ... (1…PQ), где PQ - число пациентов. h – госпитали (1…H) Постановка: • Набор булевых переменных Pbih (везем или нет пациента бригадой bна итерации iв госпиталь h). Если нет булевых, то целочисленные от 0 до 1. • Вспомогательные булевые переменные i> 1: Rbih (вспомогательная переменная для определения, нужно ли бригаде b возвращаться на место аварии после итерации i– 1) • Вспомогательная переменная TEmax (максимальное время эвакуации пациента) • h: bi PbihHCh (hospital capacity) • – bih Pbih – PQ (должны отвезти не меньше пациентов, чем требуется) • (b, i): h Pbih 1 (нельзя везти больше одного пациента за раз) • (b, i1, i2), i1< i2: h Pbi1h– h Pbi2h 0(нельзя везти на итерации, если не везли на предыдущей итерации) • (b, i, h), i > 1: h Pbih + Pb,i-1,h – Rbih 1 (связьRиP) • (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.

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

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

  17. Входные данные % 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).

  18. Реализация задачи распределения пациентов :- 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).

  19. Реализация задачи распределения пациентов % 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].

  20. Реализация задачи распределения пациентов %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.

  21. Реализация задачи распределения пациентов % 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).

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

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

More Related