Python: Traffic-Simulation (автомобили на дороге) - PullRequest
3 голосов
/ 27 апреля 2010

Я хочу создать симулятор трафика, как здесь: http://www.doobybrain.com/wp-content/uploads/2008/03/traffic-simulation.gif Но я не особо задумывался над этим.

Я бы создал автомобиль класса. У каждого автомобиля свой цвет, положение и т. Д.

И я мог бы создать дорогу с массивом.

а как сказать машине куда ехать? Могу ли я услышать ваши идеи?

РЕДАКТИРОВАТЬ: запрещено ли получать новые идеи от хороших программистов? Почему некоторые люди хотят закрыть эту ветку? Или должны были задавать такие вопросы? Я не понимаю их. (

EDIT2: В следующий раз я пойду на форум геймеров. Мне нравятся идеи до сих пор. Спасибо!

Ответы [ 7 ]

6 голосов
/ 27 апреля 2010

Вы не говорите машине, куда ехать. Это идет в любом случае из-за его скорости. Посмотрев в будущее (где это будет через несколько шагов, а дорога все еще будет?), Вы увидите, нужно ли вам регулировать скорость.

И дорога не массив; это матрица или растровое изображение. Вы не можете идти так быстро в углу, или вы полетите с дороги.

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

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

EDIT

Для ясности, когда я говорю о скорости, я говорю о векторе, который имеет как величину (10 миль в час), так и направление. Ваши векторы будут иметь 2 элемента: x и y , если только вы не хотите самолеты или хотите моделировать холмы и тому подобное (вы не хотите холмы, потому что у вас также будет принять во внимание гравитацию :), где используются z положение и скорость.

2 голосов
/ 27 апреля 2010

Теория, стоящая за симулятором, - Теория очередей. Я нашел страницу курса на моей alma mater, которая покажет вам несколько ключевых слов, которые могут вам помочь - https://www.erasmus.cvut.cz/prospectus/FTS/11THO-E.html. Сам симулятор будет «проще».

2 голосов
/ 27 апреля 2010

Я призываю вас использовать мой собственный проект для этого. Она называется GarlicSim , это платформа для симуляции, и она отлично подойдет для того типа симуляции, который вы имеете в виду. (Кстати, только вчера Я сделал большой релиз, версия 0.4).

Это все Python, и он также даст вам хороший графический интерфейс.

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

2 голосов
/ 27 апреля 2010

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

2 голосов
/ 27 апреля 2010

У каждого автомобиля есть позиция, скорость, направление / траектория / пункт назначения. Основываясь на этой информации и относительном положении других автомобилей и (в конечном итоге) наличии «дорожных знаков», вы можете рассчитать следующую позицию каждого автомобиля и то, будет ли автомобиль замедляться или ускоряться.

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

1 голос
/ 27 апреля 2010

Существует пакет на основе Java под названием processing , предназначенный для художников и начинающих программистов, который включает в себя некоторые очень приятные функции визуализации и представляет упрощенную среду разработки (без «общедоступной статической пустоты» main (String [] args) ", например). Посмотрите демоверсии, которые показывают системы частиц, чтобы получить представление о том, как моделировать ваши отдельные автомобили. Существует Python-исполнение этого кодового вызова pyprocessing , которое следует большей части той же идиомы простого программирования.

Вот мой маленький апплет "tesla" - переместите мышь между двумя сферическими электродами.

0 голосов
/ 27 апреля 2010

Первый вопрос: какова область моделирования?

Вы можете сделать это так же просто, как одномерный клеточный автомат в дискретном времени или сложный, как полноценная физическая система (вы можете моделировать даже химические реакции в двигателе!) С помощью сложного ИИ и продвинутой фотореалистичной графики и звуковые эффекты.

Между ними есть много возможностей. Подумайте, что вы можете сделать и чему хотите научиться.

...