|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
||||||
Оптимальный маршрут авиаперелета с учетом расписания и времени06.12.2012, 18:34. Показов 3327. Ответов 21
Здравствуйте. Помогите, пожалуйста, с программой выбора оптимального маршрута авиаперелета с учетом расписания и времени.
Вот есть такой код:
Подскажите, что не так, и как организовать счетчик, чтобы выводил оптимальный путь за минимальное время перелета, и как сделать переход на другие сутки.
0
|
||||||
| 06.12.2012, 18:34 | |
|
Ответы с готовыми решениями:
21
Найти оптимальный маршрут Оптимальный маршрут почтальона Найти оптимальный маршрут между городами |
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
|
| 08.12.2012, 18:15 [ТС] | |
|
Помогите, пожалуйста!!! который день бьюсь, не могу никак разобраться
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 08.12.2012, 20:37 | |
|
Сейчас нет возможности проверить, но могу предположить, что компилятор жалуется на большое количество неиспользуемых переменных. Замените Номер_рейса, Город1, Город3 на безымянные переменные. Переход на другие сутки сейчас не сделаешь, для этого надо как минимум число сегодняшнее добавить. А про счетчик можно тут посмотреть Поиск в пространстве состояний (поиск по графам тоже сюда!)
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
|
| 08.12.2012, 20:43 [ТС] | |
|
переход на другие сутки предполагает, что самолет вылетел к примеру в вс вечером а прилетел на следующее утро и надо эту информацию вывести
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
| 08.12.2012, 22:20 | ||||||
|
Для рейса можно, а вот для перерыва между рейсами нельзя. А для рейса переход
1
|
||||||
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
|
| 09.12.2012, 14:03 [ТС] | |
|
попыталась разобраться с поиском в весовом графе, но не понимаю нужен ли в моей программе предикат move и где в таком поиске можно использовать мой предикат маршрут?
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 09.12.2012, 14:26 | |
|
Предикат move нужен. Состояние определяется параметра ТекущийГород, и Текущее время
move(s(ГородА,ВремяА), s(ГородБ,ВремяБ), ВремяНаПеремещение):-есть рейс из ГородА в ГородБ, при этом вылет из ГородаА не раньше, чем ВремяА, и тогда ВремяБ будет временем прилета в ГородБ, а ВремяНаПеремещение = ВремяБ-ВремяА И теперь предикат "маршрут" становится бесполезен. Это поиск в глубину, с помощью него никакой оптимальности нельзя добиться.
1
|
|
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
|
| 09.12.2012, 15:52 [ТС] | |
|
объясните, пожалуйста, еще вот этот предикат
prolong(w(Length,[Temp|Tail]),w(NewLength,[New,Temp|Tail])):- move(Temp,New,C),not(member(New,[Temp|Tail])),NewLength=Length+C. и как его можно переделать для моего случая?
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 09.12.2012, 16:40 | |
|
Я объясняла в теме, если все-таки не понятно, то гляньте в упомянутой там книге. Предикат prolong переделывать для Вашего случае вообще не надо. Надо просто определить move.
1
|
|
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
|
| 09.12.2012, 18:13 [ТС] | |
|
Спасибо за помощь, но вот еще такой вопрос как в таком случае в конце вывести информацию о перелетах, т.е. ГородА, ГородБ, время вылета, время прибытия, ГородБ, ГородВ...?
и где вставить пересадку? и проблема с днями недели где то нужен счетчик, чтобы считал день вылета и день прилета, к примеру, вылетел в понедельник, а прилетел в среду.
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 10.12.2012, 11:56 | |
|
Не дни недели лучше, а число. Для этого время надо в таком виде хранить
время(31, 6, 5) Пока измените просто move, и тогда уже будет выводиться в таком виде s(Москва,время(20,21,15)) s(Питер,время(20,23,30)) s(Калининград,время(21,3,40)) ... А потом скажу как дальше делать. Надо будет еще один список использовать, где действия описываются.
1
|
|
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
|
| 10.12.2012, 12:21 [ТС] | |
|
Помогите, пожалуйста, с поиском move я изменила, но не работает, пыталась другие предикаты изменять все равно не получается(
0
|
|
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
|
| 19.12.2012, 00:52 [ТС] | |
|
Помогите, пожалуйста, времени осталось мало, скоро сдавать((
Добавлено через 12 часов 30 минут объясните, пожалуйста, еще раз как изменить предикат move, а то у меня поиск работает только если время прибытия первого рейса совпадает с временем вылета второго рейса
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|||||||
| 19.12.2012, 21:45 | |||||||
|
Да куда уж понятнее
1
|
|||||||
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
|
| 19.12.2012, 22:21 [ТС] | |
|
SOS!!! умоляю, не сочти за труд, подскажи еще: куда вставить предикаты "раньше"?
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
| 19.12.2012, 22:44 | ||||||
|
Эх... как-то так
0
|
||||||
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
||||||
| 19.12.2012, 23:22 [ТС] | ||||||
|
спасибо!!! еще репу почешу, но замолчать не обещаю уже две недели не сплю!
Добавлено через 34 минуты
0
|
||||||
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
||||||
| 20.12.2012, 21:55 | ||||||
0
|
||||||
|
0 / 0 / 0
Регистрация: 06.12.2012
Сообщений: 17
|
|
| 20.12.2012, 22:21 [ТС] | |
|
ОГРОМНОЕ СПАСИБО!!!
1. как я могу вас отблагодарить? вы меня спасли! 2. мне очень стыдно, но чтобы не испортить ваш драгоценный труд, подскажите куда и как можно вставить ограничение по пересадке не более два часа?
0
|
|
|
2507 / 1483 / 37
Регистрация: 14.09.2009
Сообщений: 2,740
|
|
| 20.12.2012, 23:15 | |
|
Вставьте в предикат "раньше".
0
|
|
| 20.12.2012, 23:15 | |
|
Помогаю со студенческими работами здесь
20
База данных "Оптимальный маршрут" - MS Access Составление расписания - встроенный тип для времени Определение даты с учетом времени Создание объекта с учетом времени Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Жизнь в неопределённости
kumehtar 23.03.2026
Жизнь — это постоянное существование в неопределённости. Например, даже если у тебя есть список дел, невозможно дойти до точки, где всё окончательно завершено и больше ничего не осталось. В принципе,. . .
|
Модель здравоСохранения: работники работают быстрее после её введения.
anaschu 23.03.2026
geJalZw1fLo
Корпорация до введения программа здравоохранения имела много невыполненных работниками заданий, после введения программы количество заданий выросло.
Но на выплатах по больничным это. . .
|
1С: Контроль уникальности заводского номера
Maks 23.03.2026
Алгоритм контроля уникальности заводского (или серийного) номера на примере документа выдачи шин для спецтехники с табличной частью. Данные берутся из регистра сведений, по которому настроено. . .
|
Хочу заставить корпорации вкладываться в здоровье сотрудников: делаю мат модель здравосохранения
anaschu 22.03.2026
e7EYtONaj8Y
Z4Tv2zpXVVo
https:/ / github. com/ shumilovas/ med2. git
|
|
1С: Программный отбор элементов справочника по группе
Maks 22.03.2026
Установка программного отбора элементов справочника "Номенклатура" из модуля формы документа.
В качестве фильтра для отбора справочника служит группа номенклатуры.
Отбор по наименованию группы. . .
|
Как я обхитрил таблицу Word
Alexander-7 21.03.2026
Когда мигает курсор у внешнего края таблицы, и нам надо перейти на новую строку, а при нажатии Enter создается новый ряд таблицы с ячейками, то мы вместо нервных нажатий Энтеров мы пишем любые буквы. . .
|
Krabik - рыболовный бот для WoW 3.3.5a
AmbA 21.03.2026
без регистрации и смс.
Это не торговля, приложение не содержит рекламы. Выполняет свою непосредственную задачу - автоматизацию рыбалки в WoW - и ничего более. Однако если админы будут против -. . .
|
1С: Программный отбор элементов справочника по значению перечисления
Maks 21.03.2026
Установка программного отбора элементов справочника "Сотрудники" из модуля формы документа.
В качестве фильтра для отбора служит значение перечислений.
/ / Событие "НачалоВыбора" реквизита на форме. . .
|