А что-то вроде и будет.
Поскольку единица будет работать не с массивом "остановки пассажиры", а с массивом "остановки маршрута пассажиры"
Так же такой вопрос: когда вы едете на работу/учёбу/... вы каждый раз смотрите на карту, сверяете маршрут? Нет.
Итак оптимизация №1: маршрут может быть записан в память как типовой, т.е:
если 2 (и более) пассажира хотят пойти из точки А в точку Б, при этом между ними есть маршрут "АВБ", то скорее всего (95% вероятность), что второй пассажир слепо пойдёт за первым.
Таким образом, к-во операций возрастает не на 2000-5000% в общем объёме, уж никак.
Зачем нужен 5% остаток? Просто это те лемминги, которые будут открывать новые маршруты, сами без ожидания пробок.
Так же этим начинают заниматься те единицы /групп/ пассажиров, которые уже начинают опаздывать (красные).
Оптимизация №2: Если более 4-х единиц (груз, машин и т.п.) идут со сходными свойствами, то: они могут быть объеденены в группу и обрабатываться сходно, т.е.
для маршрута: единицы №№, длина маршрута, время мин. сред., время сред., время макс. сред., средняя нагрузка.
(ещё сыро, возможна большая оптимизация БД + стабильность работы.)
Почему 4? Чтобы была польза в объёме.
>>Dictu
А надо сделать так, что пассажир после появления на станции был привязан к имеющемуся поезду, и ждал его.
1:1 что и я говорю, только одно "но": я хотел бы их привязать не к поезду, а к маршруту/подходящим маршрутам, а уже поезд смотрится "есть ли у него нужный нам тег".
Соответственно, мои могут быть привязаны ещё и к домам из/в которые едут.
Насчёт учтивости: человеку говоришь: "ВАЗ - не лучший автомобиль в мире", а в ответ: "Ты хочешь сказать, что самолёты миру не нужны!?"
Задалбывает, знаешь ли.
Сначала Quark, который нежелал читать то, что написано, потом один придурок (полчаса трепал нервы про то, что девушка то ли жива, то ли всё, хотя знал что жива и дома), потом снова (читай цитату "я так не делаю").
"Либо мы работаем по одним инструкциям, либо не жалуемся, что работаем чёрт знает как".
>>GeorgeНа графе это называется путь. Только вот перебором решать эту задачу для каждого отдельного пассажира при прибытии транспорта на остановку, где этот пассажир стоит, процессорных мощностей не хватит. Ведь на каждой остановке 2-3 сотни пассажиров, на карте 256х256 полсотни городов, в городе с десяток остановок - это песец даже если задачу решать для всей партии пассажиров с одной точкой назначения. Даже если считать, что назначение это город, и любая остановка в городе подходит, простейшая задача доехать до самолёта на автобусе, пересесть на самолёт и долететь не такая простая задача. А уж что делать в случае, если для того, чтобы проехать из города 1 в город 3 надо приехать в город 2, проехать по городу 2 на другую остановку, и оттуда ехать в город 3? Тогда расчёт по годам вести не получится, придётся по остановкам. А ежесекундный расчёт 1000 кратчайших путей на графе в 1000 узлов мне кажется очень сложной задачей. Хотя может я перегибаю палку. Давайте оценим, сколько единиц транспортных средств прибывает на все станции всех игроков в секунду (в среднем)? Кто может дать оценку?
Да, и ещё меня вот что смущает. Если мы считаем по-остановочно, то попав на остановку одного игрока, на остановки других он попасть не может. Но явно в перспективе будет кооперативная игра и общие остановки. Тогда граф существенно расшириться. Надо ли считать, что пассажир приехал, если он попал в готод назначения на транспорте другой компании, а не той, с которой он стартовал?
По этому рассчёт ведётся только для уже существующих маршрутов.
Более того, пассажир(группа) не привязан(ы) к остановке/компании, он сам по себе. Для него все компании - лишь другой цвет кузова, т.е. ничто. Главное - добраться.
По поводу пересадок: какая хрен разница на что? Да хоть на подводную лодку! Для Лемминга (и нас) никакой разницы, только придётся объединить в правах переменные для самолётов, кораблей, машин и поездов. (хотя, имхо, этот кус в коде вообще надо переделать)