Предложения по доводке TrT и выше

OpenTTD - современная игра, клон Transport Tycoon Deluxe с открытым исходным кодом, написанный на C и С++. Содержит ряд ключевых улучшений и возможность игры по сети. На данный момент это главное направление развития игры.

Модераторы: eraserkry, Mihamster, Smoky555, Группа модераторов

Сообщение Pk » Ср дек 27, 2006 16:36

Нет, пускать поезда по чужим путям.

Добавил:
Предлагаешь самообучение? Файл чур внешний!

Этот алгоритм теоритически можно расширить до создания транспортных сетей, однако я не знаю как тут проверять или изменять существующую часть трассы, чтобы по ней можно было пустить дополнительные поезда

А не проще ли рассчитывать этот проект исходя из интересов "временно невозможных"? Так же - раз в некоторое время производить ревизию путей, там где заторы - придумывать варианты решения, где лишние тормоза - улучшать.
И самообучение с анализом действий оппонента - крайне желательно.
можно в принципе поначалу строить только одноколейные маршруты точка-точка, а потом двухколейные маршруты с вставкой в них развилок и расширением станций, чтобы те могли принимать больше поездов (тут надо вводить алгоритмы с применением к примеру одной платформы для одного типа груза, различать погрузочные и разгрузочные платформы, строить станции с предварительно сконструированными входами/выходами и выбирать между типами станций «terminus» и «ro-ro»)
- Это часть моего алгоритма, причём примитивная. Ты предлагаешь рефлексы, я - мысли. Это же разные уровни логики.

Оптимизация в первую очередь это изменение алгоритма таким образом, чтобы он делал ту же работу за меньшее время — делать копию карты это лишнее

То есть ты заранее в воображении пути не прокладываешь?
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Quark » Ср дек 27, 2006 16:46

ну про карту я уже говорил — делать копию и сохранять на ней результаты смысла не вижу, т.к. результаты можно и отдельно сохранить с дополнительной информацией (которую нельзя записать на карте), а расчёты проводить на исходной карте

Самообучение? я вроде такого не предлагал

что означает «временно невозможных»?

решение заторов — без понятия как это можно сделать :) надо изначально строить так, чтобы они не возникали :)

ревизия путей — в моём варианте это взятие сохранённого варианта и проверка можно ли его построить :) ревизия существующих путей не проводится, вместо этого проверяется доходность движущихся по ним транспортных средств, при этом каждый транспорт прикрепляется к маршруту и после удаления всех транспортных средств удаляется и маршрут

«самообучение с анализом действий оппонента» — я не имею понятия как проанализировать действия оппонента, их же невозможно потом применить без внесения изменений, а это запрограммировать крайне сложно — проще попросту построить маршрут, основываясь на жестко заданных вариантах (а уже игрок будет на них учиться :))

Ты предлагаешь рефлексы, я - мысли. Это же разные уровни логики.
ну с этим не соглашусь :) имхо наоборот :)
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Ср дек 27, 2006 17:01

пускать поезда по чужим путям можно только, если включена соответствующая опция в настройках патчей, кроме того, пускать компу поезда по трассе игрока крайне рискованно, т.к. игрок может запросто поставить красный сигнал или столкнуть поезд :) кроме того это будет мешает ходящим по ней поездам
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Ср дек 27, 2006 17:14

да, и еще в минусы оригинальному варианту — он не умеет строить оптимальные маршруты, в этом-то и проблема, а на карте он бесплатно строит, поэтому, если есть желание, можно добавить проверки на скоращение маршрута хотя бы в квадратах 2×2
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
ⓤⓐⓡⓚ ⓤⓢⓛⓞⓝ
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Pk » Чт дек 28, 2006 09:46

Quark писал(а):да, и еще в минусы оригинальному варианту — он не умеет строить оптимальные маршруты, в этом-то и проблема, а на карте он бесплатно строит, поэтому, если есть желание, можно добавить проверки на скоращение маршрута хотя бы в квадратах 2×2


Так, а кто тебе мешает сделать простейшую проверку IF-THEN??
"Если следующий титл подпадает под список запрещённых, то" либо "Если остаётся поле 3х3 делать так:"

пускать поезда по чужим путям можно только, если включена соответствующая опция в настройках патчей, кроме того, пускать компу поезда по трассе игрока крайне рискованно, т.к. игрок может запросто поставить красный сигнал или столкнуть поезд кроме того это будет мешает ходящим по ней поездам

Добавляй ИМХО.
А кто мешает компу оценить доходность маршрута и заключить контракт с игроком? В коде это около 2-3 кб. А, вы на Си. Тогда 6, не больше.

ревизия путей — в моём варианте это взятие сохранённого варианта и проверка можно ли его построить ревизия существующих путей не проводится, вместо этого проверяется доходность движущихся по ним транспортных средств, при этом каждый транспорт прикрепляется к маршруту и после удаления всех транспортных средств удаляется и маршрут

То есть ты тоже так поступаешь?
Кстати, добавь хотябы фулл лоад на станциях загрузки, уже задолбало помогать компу!
После этого полученный маршрут (возьмем первый (лучший) необработанный) сравним с маршрутами в других областях карты для выбора что же мы будем строить, альтернативы можно сохранить на будущее.
- И ты мне будешь говорить, что это не самообучение?
«самообучение с анализом действий оппонента» — я не имею понятия как проанализировать действия оппонента, их же невозможно потом применить без внесения изменений, а это запрограммировать крайне сложно — проще попросту построить маршрут, основываясь на жестко заданных вариантах (а уже игрок будет на них учиться :) )

Самообучение - комп смотрит, где у него недополученная прибыль и смотрит как в похожей ситуации поступил игрок, если у него эта проблема решена. Потом автоматом добавляет в библиотеку (не dll, хотя без разницы).
Именно так, а не в привязке к твоим любимым ЖД.

Ты предлагаешь рефлексы, я - мысли. Это же разные уровни логики.
ну с этим не соглашусь имхо наоборот

Ну-ну! То есть действие "увидел-побежал" - это мысли, а "увидел-подумал куда-побежал" - рефлексы?

Кстати, оригинальный тайкун почти не тормозил на AM486DX66 8mb ОЗУ. Ноут. Так что уже на пне 120 МГЦ 19 мб озу можно пробовать прорабатывать маршрут заранее, до начала траты денег.

!
В принципе, можно откзаться и от разбивки на квадраты, но тогда будут несколько иные сложности со сметными рассчётами.
Последний раз редактировалось Pk Чт дек 28, 2006 10:18, всего редактировалось 7 раз(а).
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Pk » Чт дек 28, 2006 10:09

Кстати, добавь хотябы фулл лоад на станциях загрузки, уже задолбало помогать компу!
А лучше нормальный алгоритм: вычислить сколько и каких единиц надо на расстояние движения, до какого уровня их грузить. Из рассчёта, что на станции загрузки всегда стоит хотя бы одна единица.
Ну, и постоянный мониторинг ситуации с предприятиями.
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Quark » Чт дек 28, 2006 10:28

Pk писал(а):
ревизия путей — в моём варианте это взятие сохранённого варианта и проверка можно ли его построить ревизия существующих путей не проводится, вместо этого проверяется доходность движущихся по ним транспортных средств, при этом каждый транспорт прикрепляется к маршруту и после удаления всех транспортных средств удаляется и маршрут

То есть ты тоже так поступаешь?

ну если перспектив развития нету, то да. Например где-то вдали от основной сети старый маршрут перестал приносить прибыль из-за того, что продукция снизилась, а поезда устарели — иногда попросту нету смысла его ремонтировать
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение vljak » Чт дек 28, 2006 10:47

С удовольствием почитал ветку... Хорошо, что стольких не удовлетворяет алгоритмы строительства транспортных сетей у ИИ.

Поэтому вношу свое в меру разумное предложение: а почему бы не реализовать виртуально расчерченные транспортные пути "под кальку"?
Поясняю: при создании карты можно заранее расчитать и провести по ней всевозможные транспортные артерии и пути... При старте программы они соответсвенно невидимы, а ИИ когда решает возить груз "резервирует" для себя одну из калек и "заливает" ее своей собственностью... я уже молчу что в игре есть пассивный ИИ - города - и им тоже надо делать дороги :) вот и пусть субсидируют еще и строительством дорог.
Конечно, это в первую очередь будет работать идеально для автомобильных трасс...
А сложности я вижу в динамике карты: предприятия закрываются - открываются и т.п. Хотя при загрузке игры можно на "виртуальной" карте заново расчитывать планы транспортных сетей...
Да я и тут думаю, что можно периодически (раз в игровой год допустим) в фоновом режиме запускать процес по пересчету транспортных связок.
В итоге по сути все красиво и изящно: компьютер на строит все "на лету" а просто "заливает трафареты". И если грамотно подойти к этому то получится нечто, я думаю.
Вывоз из страны высококлассного программиста есть угроза ее национальной безопасности
vljak
Машинист
Машинист
 
Сообщения: 56
Зарегистрирован: Пт дек 08, 2006 05:33

Сообщение Quark » Чт дек 28, 2006 10:53

Pk писал(а):Кстати, добавь хотябы фулл лоад на станциях загрузки, уже задолбало помогать компу!
добавить-то можно, просто на фоне его тупости делать мелкие изменения неохота :) но как буду собирать новую сборку — добавлю

Pk писал(а):
После этого полученный маршрут (возьмем первый (лучший) необработанный) сравним с маршрутами в других областях карты для выбора что же мы будем строить, альтернативы можно сохранить на будущее.
- И ты мне будешь говорить, что это не самообучение?
Это — нет. Просто обычная выборка.

Pk писал(а):
«самообучение с анализом действий оппонента» — я не имею понятия как проанализировать действия оппонента, их же невозможно потом применить без внесения изменений, а это запрограммировать крайне сложно — проще попросту построить маршрут, основываясь на жестко заданных вариантах (а уже игрок будет на них учиться :) )

Самообучение - комп смотрит, где у него недополученная прибыль и смотрит как в похожей ситуации поступил игрок, если у него эта проблема решена. Потом автоматом добавляет в библиотеку (не dll, хотя без разницы).
Именно так, а не в привязке к твоим любимым ЖД.
Просто я не знаю алгоритма как найти «похожую» ситуацию и проанализировать действия игрока, думаю что проще заранее задать все возможные варианты поведения и ограничится ими, а в последствии можно сделать тему, в которой игроки будут показывать где комп начинает тупить и менять на основе этого алгоритм.

Pk писал(а):То есть действие "увидел-побежал" - это мысли, а "увидел-подумал куда-побежал" - рефлексы?
скорее «увидел, споткнулся, подумал 3 сек — побежал дальше» — это «рефлексы» :) Это я к тому, что существующий алгоритм не имеет перспектив, надо обдумывать логику компа фактически с нуля, а не пытаться подняться на кривых ногах — иногда понимаешь, что «бежишь» немного не в ту сторону :)

Pk писал(а):Кстати, оригинальный тайкун почти не тормозил на AM486DX66 8mb ОЗУ. Ноут. Так что уже на пне 120 МГЦ 19 мб озу можно пробовать прорабатывать маршрут заранее, до начала траты денег.
ну так он и не думал ни о чём :) А в OTTD ресурсы потребляют алгоритмы расчёта физики и новые алгоритмы расчёта маршрутов, анимация кстати большую часть — не проверял в полном экране, но в окне фокусы со сменой палитры не проходят

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

P.S. кстати в С программируют не потому, что шибко умные, а потому, что его 20 лет назад в школе учили :) Для умных и знающих С есть язык D :) А для ленивых .NET с 30мб грузом на шею :) Для эстетов бейсика есть PureBasic с производительностью как в С :)

P.P.S. кстати, я сам эстет бейсика, но мне уже давно всё равно на каком языке программировать, ведь большую часть времени ты пользуешься библиотеками, а не думаешь как правильно составить синтаксическую конструкцию.
Последний раз редактировалось Quark Чт дек 28, 2006 11:16, всего редактировалось 1 раз.
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Чт дек 28, 2006 10:58

Pk писал(а):
Кстати, добавь хотябы фулл лоад на станциях загрузки, уже задолбало помогать компу!
А лучше нормальный алгоритм: вычислить сколько и каких единиц надо на расстояние движения, до какого уровня их грузить. Из рассчёта, что на станции загрузки всегда стоит хотя бы одна единица.
Ну, и постоянный мониторинг ситуации с предприятиями.
можно взять компромиссный вариант — загрузка на 30-70%. Я не знаю как комп выбирает длину поезда, можно её рассчитывать из тяги локомотива, а локомотив выбирать из расчёта того, сколько он может груза утянуть и смотреть на производительность предприятия и оценочное время доставки :)
Мониторинг подойдёт только в варианте проверки сколько осталось груза на станции после полной погрузки поезда и не пришёл ли поезд на станцию, где еще предыдущий не погрузили
Но всё это делать долго и комп всё равно сам себя убивает кривыми дорогами из точки А в точку Б.
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Quark » Чт дек 28, 2006 11:09

vljak писал(а):С удовольствием почитал ветку... Хорошо, что стольких не удовлетворяет алгоритмы строительства транспортных сетей у ИИ.

Поэтому вношу свое в меру разумное предложение: а почему бы не реализовать виртуально расчерченные транспортные пути "под кальку"?
Поясняю: при создании карты можно заранее расчитать и провести по ней всевозможные транспортные артерии и пути... При старте программы они соответсвенно невидимы, а ИИ когда решает возить груз "резервирует" для себя одну из калек и "заливает" ее своей собственностью... я уже молчу что в игре есть пассивный ИИ - города - и им тоже надо делать дороги :) вот и пусть субсидируют еще и строительством дорог.
Конечно, это в первую очередь будет работать идеально для автомобильных трасс...
А сложности я вижу в динамике карты: предприятия закрываются - открываются и т.п. Хотя при загрузке игры можно на "виртуальной" карте заново расчитывать планы транспортных сетей...
Да я и тут думаю, что можно периодически (раз в игровой год допустим) в фоновом режиме запускать процес по пересчету транспортных связок.
В итоге по сути все красиво и изящно: компьютер на строит все "на лету" а просто "заливает трафареты". И если грамотно подойти к этому то получится нечто, я думаю.
Расчерчивать пути при создании какой карты — в сценарии или случайной? В первом случае можно просто сохранить его как игру, где сети уже построены у других игроков, а во втором смысла нет — можно с тем же успехом потом в фоне рассчитывать когда маршрут понадобится, а перерасчитывать одно и то же по 10 раз смысла нет.

Для автомобильных трасс есть альтернативный ИИ, но у него те же проблемы, что он не всегда в курсе какой груз могут возить машинки из дополнительной графики.

Я уже говорил, что «трафарет» это и есть рассчитаный (не предварительно, а по надобности) маршрут — только комп его не сразу строит, а резервирует под него место и «заливает» элементами.
Нужно использовать шаблоны, например если ИИ надо построить перекрёсток, то он не изобретает развилку, а берёт из списка готовых (ровняя под неё землю, а не использую ландшафт :))
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Pk » Чт дек 28, 2006 13:51

ИИ при загрузке:

1) что доступно из транспорта? (для данного груза) - отмечаем доступное (let ct=1111) (тысяча сто одиннадцать в десятичной) (cargo Transport)
1а) На чём можно увезти вообще? (let ft=1101) (factical transport)
2) Сколько производится груза за годовой период? (ожидаемое к-во)
3) Определение вида транспорта и маршрута (основной спор сейчас ;) ). Строительство маршрута.*
4) Определение tc*(mp/vc) - это количество необходимой техники (приблизительное) (time(of)carry, month product, vehicle capitacy.)
5) ДЛЯ ЖД/Автопоездов. Определяется оптимальный локомотив по цене, мощности, эксплуатации и проч.
5а) определяется к-во вагонов, из рассчёта, что должно быть минимум 2 поезда на линии.
6) Закупка, пуск.

ИИ при убыточности.

1) Почему убыточен?
1а) Проверка по загружаемым грузам - чего и сколько.
1б) Если убыточен из-за того, что ничего нет, то: проверка макс. производства на области покрытия.
1б1) Если у производства нет ресурсов повторить то же для ветки поставок/если нет строить её.
1в) Если низкий рейтинг на остановке, при высоком потенциальном числе груза, то:
1в1) Проверка времени ожидания (груз не успевает появиться), ставится флаг загрузки, исходя из того, что дольше 20 дней не стоять.
1в2) Проверка станций оппонента/рекламная акция.
1в3) Проверка маршрута на проходимость. (перенос остановок/обновление)
2) Поиск не загруженных остановок - остановки, где транспорта не хватает (этого типа).
2а) Если есть и можно добраться - перебрасываем туда.
2б) Если есть, но нельзя добраться, то вычисляется ожидаемая прибыль от переброски (вкл. строительство трасс) и если она неотрицательна (!!!), то строится путь и осуществляется переброска.
2г) Вычисляется потенциальный ущерб от остановки транспорта до лучих времён если больше ожидаемой выгоды - удаление. (зависит от срока жизни).

Потенциальный убыток - любое простаивание/сброс скорости. Поиск вести по ключевым точкам.

* - именно маршрута, т.е. цепочки из N видов транспорта. Т.е. их суммарный доход минус суммарный убыток (ti-to) (total Income, Total Outcome)

Как определить, что можно везти? - проверить индустрии на приём того или иного груза, машинки тоже. На виртуальной карте, результат запомнить. И это уже не выборка.

ADDED ПРо загрузку техники.
Знаешь, тогда лучше добавить ждать месяц (полная загрузка техники), но mv-1 единица на загрузке. (mах vehicles)
Последний раз редактировалось Pk Чт дек 28, 2006 15:02, всего редактировалось 8 раз(а).
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Pk » Чт дек 28, 2006 14:03

Но всё это делать долго и комп всё равно сам себя убивает кривыми дорогами из точки А в точку Б
А теперь внимательно пройдись по оригинальному алгоритму строительства маршрута.
Я сделал кое-какие пометки в нём для удобства.
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Сообщение Quark » Чт дек 28, 2006 14:55

под оригинальным алгоритмом я имел ввиду тот, который сейчас в OTTD, где маршрут соединяется с двух концов в середину и в итоге с каждой стороны дорога поворачивает налево, а поскольку концы противоположны, то получается «__/¯\_/¯¯» вместо «____/¯¯¯¯»
Аватара пользователя
Quark
Президент
Президент
 
Сообщения: 628
Зарегистрирован: Пт сен 08, 2006 01:17
Откуда: Москва

Сообщение Pk » Чт дек 28, 2006 15:00

Quark писал(а):под оригинальным алгоритмом я имел ввиду тот, который сейчас в OTTD, где маршрут соединяется с двух концов в середину и в итоге с каждой стороны дорога поворачивает налево, а поскольку концы противоположны, то получается «__/¯\_/¯¯» вместо «____/¯¯¯¯»


Прадон, пройдись по доводке (а вернее по надстройке).
Там именно это и проверяется. И из _/¯\_/¯¯ выходит _/¯¯¯¯ либо ____/¯¯ в зависимости от остальных условий.
Анализируй то, как ты делаешь сам. Потом объясни это компьютеру.
Кладу асфальт, гружу Лейланды.
новый вариант мышления ИИ
Pk
Директор
Директор
 
Сообщения: 320
Зарегистрирован: Пт сен 30, 2005 06:50
Откуда: Москва

Пред.След.

Вернуться в Общие вопросы по OpenTTD

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 16

cron