rota package:unknown R Documentation Cálculo do caminho de um ponto até outro, com mudança de posição dos pontos ao longo do tempo Description: A função calcula o melhor caminho de um ponto A até B, com possibilidade de paradas, sendo que os pontos alteram sua posição com o tempo. Na existência de paradas, a rota será calculada de trecho em trecho, até o ponto de destino. Será retornado um resumo do melhor caminho escolhido e um mapa representando o trajeto. Usage: rota(posx, posy, t.partida=1, vel=5, p.partida, p.destino, p.parada=NULL, ordem.fixa=TRUE, encurtar="tempo.espera", tx.amostragem=1, hora1=0, dia1=0, xlab="Unidade de medida", ylab="Unidade de medida", main="Mapa do espaço") Arguments: posx data frame da posição dos pontos no eixo x, em cada horário amostrado, com taxa de amostragem constante. A primeira coluna deve conter os nomes dos pontos. posy data frame da posição dos pontos no eixo y, em cada horário amostrado, com taxa de amostragem constante. A primeira coluna deve conter os nomes dos pontos. t.partida número da coluna, nos data.frames posx e posy, correspondente ao horário de partida. Descontar a primeira coluna (dos caracteres). Por padrão, t.partida será igual a 1, ou seja, a primeira coluna de dados numéricos. vel velocidade do deslocamento,no formato: unidade de x e y/taxa de amostragem p.partida nome do ponto de partida (character). p.destino nome do ponto de destino (character). p.parada vetor do(s) nome(s) do(s) ponto(s) de parada, se existirem (character). ordem.fixa lógico; se FALSE, a ordem dos pontos de parada é calculada de forma a otimizar o tempo ou a distância do deslocamento, a depender do critério de "encurtar"; se TRUE, será utilizada a ordem dos pontos definida em p.parada. encurtar critério pelo qual o caminho será escolhido ("tempo.espera" ou "distancia"). Se encurtar = "tempo.espera", o caminho retornado será aquele com menor duração e menor tempo de espera. Se encurtar = "distancia", o caminho retornado será o mais curto, independente da duração do deslocamento. tx.amostragem frequência com que a posição dos pontos no espaço foi registrada. Por padrão, tx.amostragem=1, o que significa que os registros foram feitos a cada hora. hora1 horário de partida real. Por padrão, o horário de partida é 0 horas. Os minutos e segundos devem ser representados como décimos. Por exemplo: escrever 1,5 para se referir a 01:30. dia1 dia de partida real. Por padrão, o dia de partida é 0. xlab legenda para o eixo x do mapa ylab legenda para o eixo y do mapa main título do mapa Details: O formato dos data.frames deve ser: >posx point.name positionx.time1 positionx.time2 positionx.time3 ... 1 character numeric numeric numeric 2 character numeric numeric numeric 3 character numeric numeric numeric ... >posy point.name positiony.time1 positiony.time2 positiony.time3 ... 1 character numeric numeric numeric 2 character numeric numeric numeric 3 character numeric numeric numeric ... A primeira coluna, em formato "character", deve conter o nome dos pontos. As colunas seguintes devem conter a posição de cada ponto no eixo x (posx) ou eixo y (posy), em cada horário amostrado (time1, time2, time3, ...). O tempo decorrido entre time1 e time2 equivale à tx.amostragem, que deve ser constante. Por padrão, o horário de partida será 0, utilizando a primeira coluna de amostras (t.partida=1). O valor 1 se refere à primeira coluna numérica dos dois data.frames (positionx.time1 e positiony.time1). Value: Retorna uma lista contendo um data.frame com o resumo da melhor rota encontrada, com base no critério escolhido em "encurtar". No caso de empates, mais data.frames serão retornados, como outros itens na lista. Cada data.frame conterá: Nome.do.ponto : Nome dos pontos presentes na rota, ordenados desde a partida até o destino. Posição.em.x : Posição no eixo x de cada ponto, no horário de chegada em cada um. Posição.em.y : Posição no eixo y de cada ponto, no horário de chegada em cada um. Horario.de.chegada : Horário em que se chegará em cada ponto, baseado no valor de hora1 e taxa de amostragem. Tempo.de.espera : Intervalo de tempo entre a chegada do sujeito na posição, calculada de acordo com a velocidade (vel), e a chegada do ponto nessa posição. Dia.de.chegada : Dia em que se chegará em cada ponto, baseado no valor de hora1, dia1 e taxa de amostragem É retornado, também, um mapa ilustrando a rota desde a partida até o destino, exibindo, para cada ponto, seu nome e horário de chegada. No caso de empate, mais de um mapa será exibido. Warning: É importante que a velocidade do deslocamento seja suficiente para compensar o movimento dos pontos. Se a velocidade for pequena (por exemplo, igual a uma unidade de x e y por taxa de amostragem), é necessário que os pontos se desloquem dentro de um espaço delimitado e que haja registro das posições durante um tempo mais longo. Caso contrário, não haverá rotas para serem retornadas. Note: O critério encurtar=distancia escolherá as rotas com as menores distâncias, independente da duração da viagem. Portanto, o seu uso para data.frames com registros de vários dias poderá aumentar o tempo de viagem em mais de 24 horas, dependendo das distâncias encontradas. Author(s): Milene Gomes Jannetti Examples: #### Criando dados #### ##Posicao x set.seed(23) posx<-data.frame(nome=letters, mresp=sample(seq(from=1, to=50, by=0.1), (length(letters))), stringsAsFactors=FALSE) for (i in 3:97) { for (j in 1:(length(letters))) { posx[j,i]<-sample(round(rnorm(20,posx[j,2],5),1),1) } } ##Posicao y set.seed(22) posy<-data.frame(nome=letters, mresp=sample(seq(from=1, to=50, by=0.1), (length(letters))), stringsAsFactors=FALSE) for (i in 3:97) { for (j in 1:(length(letters))) { posy[j,i]<-sample(round(rnorm(20,posy[j,2],5),1),1) } } ####Criando rota do ponto C até o ponto F, parando em A, L e G. ### ##Partida determinada para ocorrer em time3 (terceira coluna numérica dos data.frames). ##A coluna time3 foi amostrada no horário 12:00 do dia 2, então hora1=12 e dia1=2 ##Velocidade do deslocamento é igual a 2 unidades de x e y/taxa de amostragem. ##Taxa de amostragem é igual a 0.5, ou seja, 30 minutos. ##Deixar a função escolher a ordem dos pontos de parada (ordem.fixa=FALSE), para otimizar o tempo do deslocamento (encurtar="tempo.espera"). rota(posx, posy, t.partida=3, vel=2, p.partida="c", p.destino="f", p.parada=c("a","l","g"), tx.amostragem=0.5, hora1=12, dia1=2, ordem.fixa=FALSE, encurtar="tempo.espera")