Генетический алгоритм - траектория автомобиляPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Генетический алгоритм - траектория автомобиля

Сообщение Anonymous »

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

Код: Выделить всё

import sys
import math
import random

POPULATION_SIZE=10
GENE_LENGTH=10
MUTATION_RATE=.1
ELITISM=.1
ELITISM_IDX=int (ELITISM*POPULATION_SIZE)
GENERATIONS=20
MAX_ANGLE_CHANGE=18
FRICTION=.85
WIDTH=16000
HEIGHT=9000
MIN_FITNESS=0
MAX_FITNESS=100000

def distance(ax, ay, bx, by):
return math.sqrt(pow(ax-bx,2)+pow(ay-by,2))

def validate_angle(cur_angle,desired_angle):
angle_diff=(desired_angle-cur_angle+360)%360
if angle_diff>180:
angle_diff-=360
angle_change=max(-MAX_ANGLE_CHANGE,min(angle_diff,MAX_ANGLE_CHANGE))
new_angle=(cur_angle+angle_change)%360
return int(new_angle)

def validate_position(x,y,vx,vy,angle,thrust):
rad_angle=math.radians(angle)
vx+=int(math.cos(rad_angle)*thrust)
vy+=int(math.sin(rad_angle)*thrust)
x+=vx; y+=vy
vx=int(vx*FRICTION); vy=int(vy*FRICTION)
return x,y,vx,vy

def generate_individual():
chromosome=[]
x,y,vx,vy,angle=init_x,init_y,init_vx,init_vy,init_angle
for _ in range(GENE_LENGTH):
desired_angle=angle+random.uniform(-MAX_ANGLE_CHANGE,MAX_ANGLE_CHANGE)
angle=validate_angle(angle,desired_angle)
thrust=random.randint(0,200)
x,y,vx,vy=validate_position(x,y,vx,vy,angle,thrust)
chromosome.append((int(angle),int(thrust)))
return chromosome

def generate_population():
return [generate_individual() for _ in range(POPULATION_SIZE)]

def simulate(chromosome):
x,y,vx,vy,angle=init_x,init_y,init_vx,init_vy,init_angle
for gene in chromosome:
desired_angle,thrust=gene

angle=validate_angle(angle,desired_angle)
x,y,vx,vy=validate_position(x,y,vx,vy,angle,thrust)

if distance(x,y,*checkpoint)HEIGHT or yWIDTH or x

Подробнее здесь: [url]https://stackoverflow.com/questions/78825525/genetic-algorithm-car-trajectory[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Генетический алгоритм - траектория автомобиля
    Anonymous » » в форуме Python
    0 Ответы
    14 Просмотры
    Последнее сообщение Anonymous
  • Как заставить колесо автомобиля вращаться при движении автомобиля?
    Anonymous » » в форуме C#
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Как заставить колесо автомобиля вращаться при движении автомобиля?
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как заставить колесо автомобиля вращаться при движении автомобиля?
    Anonymous » » в форуме C#
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous
  • Как заставить колесо автомобиля вращаться при движении автомобиля?
    Anonymous » » в форуме C#
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Python»