{"id":528,"date":"2014-08-20T16:52:18","date_gmt":"2014-08-20T19:52:18","guid":{"rendered":"http:\/\/www.galirows.com.br\/meublog\/?p=528"},"modified":"2021-06-24T07:55:30","modified_gmt":"2021-06-24T10:55:30","slug":"diversos-veiculos-sumo","status":"publish","type":"post","link":"http:\/\/www.galirows.com.br\/meublog\/blog\/diversos-veiculos-sumo\/","title":{"rendered":"Gerar diversas rotas, tipos de ve\u00edculo e ve\u00edculos no SUMO"},"content":{"rendered":"\n<p>Na <a title=\"Introdu\u00e7\u00e3o ao SUMO\" href=\"http:\/\/www.galirows.com.br\/meublog\/blog\/introducao-ao-sumo\/\">parte introdut\u00f3ria<\/a> sobre o SUMO foi visto uma simula\u00e7\u00e3o utilizando apenas 1 ve\u00edculo. &nbsp;Ser\u00e1 elaborada agora a inclus\u00e3o de diversos ve\u00edculo e rotas para uma simula\u00e7\u00e3o mais completa.<\/p>\n\n\n\n<p>A especifica\u00e7\u00e3o da rota realizada anteriormente foi a definida a seguir, onde foi especificado um tipo de ve\u00edculo (identificado como &#8220;Car&#8221;) e uma rota que passa por dois segmentos (os <em>edges<\/em> identificados como &#8220;1to2&#8221; e &#8220;2to3&#8221;). Na linha 4 ent\u00e3o foi finalmente adicionado um ve\u00edculo a simula\u00e7\u00e3o, sendo esse to tipo &#8220;Car&#8221; e que deve se deslocar na simula\u00e7\u00e3o utilizando os segmentos, inclusive na sequ\u00eancia, especificado na rota definida.<\/p>\n\n\n\n<pre class=\"wp-block-code lang:default decode:true\"><code lang=\"xml\" class=\"language-xml\">&lt;routes&gt;\n &lt;vType accel=\"2\" decel=\"4\" maxSpeed=\"20\" id=\"Car\" length=\"5\" \/&gt;\n &lt;route id=\"rota0\" edges=\"1to2 2to3\" \/&gt;\n &lt;vehicle type=\"Car\" route=\"rota0\" id=\"carro1\" depart=\"1\" \/&gt;\n&lt;\/routes&gt;<\/code><\/pre>\n\n\n\n<p>Para definir novos ve\u00edculos \u00e9 necess\u00e1rio apenas adicionar novas linhas com a <em>tag<\/em> &#8220;vehicle&#8221;, como realizado na especifica\u00e7\u00e3o seguinte. Observe que todos os ve\u00edculos definidos s\u00e3o do tipo &#8220;Car&#8221; e estar\u00e3o na mesma rota, se diferenciando no nome do identificador (que precisa ser \u00fanico) e tamb\u00e9m no tempo de partida, definido na propriedade &#8220;depart&#8221;. Como foram definidos tempos de partida diferentes, os ve\u00edculos seguir\u00e3o e ir\u00e3o para o mesmo local, s\u00f3 que em momentos diferentes.<\/p>\n\n\n\n<pre class=\"wp-block-code lang:default decode:true\"><code lang=\"xml\" class=\"language-xml\">&lt;routes&gt;\n  &lt;vType accel=\"2\" decel=\"4\" maxSpeed=\"20\" id=\"Car\" length=\"5\" \/&gt;\n  &lt;route id=\"rota0\" edges=\"1to2 2to3\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota0\" id=\"carro1\" depart=\"1\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota0\" id=\"carro2\" depart=\"10\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota0\" id=\"carro3\" depart=\"20\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota0\" id=\"carro4\" depart=\"30\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota0\" id=\"carro5\" depart=\"40\" \/&gt;\n&lt;\/routes&gt;<\/code><\/pre>\n\n\n\n<p class=\"has-text-align-right\"><span style=\"color: #808080;\">O tempo de partida (depart) \u00e9 um determinado instante da simula\u00e7\u00e3o, sendo esse mostrado atrav\u00e9s de um cronometro na parte central e superior da interface do sumo.<\/span><\/p>\n\n\n\n<p>Destaca-se a import\u00e2ncia do tempo de partida na especifica\u00e7\u00e3o das rotas. Na escrita das rotas, o tempo de partida precisa estar definido em ordem crescente. Podem ter ve\u00edculos com o mesmo momento de partida, desde que seja mantida a ordem crescente.<\/p>\n\n\n\n<p>Mesmo com 5 ve\u00edculos definidos e eles partindo em momentos diferentes na simula\u00e7\u00e3o, todos fazem o mesmo caminho, trafegando pelos mesmos <em>edges<\/em>. Sendo assim \u00e9 necess\u00e1rio especificar novas rotas para serem trafegadas. A especifica\u00e7\u00e3o abaixo adiciona outras 2 rotas (linhas 4 e 5) com trajetos distintos. Tamb\u00e9m foram alteradas os 3 \u00faltimos ve\u00edculos adicionados para trafegar nessas novas rotas. Observe que, diferente dos tempos de partida, as rotas n\u00e3o precisam estar sendo relacionadas em ordem.<\/p>\n\n\n\n<pre class=\"wp-block-code lang:default decode:true\"><code lang=\"xml\" class=\"language-xml\">&lt;routes&gt;\n  &lt;vType accel=\"2\" decel=\"4\" maxSpeed=\"20\" id=\"Car\" length=\"5\" \/&gt;\n  &lt;route id=\"rota0\" edges=\"1to2 2to3\" \/&gt;\n  &lt;route id=\"rota1\" edges=\"1to2 2to3 3to2 2to1\" \/&gt;\n  &lt;route id=\"rota2\" edges=\"3to2 2to1\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota0\" id=\"carro1\" depart=\"1\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota0\" id=\"carro2\" depart=\"10\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota2\" id=\"carro3\" depart=\"20\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota2\" id=\"carro4\" depart=\"30\" \/&gt;\n  &lt;vehicle type=\"Car\" route=\"rota1\" id=\"carro5\" depart=\"40\" \/&gt;\n&lt;\/routes&gt;<\/code><\/pre>\n\n\n\n<p>Agora a simula\u00e7\u00e3o possui alguns ve\u00edculos e que percorrem de maneira diferente as vias especificadas. Como no transito real os ve\u00edculos n\u00e3o s\u00e3o todos do mesmo tipo, o SUMO permite especificar diferentes tipos de ve\u00edculo para a simula\u00e7\u00e3o, incluindo ve\u00edculos com comportamentos diferentes.<\/p>\n\n\n\n<p>A especifica\u00e7\u00e3o a seguir \u00e9 uma altera\u00e7\u00e3o da especifica\u00e7\u00e3o anterior sendo adicionados 2 novos tipos de ve\u00edculo, representando um t\u00e1xi e um \u00f4nibus. Detalhes da especifica\u00e7\u00e3o ser\u00e3o dados posteriormente. Tamb\u00e9m foi alterado o tipo do ve\u00edculos das linhas 9 e 11, fazendo com que dois ve\u00edculos que eram do tipo &#8220;Car&#8221; passem a ser do tipo &#8220;Taxi&#8221; (linha 9) e &#8220;Bus&#8221; (linha 11).<\/p>\n\n\n\n<pre class=\"wp-block-code lang:default decode:true\"><code lang=\"xml\" class=\"language-xml\">&lt;routes&gt;\n  &lt;vType accel=\"2\" decel=\"4\" maxSpeed=\"20\" id=\"Car\" length=\"5\" \/&gt;\n  &lt;vType accel=\"2\" decel=\"4\" maxSpeed=\"20\" id=\"Taxi\" sigma=\"1\" length=\"5\" color=\"1,0,0\" \/&gt;\n  &lt;vType accel=\"1\" decel=\"3\" maxSpeed=\"16\" id=\"Bus\" length=\"10\" \/&gt;\n  &lt;route id=\"rota0\" edges=\"1to2 2to3\" \/&gt;\n  &lt;route id=\"rota1\" edges=\"1to2 2to3 3to2 2to1\" \/&gt;\n  &lt;route id=\"rota2\" edges=\"3to2 2to1\" \/&gt;\n  &lt;vehicle type=\"Car\"  route=\"rota0\" id=\"carro1\" depart=\"1\" \/&gt;\n  &lt;vehicle type=\"Taxi\" route=\"rota0\" id=\"carro2\" depart=\"10\" \/&gt;\n  &lt;vehicle type=\"Car\"  route=\"rota2\" id=\"carro3\" depart=\"20\" \/&gt;\n  &lt;vehicle type=\"Bus\"  route=\"rota2\" id=\"carro4\" depart=\"30\" \/&gt;\n  &lt;vehicle type=\"Car\"  route=\"rota1\" id=\"carro5\" depart=\"40\" \/&gt;\n&lt;\/routes&gt;<\/code><\/pre>\n\n\n\n<p>O diferencial do &#8220;Taxi&#8221; na especifica\u00e7\u00e3o com rela\u00e7\u00e3o ao &#8220;Car&#8221; s\u00e3o duas propriedades adicionais. A primeira define um valor de sigma para 1 e a segunda configura o t\u00e1xi para a cor vermelha. O sigma \u00e9 um valor para a imperfei\u00e7\u00e3o no modo de dirigir e o valor est\u00e1 entre zero e 1, sendo 1 a maior imperfei\u00e7\u00e3o poss\u00edvel para o sistema. A cor \u00e9 especificada com valores no padr\u00e3o RGB.<\/p>\n\n\n\n<p class=\"has-text-align-right\"><span style=\"color: #808080;\">O padr\u00e3o RGB especifica a quantidade de cor vermelha (Red), verde (Green) e azul (Blue) existente na cor final. No caso do valor definido &#8220;1,0,0&#8221; significa o m\u00e1ximo de vermelho e nada de verde e azul, formando um vermelho puro. Um ve\u00edculo verde seria definido por &#8220;0,1,0&#8221;, um azul como &#8220;0,0,1&#8221;, um amarelo como &#8220;1,1,0&#8221; (o amarelo \u00e9 a mistura das cores vermelha e verde) e assim por diante.<\/span><\/p>\n\n\n\n<p>O ve\u00edculo identificado como &#8220;Bus&#8221; possui as altera\u00e7\u00f5es das propriedades de acelera\u00e7\u00e3o e desacelera\u00e7\u00e3o, sendo um ve\u00edculo que demora mais para acelerar e desacelerar. Tamb\u00e9m foi alterado o tamanho desse tipo de ve\u00edculo, sendo o dobro do valor utilizado para o carro e t\u00e1xi.<\/p>\n\n\n\n<p>Executando a simula\u00e7\u00e3o \u00e9 poss\u00edvel visualizar o primeiro ve\u00edculo saindo do primeiro n\u00f3 (identificado como &#8220;p1&#8221;) e no instante 10 da simula\u00e7\u00e3o sair\u00e1 outro ve\u00edculo do n\u00f3 &#8220;p1&#8221;, mas esse estar\u00e1 na cor vermelha, que representa um t\u00e1xi. Depois&nbsp;surgir\u00e1 outro carro em outro n\u00f3, seguido de um ve\u00edculo do tipo &#8220;Bus&#8221;. Um quinto carro ir\u00e1 surgir na sequ\u00eancia.<\/p>\n\n\n\n<p>Sendo assim, com esses recursos vistos \u00e9 poss\u00edvel adicionar diversos tipos diferentes de ve\u00edculos para uma simula\u00e7\u00e3o mais real\u00edstica, al\u00e9m de poder especificar rotas diversas formadas pela rede. Rotas mais movimentadas ter\u00e3o mais ve\u00edculos trafegando por elas, e sua modelagem deve observar isso.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Na parte introdut\u00f3ria sobre o SUMO foi visto uma simula\u00e7\u00e3o utilizando apenas 1 ve\u00edculo. &nbsp;Ser\u00e1 elaborada agora a inclus\u00e3o de diversos ve\u00edculo e rotas para uma simula\u00e7\u00e3o mais completa. A especifica\u00e7\u00e3o da rota realizada anteriormente foi a definida a seguir, onde foi especificado um tipo de ve\u00edculo (identificado como &#8220;Car&#8221;) e uma rota que passa [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":632,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0,"footnotes":""},"categories":[13],"tags":[18],"class_list":["post-528","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-simulacao","tag-sumo"],"aioseo_notices":[],"amp_enabled":true,"_links":{"self":[{"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/posts\/528","targetHints":{"allow":["GET"]}}],"collection":[{"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/comments?post=528"}],"version-history":[{"count":7,"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/posts\/528\/revisions"}],"predecessor-version":[{"id":1077,"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/posts\/528\/revisions\/1077"}],"wp:featuredmedia":[{"embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/media\/632"}],"wp:attachment":[{"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/media?parent=528"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/categories?post=528"},{"taxonomy":"post_tag","embeddable":true,"href":"http:\/\/www.galirows.com.br\/meublog\/wp-json\/wp\/v2\/tags?post=528"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}