retcode = subprocess.call([ netconvertBinary, "-n", "data/spd-road.nod.xml", "-e", "data/spd-road.edg.xml", "-o", "data/spd-road.net.xml", "-v" ], stdout=sys.stdout, stderr=sys.stderr) try: shutil.copy("data/spd-road.net.xml", "net.net.xml") except: print("Missing 'spd-road.net.xml'") print(">> Netbuilding closed with status %s" % retcode) sys.stdout.flush() # build/check vss buildVSS('data/obstimes_1_7.txt', 'data/obstimes_1_8.txt', 'data/spd-road.vss.xml') shutil.copy("data/spd-road.vss.xml", "vss.xml") sys.stdout.flush() genDemand('data/obstimes_1_1.txt', 'data/spd-road.rou.xml') validate.parseObsTimes() # perform calibration fpLog = open('results.csv', 'w') params = [22.0, 2.0, 2.0, 5.0, 0.5, 1.5] # call to (unconstrained) Nelder Mead; does not work correctly, because # method very often stumples over unrealistic input parameters (like tTau<1), # which causes SUMO to behave strangely. # fmin(gof, params) fmin_cobyla(gof, params, [conVmax, conAmax, conTtau, conSigA, conSigA2], rhoend=1.0e-4) fpLog.close()
def conSigA2(params): # sigA < 1.0 return 1.0 - params[4] def conAmax(params): # aMax > 0.1 return params[1] - 0.1 netconvertBinary = checkBinary('netconvert') # build/check network retcode = subprocess.call([netconvertBinary, "-n", "data/spd-road.nod.xml", "-e", "data/spd-road.edg.xml", "-o", "data/spd-road.net.xml","-v"], stdout=sys.stdout, stderr=sys.stderr) try: shutil.copy("data/spd-road.net.xml", "net.net.xml") except: print "Missing 'spd-road.net.xml'" print ">> Netbuilding closed with status %s" % retcode sys.stdout.flush() # build/check vss buildVSS('data/obstimes_1_7.txt', 'data/obstimes_1_8.txt', 'data/spd-road.vss.xml') shutil.copy("data/spd-road.vss.xml", "vss.xml") sys.stdout.flush() genDemand('data/obstimes_1_1.txt', 'data/spd-road.rou.xml') validate.parseObsTimes() # perform calibration fpLog = open('results.csv', 'w') params = [22.0, 2.0, 2.0, 5.0, 0.5, 1.5] # call to (unconstrained) Nelder Mead; does not work correctly, because # method very often stumples over unrealistic input parameters (like tTau<1), # which causes SUMO to behave strangely. # fmin(gof, params) fmin_cobyla(gof, params, [conVmax, conAmax, conTtau, conSigA, conSigA2], rhoend=1.0e-4) fpLog.close()