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)
class Scenario_BasicNet(sumolib.scenario.scenarios.Scenario):
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)
NAME = 'BasicNet'
THIS_DIR = '/home/delphi/gcc/sumo/tools/sumolib/scenario/scenarios/BasicNet'
TLS_FILE = '/home/delphi/gcc/sumo/tools/sumolib/scenario/scenarios/BasicNet/tls.add.xml'
NET_FILE = '/home/delphi/gcc/sumo/tools/sumolib/scenario/scenarios/BasicNet/network_%s.net.xml'
netName
demandName