-
Вопрос такой. Делаю менеджер гонки. Остановился на проведение гонки. Хотелось, бы сделать так, чтобы результат гонки зависел от параметров машины(примерно 5-6 параметров), квалификации гонщика, ну и каких-либо случайных факторов(сломался двигатель, подвеска и т.д.). Кто-нибудь встречал подобный алгоритм?
-
Какой - подобный? Тут полно разных можно применить. Зависит от того, по какой модели ты хочешь рассчитывать итоговый результат.
-
Т.е. можно складывать все параметры, если они в абсолютной форме, можно перемножать если в относительной (доли/проценты), случайны опять же могут быть абсолютно случайными, зависящими от неслучайных, представлены в виде дискретного ряда с интервалами либо с заданной ф-ей распределения..критичность случайных факторов может быть равной или тоже заданной..
-
1. Параметры машины представлены числом в предела от 0 до 1. Чем ближе к 1, тем лучше.
> от неслучайных, представлены в виде дискретного ряда с интервалами > либо с заданной ф-ей распределения
Поподробне можно, пожалуйста.
-
1. Тогда можно просто все эти значения перемножать и по ним выбирать лучшего, если они все оказывают одинаковый эффект на победу. Т.е. если скажем мощность двигателя в той же степени влияет на победу как и диаметр шин. Если нет, то надо каждый показатель еще домножать на весовой коэффициент, после чего эти новые коэффициенты складывать.
Поподробнее: шанс, что подвеска сломается, может как не зависеть от водителя (китайские запчасти), так и зависеть - если он специально ездит по пересеченке. Если зависит, то она может либо сломаться совсем, если водитель крайне туп, либо не совсем, если не туп, либо совсем немного поломаться - если почти нормален. Это дискретный ряд. А еще может быть прямая зависимость в виде y=K*x, для каждого из участков этого ряда..или вообще для всего отрезка 0..1. И так далее.
-
Еще вопрос: а случайные числа по какому лучше распределению получать?
-
Хмм..чего?) Обычные псевдослучайные числа подойдут. random();
-
Можно движение машины заранее записать, а если она вдруг вылетит из колеи(врежеться ....), то сделать притяжение к маршруту...
-
> Можно движение машины заранее записать, а если она вдруг > вылетит из колеи(врежеться ....), то сделать притяжение > к маршруту...
Это будет менджер. Машины не будут ездить. будет только результат.
-
На сколько я понял задачу - надо вычислить результат... А что-бы вычислить результат - нужно "прокатить" машины по трассе... Что мешает использовать то, что я сказал?
-
можно симулировать процесс взять некое конечное L и с шагом в N секунд увеличивать пройденое машиной расстояние на некоторое значение X, которое зависит от значения X на предыдущей итерации и параметров машины / водителя детальность можно подобрать такую, какая вам будет удобнее
-
Если делать просто параметры [0,1] и чем больше тем лучше, то при любом количестве параметров результат будет достигаться тупым наращиванием этих параметров. Т.е. будет полностью отсутствовать какая-либо тактика в подборе параметров и результате гонки вообще. Для решения этой проблемы, нужно: 1. Избавиться от абсолютных значений в параметрах 2. Обсчитывать не только машину, но и трассу.
У машины параметры должны быть взаимосвязаные и взаимовлияемые. Скажем, парамтеры "управляемость" и "мощность" одновременно большими быть не могут (это для примера). Можно сделать общее количество очков, которые нужно распределить между показателями машины, что тоже даст некоторый баланс.
Это заработает, если на гонку будет оказыать влияние еще и трасса. У трассы тоже может быть несколько параметров, вроде крутости и количества поворотов (на которых будет преймущество у более управляемых машин), количество прямых участков (на которых будут получать преймущества те, у кого разгон быстрее) и их длина (чем длинее, тем больше скорость можно развить), плюс общая сложность трассы (узкие проезды, коварные места - вобщем параметр "невезучести"), против которой будет бороться навык водителя. (кстати водитель тоже может иметь несколько параметров), плюс, скажем, длина трассы. Если она большая, то надо пит-стопить и тут можно еще и команду конюшни обсчитывать :) Вобщем простор для реализации громадный :)
|