SUMOで渋滞実験2

道路

netgenerate --grid --grid.x-number=2 --grid.y-number=2 --grid.y-length=5000 --grid.x-length=5000 --output-file=jam6.net.xml

交通を作るスクリプト
jam6_flow_wa.rb

car_number=3000;
number_of_round=10000;
str=""
str2=""
number_of_round.times{|i|
	str=str+" "+"1/0to0/0 0/0to1/0"
}


number_of_round.times{|i|
	str2=str2+" "+"0/0to1/0 1/0to0/0"
}

puts "<routes>"
puts "<vType id=\"type1\" minGap=\"0\" tau=\"3\" sigma=\"1\"/>"
car_number.times{|i|
j=i%5000;
		puts "\t<vehicle id=\"#{i}\" depart=\"0\" departSpeed=\"max\" arrivalSpeed=\"0.00\" color=\"1,1,0\" departPos=\"#{j}\" type=\"type1\">"
	if i%2==0
		puts "\t\t<route edges=\"#{str}\"/>"
	else
		puts "\t\t<route edges=\"#{str2}\"/>"
	end
		puts "\t</vehicle>"
}
puts "</routes>"

交通を作る

ruby jam6_flow_wa.rb > jam_flow6_wa.rou.xml

設定ファイル
jam6_wa.sumocfg

 <configuration>
 	<input>
		<net-file value="jam6.net.xml"/>
		<route-files value="jam_flow6_wa.rou.xml"/>

	</input>
	<time>

		<begin value="0"/>

		<end value="100000"/>

	</time>

 </configuration>

実行

sumo-gui -c jam6_wa.sumocfg

バッチ用スクリプト
cat jam6_flow_wa.rb

car_number=ARGV[0].to_i;
number_of_round=300;
str=""
str2=""
number_of_round.times{|i|
	str=str+" "+"0/0to1/0 1/0to0/0"
}


number_of_round.times{|i|
	str2=str2+" "+"1/0to0/0 0/0to1/0"
}

puts "<routes>"
puts "<vType id=\"type1\" minGap=\"0\" tau=\"3\" sigma=\"1\"/>"
car_number.times{|i|
j=i%5000;
		puts "\t<vehicle id=\"#{i}\" depart=\"0\" departSpeed=\"max\" arrivalSpeed=\"0.00\" color=\"1,1,0\" departPos=\"#{j}\" type=\"type1\">"
	if i%2==0
		puts "\t\t<route edges=\"#{str}\"/>"
	else
		puts "\t\t<route edges=\"#{str2}\"/>"
	end
		puts "\t</vehicle>"
}
puts "</routes>"

バッチ処理

sumo -c jam6b_wa.sumocfg --netstate-dump jam6b_wa.dump

ruby jam6_flow_wa_b.rb 30 > jam_flow5_wa.rou.xml

car_number=ARGV[0].to_i;
car_number_lane=car_number/2
#number_of_round=2000;
#
number_of_round=100;
str="0/0to1/0"
str2="0/0to1/0"
number_of_round.times{|i|
	str=str+" "+"1/0to2/0 2/0to1/0"
}


number_of_round.times{|i|
	str2=str2+" "+"1/0to2/0 2/0to1/0"
}

puts "<routes>"
puts "<vType id=\"type1\" minGap=\"0\" tau=\"3\" sigma=\"1\"/>"
#
#puts "<vType id=\"type1\" minGap=\"2.4\" tau=\"3\" sigma=\"0\"/>"
car_number.times{|i|
	dx=(250.0)/(car_number_lane+0.0)
	j=i*dx+rand();
#		puts "\t<vehicle id=\"#{i}\" depart=\"1\" departSpeed=\"max\" arrivalSpeed=\"0.00\" color=\"1,1,0\" departPos=\"#{j}\" type=\"type1\">"
#
		puts "\t<vehicle id=\"#{i}\" depart=\"#{100*i}\" departSpeed=\"max\" arrivalSpeed=\"0.00\" color=\"1,1,0\" departPos=\"0\" type=\"type1\">"
	if i%2==0
		puts "\t\t<route edges=\"#{str}\"/>"
	else
		puts "\t\t<route edges=\"#{str2}\"/>"
	end
		puts "\t</vehicle>"
}
puts "</routes>"

sumo-gui -c jam5_wa.sumocfg --time-to-teleport -1