sumolib.scenario.scenarios.basic_net
1# Eclipse SUMO, Simulation of Urban MObility; see https://eclipse.dev/sumo 2# Copyright (C) 2012-2026 German Aerospace Center (DLR) and others. 3# This program and the accompanying materials are made available under the 4# terms of the Eclipse Public License 2.0 which is available at 5# https://www.eclipse.org/legal/epl-2.0/ 6# This Source Code may also be made available under the following Secondary 7# Licenses when the conditions for such availability set forth in the Eclipse 8# Public License 2.0 are satisfied: GNU General Public License, version 2 9# or later which is available at 10# https://www.gnu.org/licenses/old-licenses/gpl-2.0-standalone.html 11# SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-or-later 12 13# @file basic_net.py 14# @author Daniel Krajzewicz 15# @date 2014-09-01 16 17from __future__ import absolute_import 18from __future__ import print_function 19 20 21from . import fileNeedsRebuild, Scenario 22import os 23import math 24import sumolib.net.generator.grid as netGenerator 25import sumolib.net.generator.demand as demandGenerator 26from sumolib.net.generator.network import Edge, Lane 27 28 29class Scenario_BasicNet(Scenario): 30 NAME = "BasicNet" 31 THIS_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), NAME) 32 TLS_FILE = os.path.join(THIS_DIR, "tls.add.xml") 33 NET_FILE = os.path.join(THIS_DIR, "network_%s.net.xml") 34 35 def __init__(self, rot, withDefaultDemand=True): 36 Scenario.__init__(self, self.NAME) 37 self.NET_FILE = self.NET_FILE % rot 38 self.netName = self.fullPath(self.NET_FILE) 39 self.demandName = self.fullPath("routes.rou.xml") 40 # network 41 if fileNeedsRebuild(self.netName, "netconvert"): 42 print("Network in '%s' needs to be rebuild" % self.netName) 43 defaultEdge = Edge(numLanes=1, maxSpeed=13.89) 44 defaultEdge.addSplit(50, 1) 45 defaultEdge.lanes = [Lane(dirs="rs"), Lane(dirs="l")] 46 netGen = netGenerator.grid(5, 5, None, defaultEdge) 47 m = rot / 3.14 48 for y in range(1, 6): 49 for x in range(1, 6): 50 sr = math.sin(rot * y / 2. * x / 2.) 51 cr = math.cos(rot * x / 2. * y / 2.) 52 # * abs(3-x)/3. 53 netGen._nodes[ 54 "%s/%s" % (x, y)].x = netGen._nodes["%s/%s" % (x, y)].x + sr * m * 250 55 # * abs(3-y)/3. 56 netGen._nodes[ 57 "%s/%s" % (x, y)].y = netGen._nodes["%s/%s" % (x, y)].y + cr * m * 250 58 # not nice, the network name should be given/returned 59 netGen.build(self.netName) 60 # demand 61 if withDefaultDemand: 62 print("Demand in '%s' needs to be rebuild" % self.demandName) 63 self.demand = demandGenerator.Demand() 64 # why isn't it possible to get a network and return all possible 65 # routes or whatever - to ease the process 66 self.demand.addStream(demandGenerator.Stream( 67 None, 0, 3600, 1000, "6/1_to_5/1", "1/1_to_0/1", {"hdv": .2, "passenger": .8})) 68 if fileNeedsRebuild(self.demandName, "duarouter"): 69 self.demand.build(0, 3600, self.netName, self.demandName)
30class Scenario_BasicNet(Scenario): 31 NAME = "BasicNet" 32 THIS_DIR = os.path.join(os.path.abspath(os.path.dirname(__file__)), NAME) 33 TLS_FILE = os.path.join(THIS_DIR, "tls.add.xml") 34 NET_FILE = os.path.join(THIS_DIR, "network_%s.net.xml") 35 36 def __init__(self, rot, withDefaultDemand=True): 37 Scenario.__init__(self, self.NAME) 38 self.NET_FILE = self.NET_FILE % rot 39 self.netName = self.fullPath(self.NET_FILE) 40 self.demandName = self.fullPath("routes.rou.xml") 41 # network 42 if fileNeedsRebuild(self.netName, "netconvert"): 43 print("Network in '%s' needs to be rebuild" % self.netName) 44 defaultEdge = Edge(numLanes=1, maxSpeed=13.89) 45 defaultEdge.addSplit(50, 1) 46 defaultEdge.lanes = [Lane(dirs="rs"), Lane(dirs="l")] 47 netGen = netGenerator.grid(5, 5, None, defaultEdge) 48 m = rot / 3.14 49 for y in range(1, 6): 50 for x in range(1, 6): 51 sr = math.sin(rot * y / 2. * x / 2.) 52 cr = math.cos(rot * x / 2. * y / 2.) 53 # * abs(3-x)/3. 54 netGen._nodes[ 55 "%s/%s" % (x, y)].x = netGen._nodes["%s/%s" % (x, y)].x + sr * m * 250 56 # * abs(3-y)/3. 57 netGen._nodes[ 58 "%s/%s" % (x, y)].y = netGen._nodes["%s/%s" % (x, y)].y + cr * m * 250 59 # not nice, the network name should be given/returned 60 netGen.build(self.netName) 61 # demand 62 if withDefaultDemand: 63 print("Demand in '%s' needs to be rebuild" % self.demandName) 64 self.demand = demandGenerator.Demand() 65 # why isn't it possible to get a network and return all possible 66 # routes or whatever - to ease the process 67 self.demand.addStream(demandGenerator.Stream( 68 None, 0, 3600, 1000, "6/1_to_5/1", "1/1_to_0/1", {"hdv": .2, "passenger": .8})) 69 if fileNeedsRebuild(self.demandName, "duarouter"): 70 self.demand.build(0, 3600, self.netName, self.demandName)
Scenario_BasicNet(rot, withDefaultDemand=True)
36 def __init__(self, rot, withDefaultDemand=True): 37 Scenario.__init__(self, self.NAME) 38 self.NET_FILE = self.NET_FILE % rot 39 self.netName = self.fullPath(self.NET_FILE) 40 self.demandName = self.fullPath("routes.rou.xml") 41 # network 42 if fileNeedsRebuild(self.netName, "netconvert"): 43 print("Network in '%s' needs to be rebuild" % self.netName) 44 defaultEdge = Edge(numLanes=1, maxSpeed=13.89) 45 defaultEdge.addSplit(50, 1) 46 defaultEdge.lanes = [Lane(dirs="rs"), Lane(dirs="l")] 47 netGen = netGenerator.grid(5, 5, None, defaultEdge) 48 m = rot / 3.14 49 for y in range(1, 6): 50 for x in range(1, 6): 51 sr = math.sin(rot * y / 2. * x / 2.) 52 cr = math.cos(rot * x / 2. * y / 2.) 53 # * abs(3-x)/3. 54 netGen._nodes[ 55 "%s/%s" % (x, y)].x = netGen._nodes["%s/%s" % (x, y)].x + sr * m * 250 56 # * abs(3-y)/3. 57 netGen._nodes[ 58 "%s/%s" % (x, y)].y = netGen._nodes["%s/%s" % (x, y)].y + cr * m * 250 59 # not nice, the network name should be given/returned 60 netGen.build(self.netName) 61 # demand 62 if withDefaultDemand: 63 print("Demand in '%s' needs to be rebuild" % self.demandName) 64 self.demand = demandGenerator.Demand() 65 # why isn't it possible to get a network and return all possible 66 # routes or whatever - to ease the process 67 self.demand.addStream(demandGenerator.Stream( 68 None, 0, 3600, 1000, "6/1_to_5/1", "1/1_to_0/1", {"hdv": .2, "passenger": .8})) 69 if fileNeedsRebuild(self.demandName, "duarouter"): 70 self.demand.build(0, 3600, self.netName, self.demandName)