Я пытаюсь сгенерировать файл, учитывая количество машин (i
) и время прибытия (j
), но я не могу заставить код работать должным образом.Например, если вы хотите, чтобы 5 автомобилей отправлялись между 0 и 60 [i = 5, j = (0,60)], сгенерируйте что-то вроде этого:
<routes>
<vehicle id="left_0" type="typeWE" route="left" depart="8" />
<vehicle id="left_1" type="typeWE" route="left" depart="17" />
<vehicle id="right_2" type="typeWE" route="right" depart="39" />
<vehicle id="up_3" type="typeNS" route="up" depart="50" color="1,0,0"/>
<vehicle id="left_4" type="typeWE" route="left" depart="58" />
<routes>
Это код:
from __future__ import absolute_import
from __future__ import print_function
import os
import sys
import optparse
import subprocess
import random
def generate_routefile():
random.seed(47)
N = 800 # number of cars
M = 1600 # demand per second from different directions
pWE = 1. / 10
pNS = 1. / 30
with open("800_r.rou.xml", "w") as routes:
print("<routes>", file=routes)
lastVeh = 0
vehNr = 0
for i in range(N):
for j in range(M):
if random.uniform(0, 1) < pWE:
print(' <vehicle id="right_%i" type="typeWE" route="right" depart="%%j" />' % (
vehNr, i, j), file=routes)
vehNr += 1
lastVeh = i
if random.uniform(0, 1) < pEW:
print(' <vehicle id="left_%i" type="typeWE" route="left" depart="%i" />' % (
vehNr, i), file=routes)
vehNr += 1
lastVeh = i
if random.uniform(0, 1) < pNS:
print(' <vehicle id="down_%i" type="typeNS" route="down" depart="%i" color="1,0,0"/>' % (
vehNr, i), file=routes)
vehNr += 1
lastVeh = i
if random.uniform(0, 1) < pNS:
print(' <vehicle id="up_%i" type="typeNS" route="up" depart="%i" color="1,0,0"/>' % (
vehNr, i), file=routes)
vehNr += 1
lastVeh = i
print("</routes>", file=routes)
if __name__ == "__main__":
generate_routefile()`
Ошибка: line 36, in generate_routefile
vehNr, i, j), file=routes)
ValueError: unsupported format character 'j' (0x6a) at index 64
Я пытаюсь добавить переменную для времени прибытия транспортных средств (отправление), код работает только тогда, когда i
является единственной переменной.
Это работает, но с помощью этого кода я могу определить только значение отправления:
for i in range(N):
if random.uniform(0, 1) < pWE:
print(' <vehicle id="right_%i" type="typeWE" route="right" depart="%i" />' % (
vehNr, i), file=routes)
vehNr += 1
lastVeh = i
, но это не так, но в этом я бы определил количество автомобилей и время отправления:
for i in range(N):
for j in range(M):
if random.uniform(0, 1) < pWE:
print(' <vehicle id="right_%i" type="typeWE" route="right" depart="%j" />' % (
vehNr, i, j), file=routes)
vehNr += 1
lastVeh = i