TF Resource

Network assignment

What is Network Assignment?

Role of Network Assignment in Travel Forecasting

Overview of Methods for Traffic Assignment for Highways

All-or-nothing Assignments

Incremental assignment

Brief History of Traffic Equilibrium Concepts

Calculating Generalized Costs from Delays

Challenges for Highway Traffic Assignment

Transit Assignment

Latest Developments

Page categories

Topic Circles

Trip Based Models

More pages in this category:

# what is network assignment.

In the metropolitan transportation planning and analysis, the network assignment specifically involves estimating travelers’ route choice behavior when travel destinations and mode of travel are known. Origin-destination travel demand are assigned to a transportation network in order to estimate traffic flows and network travel conditions such as travel time. These estimated outputs from network assignment are compared against observed data such as traffic counts for model validation .

Caption:Example for a network assignment showing link-level truck volumes

Network assignment is a mathematical problem which is solved by a solution algorithm through the use of computer. It is usually resolved as a travel cost optimization problem for each origin-destination pair on a model network. For every origin-destination pair, a path is selected that typically minimizes travel costs. The simplest kind of travel cost is travel time from beginning to end of the trip. A more complex form of travel cost, called generalized cost, may include combinations of other costs of travel such as toll cost and auto operating cost on highway networks. Transit networks may include within generalized cost weights to emphasize out-of-vehicle time and penalties to represent onerous tasks. Usually, monetary costs of travel, such as tolls and fares, are converted to time equivalent based on an estimated value of time. The shortest path is found using a path finding algorithm .

The surface transportation network can include the auto network, bus network, passenger rail network, bicycle network, pedestrian network, freight rail network, and truck network. Traditionally, passenger modes are handled separately from vehicular modes. For example, trucks and passenger cars may be assigned to the same network, but bus riders often are assigned to a separate transit network, even though buses travel over roads. Computing traffic volume on any of these networks first requires estimating network specific origin-destination demand. In metropolitan transportation planning practice in the United States, the most common network assignments employed are automobile, truck, bus, and passenger rail. Bicycle, pedestrian, and freight rail network assignments are not as frequently practiced.

# Role of Network Assignment in Travel Forecasting

The urban travel forecasting process is analyzed within the context of four decision choices:

  • Personal Daily Activity
  • Locations to Perform those Activities
  • Mode of Travel to Activity Locations, and
  • Travel Route to the Activity Locations.

Usually, these four decision choices are named as Trip Generation , Trip Distribution , Mode Choice , and Traffic Assignment. There are variations in techniques on how these travel decision choices are modeled both in practice and in research. Generalized cost, which is typically in units of time and is an output of the path-choice step of the network assignment process, is the single most important travel input to other travel decision choices, such as where to travel and by which mode. Thus, the whole urban travel forecasting process relies heavily on network assignment. Generalized cost is also a major factor in predicting socio-demographic and spatial changes. To ensure consistency in generalized cost between all travel model components in a congested network, travel cost may be fed back to the earlier steps in the model chain. Such feedback is considered “best practice” for urban regional models. Outputs from network assignment are also inputs for estimating mobile source emissions as part of a review of metropolitan area transportation plans, a requirement under the Clean Air Act Amendments of 1990 for areas not in attainment of the National Ambient Air Quality Standard.

nimble traffic assignment

# Overview of Methods for Traffic Assignment for Highways

This topic deals principally with an overview of static traffic assignment. The dynamic traffic assignment is discussed elsewhere.

There are a large number of traffic assignment methods, but they all have at their core a procedure called “all-or-nothing” (AON) traffic assignment. All-or-nothing traffic assignment places all trips between an origin and destination on the shortest path between that origin and destination and no trips on any other possible path (compare path finding algorithm for a step-by-step introduction). Shortest paths may be determined by a well-known algorithm by Dijkstra; however, when there are turn penalties in the network a different algorithm, called Vine building , must be used instead.

# All-or-nothing Assignments

The simplest assignment algorithm is the all-or-nothing traffic assignment. In this algorithm, flows from every origin to every destination are assigned using the path finding algorithm , and travel time remains unchanged regardless of travel volumes.

All-or-nothing traffic assignment may be used when delays are unimportant for a network. Another alternative to the user-equilibrium technique is the stochastic traffic assignment technique, which assumes variation in link level travel time.

One of the earliest, computationally efficient stochastic traffic assignment algorithms was developed by Robert Dial. [1] More recently the k-shortest paths algorithm has gained popularity.

The biggest disadvantage of the all-or-nothing assignment and the stochastic assignment is that congestion cannot be considered. In uncongested networks, these algorithms are very useful. In congested conditions, however, these algorithm miss that some travelers would change routes to avoid congestion.

# Incremental assignment

The incremental assignment method is the simplest way to (somewhat rudimentary) consider congestion. In this method, a certain share of all trips (such as half of all trips) is assigned to the network. Then, travel times are recalculated using a volume-delay function , or VDF. Next, a smaller share (such as 25% of all trips) is assigned based using the revised travel times. Using the demand of 50% + 25%, travel times are recalculated again. Next, another smaller share of trips (such as 10% of all trips) is assigned using the latest travel times.

A large benefit of the incremental assignment is model runtime. Usually, flows are assigned within 5 to 10 iterations. Most user-equilibrium assignment methods (see below) require dozens of iterations, which increases the runtime proportionally.

In the incremental assignment, the first share of trips is assigned based on free-flow conditions. Following iterations see some congestion, on only the very last trip to be assigned will consider true congestion levels. This is reasonable for lightly congested networks, as a large number of travelers could travel at free-flow speed.

The incremental assignment works unsatisfactorily in heavily congested networks, as even 50% of the travel demand may lead to congestion on selected roads. The incremental assignment will miss the fact that a portion of the 50% is likely to select different routes.

# Brief History of Traffic Equilibrium Concepts

Traffic assignment theory today largely traces its origins to a single principle of “user equilibrium” by Wardrop [2] in 1952. Wardrop’s “first” principle simply states (slightly paraphrased) that at equilibrium not a single driver may change paths without incurring a greater travel impedance . That is, any used path between an origin and destination must have a shortest travel time between the origin and destination, and all other paths must have a greater travel impedance. There may be multiple paths between an origin and destination with the same shortest travel impedance, and all of these paths may be used.

Prior to the early 1970’s there were many algorithms that attempted to solve for Wardrop’s user equilibrium on large networks. All of these algorithms failed because they either did not converge properly or they were too slow computationally. The first algorithm to be able to consistently find a correct user equilibrium on a large traffic network was conceived by a research group at Northwestern University (LeBlanc, Morlok and Pierskalla) in 1973. [3] This algorithm was called “Frank-Wolfe decomposition” after the name of a more general optimization technique that was adapted, and it found the minimum of an “objective function” that came directly from theory attributed to Beckmann from 1956. [4] The Frank-Wolfe decomposition formulation was extended to the combined distribution/assignment problem by Evans in 1974. [5]

A lack of extensibility of these algorithms to more realistic traffic assignments prompted model developers to seek more general methods of traffic assignment. A major development of the 1980s was a realization that user equilibrium traffic assignment is a “variational inequality” and not a minimization problem. [6] An algorithm called the method of successive averages (MSA) has become a popular replacement for Frank-Wolfe decomposition because of MSA’s ability to handle very complicated relations between speed and volume and to handle the combined distribution/mode-split/assignment problem. The convergence properties of MSA were proven for elementary traffic assignments by Powell and Sheffi and in 1982. [7] MSA is known to be slower on elementary traffic assignment problems than Frank-Wolfe decomposition, although MSA can solve a wider range of traffic assignment formulations allowing for greater realism.

A number of enhancements to the overall theme of Wardop’s first principle have been implemented in various software packages. These enhancements include: faster algorithms for elementary traffic assignments, stochastic multiple paths, OD table spatial disaggregation and multiple vehicle classes.

# Calculating Generalized Costs from Delays

Equilibrium traffic assignment needs a method (or series of methods) for calculating impedances (which is another term for generalized costs) on all links (and nodes) of the network, considering how those links (and nodes) were loaded with traffic. Elementary traffic assignments rely on volume-delay functions (VDFs), such as the well-known “BPR curve” (see NCHRP Report 365), [8] that expressed travel time as a function of link volume and link capacity. The 1985 US Highway Capacity Manual (and later editions through 2010) made it clear to transportation planners that delays on large portions of urban networks occur mainly at intersections, which are nodes on a network, and that the delay on any given intersection approach relates to what is happening on all other approaches. VDFs are not suitable for situations where there is conflicting and opposing traffic that affects delays. Software for implementing trip-based models are now incorporating more sophisticated delay relationships from the Highway Capacity Manual and other sources, although many MPO forecasting models still use VDFs, exclusively.

# Challenges for Highway Traffic Assignment

Numerous practical and theoretical inadequacies pertaining to Static User Equilibrium network assignment technique are reported in the literature. Among them, most widely noted concerns and challenges are:

  • Inadequate network convergence;
  • Continued use of legacy slow convergent network algorithm, despite availability of faster solution methods and computers;
  • Non-unique route flows and link flows for multi-class assignments and for assignment on networks that include delays from opposing and conflicting traffic;
  • Continued use of VDFs , when superior delay estimation techniques are available;
  • Unlikeness of a steady-state network condition;
  • Impractical assumption that all drivers have flawless route information and are acting without bias;
  • Every driver travels at the same congested speed, no vehicle traveling on the same link overtakes another vehicle;
  • Oncoming traffic does not affect traffic flows;
  • Interruptions, such as accidents or inclement weather, are not represented;
  • Traffic does not form queues;
  • Continued use of multi-hour time periods, when finer temporal detail gives better estimates of delay and path choice.

# Transit Assignment

Most transit network assignment in implementation is allocation of known transit network specific demand based on routes, vehicle frequency, stop location, transfer point location and running times. Transit assignments are not equilibrium, but can be either all-or-nothing or stochastic. Algorithms often use complicated expressions of generalized cost which include the different effects of waiting time, transfer time, walking time (for both access and egress), riding time and fare structures. Estimated transit travel time is not directly dependent on transit passenger volume on routes and at stations (unlike estimated highway travel times, which are dependent on vehicular volumes on roads and at intersection). The possibility of many choices available to riders, such as modes of access to transit and overlaps in services between transit lines for a portion of trip segments, add further complexity to these problems.

# Latest Developments

With the increased emphasis on assessment of travel demand management strategies in the US, there have been some notable increases in the implementation of disaggregated modeling of individual travel demand behavior. Similar efforts to simulate travel route choice on dynamic transportation network have been proposed, primarily to support the much needed realistic representation of time and duration of roadway congestion. Successful examples of a shift in the network assignment paradigm to include dynamic traffic assignment on a larger network have emerged in practice. Dynamic traffic assignments are able to follow UE principles. An even newer topic is the incorporation of travel time reliability into path building.

# References

Dial , Robert Barkley, Probabilistic Assignment; a Multipath Traffic Assignment Model Which Obviates Path Enumeration, Thesis (Ph.D.), University of Washington, 1971. ↩︎

Wardrop, J. C., Some Theoretical Aspects of Road Traffic Research, Proceedings, Institution of Civil Engineers Part 2, 9, pp. 325–378. 1952. ↩︎

LeBlanc, Larry J., Morlok, Edward K., Pierskalla, William P., An Efficient Approach to Solving the Road Network Equilibrium Traffic Assignment Problem, Transportation Research 9, 1975, 9, 309–318. ↩︎

(opens new window) ) ↩︎

Evans, Suzanne P., Derivation and Analysis of Some Models for Combining Trip Distribution and Assignment, Transportation Research, Vol 10, pp 37–57 1976. ↩︎

Dafermos, S.C., Traffic Equilibrium and Variational Inequalities, Transportation Science 14, 1980, pp. 42-54. ↩︎

Powell, Warren B. and Sheffi, Yosef, The Convergence of Equilibrium Algorithms with Predetermined Step Sizes, Transportation Science, February 1, 1982, pp. 45-55. ↩︎

(opens new window) ). ↩︎

← Mode choice Dynamic Traffic Assignment →

This site uses cookies to learn which topics interest our readers.

Book cover

Feedback Control Theory for Dynamic Traffic Assignment pp 25–53 Cite as

Traffic Assignment: A Survey of Mathematical Models and Techniques

  • Pushkin Kachroo 14 &
  • Kaan M. A. Özbay 15  
  • First Online: 17 May 2018

985 Accesses

2 Citations

Part of the book series: Advances in Industrial Control ((AIC))

This chapter presents the fundamentals of the theory and techniques of traffic assignment problem. It first presents the steady-state traffic assignment problem formulation which is also called static assignment, followed by Dynamic Traffic Assignment (DTA), where the traffic demand on the network is time varying. The static assignment problem is shown in a mathematical programming setting for two different objectives to be satisfied. The first one where all users experience same travel times in alternate used routes is called user-equilibrium and another setting called system optimum in which the assignment attempts to minimize the total travel time. The alternate formulation uses variational inequality method which is also presented. Dynamic travel routing problem is also reviewed in the variational inequality setting. DTA problem is shown in discrete and continuous time in terms of lumped parameters as well as in a macroscopic setting, where partial differential equations are used for the link traffic dynamics. A Hamilton–Jacobi- based travel time dynamics model is also presented for the links and routes, which is integrated with the macroscopic traffic dynamics. Simulation-based DTA method is also very briefly reviewed. This chapter is taken from the following Springer publication and is reproduced here, with permission and with minor changes: Pushkin Kachroo, and Neveen Shlayan, “Dynamic traffic assignment: A survey of mathematical models and technique,” Advances in Dynamic Network Modeling in Complex Transportation Systems (Editor: Satish V. Ukkusuri and Kaan Özbay) Springer New York, 2013. 1-25.

This chapter is taken from the following Springer publication and is reproduced here, with permission and with minor changes: Pushkin Kachroo, and Neveen Shlayan, “Dynamic traffic assignment: A survey of mathematical models and techniques,” Advances in Dynamic Network Modeling in Complex Transportation Systems (Editor: Satish V. Ukkusuri and Kaan Özbay) Springer New York, 2013. 1–25.

This is a preview of subscription content, log in via an institution .

Gazis DC (1974) Traffic science. Wiley-Interscience Inc, New York, NY

MATH   Google Scholar  

Potts RB, Oliver RM (1972) Flows in transportation networks. Elsevier Science

Google Scholar  

Stouffer SA (1940) Intervening opportunities: a theory relating mobility and distance. Am Sociol Rev 5:845–867

Article   Google Scholar  

Hitchcock FL (1941) The distribution of a product from several sources to numerous localities. J Math Phys 20:224–230

Article   MathSciNet   Google Scholar  

Voorhees AM (2013) A general theory of traffic movement 40:1105–1116. https://doi.org/10.1007/s11116-013-9487-0

Wilson AG (1967) A statistical theory of spatial distribution models. Transp Res 1:253–269

Ben-Akiva ME, Lerman SR (1985) Discrete choice analysis: theory and application to travel demand. MIT Press series in transportation studies, MIT Press

Wardrop JG (1952) Some theoretical aspects of road traffic research. Proc Inst Civil Eng PART II 1:325–378

Sheffi Y (1985) Urban transportation networks: equilibrium analysis with mathematical programming methods. Prentice-Hall

Peeta S, Ziliaskopoulos AK (2001) Foundations of dynamic traffic assignment: the past, the present and the future. Netw Spat Econ 1(3/4):233–265

Kachroo P, Sastry S (2016a) Travel time dynamics for intelligent transportation systems: theory and applications. IEEE Trans Intell Transp Syst 17(2):385–394

Kachroo P, Sastry S (2016b) Traffic assignment using a density-based travel-time function for intelligent transportation systems. IEEE Trans Intell Transp Syst 17(5):1438–1447

Dafermos SC, Sparrow FT (1969) The traffic assignment problem for a general network. J Res Natl Bur Stan 73B:91–118

Beckmann MJ, McGuire CB, Winsten CB (1955) Studies in the economics of transportation. Technical report, Rand Corporation

Dafermos S (1980) Traffic equilibrium and variational inequalities. Transp Sci 14:42–54

Dafermos S (1983) An iterative scheme for variational inequalities. Math Prog 26:40–47

Kinderlehrer D, Stampacchia G (2000) An introduction to variational inequalities and their applications, vol 31. Society for Industrial Mathematics

Avriel M (2003) Nonlinear programming: analysis and methods. Dover Publications

Bazaraa MS, Sherali HD, Shetty CM (2006) Nonlinear programming: theory and algorithms. John Wiley & Sons

Mangasarian OL (1994) Nonlinear programming, vol 10. Society for Industrial Mathematics. https://doi.org/10.1137/1.9781611971255

Nugurney A (2000) Sustainable transportation networks. Edward Elgar Publishing, Northampton, MA

Facchinei F, Pang JS (2007) Finite-dimensional variational inequalities and complementarity problems. Springer Science & Business Media

Nagurney A, Zhang D (2012) Projected dynamical systems and variational inequalities with applications, vol 2. Springer Science & Business Media

Zhang D, Nagurney A (1995) On the stability of projected dynamical systems. J Optim Theory Appl 85(1):97–124

Nagurney A, Zhang D (1997) Projected dynamical systems in the formulation, stability analysis, and computation of fixed-demand traffic network equilibria. Transp Sci 31(2):147–158

Zhang D, Nagurney A (1996) On the local and global stability of a travel route choice adjustment process. Transp Res Part B: Methodol 30(4):245–262

Dafermos S (1988) Sensitivity analysis in variational inequalities. Math Oper Res 13:421–434

Dupuis P, Nagurney A (1993) Dynamical systems and variational inequalities. Ann Oper Res 44(1):7–42

Skorokhod AV (1961) Stochastic equations for diffusion processes in a bounded region. Theory Probab Appl 6:264–274

Chiu Y-C, Bottom J, Mahut M, Paz A, Balakrishna R, Waller T, Hicks J (2010) A primer for dynamic traffic assignment. Trans Res Board, 2–3

Ran B, Boyce DE (1996) Modeling dynamic transportation networks: an intelligent transportation system oriented approach. Springer

Chapter   Google Scholar  

Friesz TL (2001) Special issue on dynamic traffic assignment. Netw Spat Econ Part I 1:231

Merchant DK, Nemhauser GL (1978a) A model and an algorithm for the dynamic traffic assignment problems. Transp Sci 12(3):183–199

Merchant DK, Nemhauser GL (1978b) Optimality conditions for a dynamic traffic assignment model. Transp Sci 12(3):183–199

Boyce D, Lee D, Ran B (2001) Analytical models of the dynamic traffic assignment problem. Netw Spat Econ 1:377–390

Friesz TL, Luque J, Tobin RL, Wie BW (1989) Dynamic network traffic assignment considered as a continuous time optimal control problem. Oper Res 37:893–901

Friesz TL, Bernstein D, Smith TE, Tobin RL, Wie BW (1993) A variational inequality formulation of the dynamic network user equilibrium problem. Oper Res 41:179–191

Chen HK (2012) Dynamic travel choice models: a variational inequality approach. Springer Science & Business Media

Carey M (1992) Nonconvexity of the dynamic traffic assignment problem. Transp Res Part B: Methodol 26(2):127–133

Lighthill MJ, Whitham GB (1955) On kinematic waves II. A theory of traffic on long crowded roods. Proc Roy Soc London A Math Phys Sci 229:317–345. https://doi.org/10.1098/rspa.1955.0089

Richards PI (1956) Shockwaves on the highway. Oper Res 4:42–51

Greenshields B, Channing W, Miller H (1935) A study of traffic capacity. In: Highway Research Board Proceedings. National Research Council (USA), Highway Research Board

LeVeque RJ (1990) Numerical methods for conservation laws. Birkhäuser Verlag

Bressan A (2000) Hyperbolic systems of conservation laws: the one-dimensional Cauchy problem. Oxford University Press

Strub I, Bayen A (2006) Weak formulation of boundary conditions for scalar conservation laws: an application to highway modeling. Int J Robust Nonlinear Control 16:733–748

Garavello M, Piccoli B (2006) Traffic flow on networks. American Institute of Mathematical Sciences, Ser Appl Maths 1:1–243

Holden H, Risebro NH (1995) A mathematical model of traffic flow on a network of unidirectional roads. SIAM J Math Anal 26:999–1017

Lebacque JP (1996) The godunov scheme and what it means for first order traffic flow models. In: Transportation and Traffic Theory, Proceedings of The 13th International Symposium on Transportation and Traffic Theory, Lyon, France, pp 647–677

Coclite GM, Piccoli B (2002) Traffic flow on a road network. Arxiv preprint math/0202146

Garavello M, Piccoli B (2005) Source-destination flow on a road network. Commun Math Sci 3(3):261–283

Gugat M, Herty M, Klar A, Leugering G (2005) Optimal control for traffic flow networks. J Optim theory Appl 126(3):589–616

Lebacque JP, Khoshyaran MM (2002) First order macroscopic traffic flow models for networks in the context of dynamic assignment. In: Patriksson M, Labbé M (eds) Transportation, Planning: State of the Art. Springer US, Boston, MA, pp 119–140. https://doi.org/10.1007/0-306-48220-7_8

Buisson C, Lebacque JP, Lesort JB (1996) Strada, a discretized macroscopic model of vehicular traffic flow in complex networks based on the godunov scheme. In: CESA’96 IMACS Multiconference: computational engineering in systems applications, pp 976–981

Mahmassani HS, Hawas YE, Abdelghany K, Abdelfatah A, Chiu YC, Kang Y, Chang GL, Peeta S, Taylor R, Ziliaskopoulos A (1998) DYNASMART-X; Volume II: analytical and algorithmic aspects. Technical report ST067 85

Ben-Akiva M, Bierlaire M, Koutsopoulos H, Mishalani R (1998) DynaMIT: a simulation-based system for traffic prediction. In: DACCORS short term forecasting workshop, vol TRANSP-OR-CONF-2006-060

Kachroo P, Özbay K (2012) Feedback control theory for dynamic traffic assignment. Springer Science & Business Media

Kachroo P, Özbay K (2011) Feedback ramp metering in intelligent transportation systems. Springer Science & Business Media

Kachroo P, Özbay K (1998) Solution to the user equilibrium dynamic traffic routing problem using feedback linearization. Transp Res Part B: Methodol 32(5):343–360

Kachroo P, Özbay K (2006) Modeling of network level system-optimal real-time dynamic traffic routing problem using nonlinear \(\text{ h }{\infty }\) feedback control theoretic approach. J Intell Transp Syst 10(4):159–171

Kachroo P, Özbay K (2005) Feedback control solutions to network level user-equilibrium real-time dynamic traffic assignment problems. Netw Spat Econ 5(3):243–260

Spiess H (1990) Conical volume-delay functions. Transp Sci 24(2):153–158

Download references

Author information

Authors and affiliations.

Department of Electrical and Computer Engineering, University of Nevada, Las Vegas, NV, USA

Pushkin Kachroo

Department of Civil and Urban Engineering, New York University, Brooklyn, NY, USA

Kaan M. A. Özbay

You can also search for this author in PubMed   Google Scholar

Corresponding author

Correspondence to Pushkin Kachroo .

Rights and permissions

Reprints and permissions

Copyright information

© 2018 Springer International Publishing AG, part of Springer Nature

About this chapter

Cite this chapter.

Kachroo, P., Özbay, K.M.A. (2018). Traffic Assignment: A Survey of Mathematical Models and Techniques. In: Feedback Control Theory for Dynamic Traffic Assignment. Advances in Industrial Control. Springer, Cham. https://doi.org/10.1007/978-3-319-69231-9_2

Download citation

DOI : https://doi.org/10.1007/978-3-319-69231-9_2

Published : 17 May 2018

Publisher Name : Springer, Cham

Print ISBN : 978-3-319-69229-6

Online ISBN : 978-3-319-69231-9

eBook Packages : Engineering Engineering (R0)

Share this chapter

Anyone you share the following link with will be able to read this content:

Sorry, a shareable link is not currently available for this article.

Provided by the Springer Nature SharedIt content-sharing initiative

  • Publish with us

Policies and ethics

  • Find a journal
  • Track your research

The Geography of Transport Systems

The spatial organization of transportation and mobility

Traffic Assignment Problem

nimble traffic assignment

Traffic assignment problems usually consider two dimensions.

  • Generation and attraction . A place of origin generates movements that are bound (attracted) to a place of destination. The relationship between traffic generation and attraction is commonly labeled as spatial interaction. The above example considers one origin/generation and destination/attraction, but the majority of traffic assignment problems consider several origins and destinations.
  • Path selection . Traffic assignment considers which paths are to be selected and the amount of traffic using these paths (if more than one unit). For simple problems, a single path will be selected, while for complex problems, several paths could be used. Factors behind the choice of traffic assignment may include cost, time, or the number of connections.

Share this:

Chapter 11 Writing simple nimbleFunctions

11.1 introduction to simple nimblefunctions.

nimbleFunctions are the heart of programming in NIMBLE. In this chapter, we introduce simple nimbleFunctions that contain only one function to be executed, in either compiled or uncompiled form, but no setup function or additional methods.

Defining a simple nimbleFunction is like defining an R function: nimbleFunction returns a function that can be executed, and it can also be compiled. Simple nimbleFunctions are useful for doing math or the other kinds of processing available in NIMBLE when no model or modelValues is needed. These can be used for any purpose in R programming. They can also be used as new functions and distributions in NIMBLE’s extension of BUGS (Chapter 12 ).

Here’s a basic example implementing the textbook calculation of least squares estimation of linear regression parameters 21 :

In this example, we fit a linear model for 100 random response values ( y ) to four columns of randomly generated explanatory variables ( X ). We ran the nimbleFunction solveLeastSquares uncompiled, natively in R, allowing testing and debugging (Section 15.7 ). Then we compiled it and showed that the compiled version does the same thing, but faster 22 . NIMBLE’s compiler creates C++ that uses the Eigen ( http://eigen.tuxfamily.org ) library for linear algebra.

Notice that the actual NIMBLE code is written as an R function definition that is passed to nimbleFunction as the run argument. Hence we call it the run code. run code is written in the NIMBLE language. This is similar to a narrow subset of R with some additional features. Formally, we view it as a distinct language that encompasses what can be compiled from a nimbleFunction.

To write nimbleFunctions, you will need to learn:

  • what R functions are supported for NIMBLE compilation and any ways they differ from their regular R counterparts;
  • how NIMBLE handles types of variables;
  • how to declare types of nimbleFunction arguments and return values;
  • that compiled nimbleFunctions always pass arguments to each other by reference.

The next sections cover each of these topics in turn.

11.2 R functions (or variants) implemented in NIMBLE

11.2.1 finding help for nimble’s versions of r functions.

Often, R help pages are available for NIMBLE’s versions of R functions using the prefix ‘nim’ and capitalizing the next letter. For example, help on NIMBLE’s version of numeric can be found by help(nimNumeric) . In some cases help is found directly using the name of the function as it appears in R.

11.2.2 Basic operations

Basic R operations supported for NIMBLE compilation are listed in Table 11.1 .

In addition to the above functions, we provide functions any_na() and any_nan() for finding if there are any NA or NaN values in a vector. These are equivalent to using any(is.na()) and any(is.nan()) in R, with the exception noted in the table above regarding is.na() .

Other R functions with numeric arguments and return value can be called during compiled execution by wrapping them as a nimbleRcall (see Section 11.7 ).

Next we cover some of these functions in more detail.

11.2.2.1 numeric , integer , logical , matrix and array

numeric , integer , or logical will create a 1-dimensional vector of floating-point (or ‘double’ [precision]), integer, or logical values, respectively. The length argument specifies the vector length (default 0), and the value argument specifies the initial value either as a scalar (used for all vector elements, with default 0) or a vector. If a vector and its length is not equal to length , the remaining values will be filled by R-style recycling if the recycle argument is TRUE (which is the default). The init argument specifies whether or not to initialize the elements in compiled code (default TRUE ). If first use of the variable does not rely on initial values, using init = FALSE will yield slightly more efficient performance.

matrix creates a 2-dimensional matrix object of either floating-point (if type = "double" , the default), integer (if type = "integer" ), or logical (if type = "logical" ) values. As in R, nrow and ncol arguments specify the number of rows and columns, respectively. The value and init arguments are used in the same way as for numeric , integer , and logical .

array creates a vector or higher-dimensional object, depending on the dim argument, which takes a vector of sizes for each dimension. The type , value and init argument behave the same as for matrix .

The best way to create an identity matrix is with diag(n) , which returns an \(n \times n\) identity matrix. NIMBLE also provides a deprecated nimbleFunction identityMatrix that does the same thing.

Examples of these functions, and the related function \(`setSize`\) for changing the size of a numeric object, are given in Section 11.3.2.4 .

11.2.2.2 length and dim

length behaves like R’s length function. It returns the entire length of X. That means if X is multivariate, length(X) returns the product of the sizes of the dimensions. NIMBLE’s version of dim , which has synonym nimDim , behaves like R’s dim function for matrices or arrays and like R’s length function for vectors. In other words, regardless of whether the number of dimensions is 1 or more, it returns a vector of the sizes.

11.2.2.3 Deprecated creation of non-scalar objects using declare

Previous versions of NIMBLE provided a function declare for declaring variables. The more R-like functions numeric , integer , logical , matrix and array are intended to replace declare , but declare is still supported for backward compatibility. In a future version of NIMBLE, declare may be removed.

11.2.3 Math and linear algebra

Numeric scalar and matrix mathematical operations are listed in Tables 11.2 - 11.3 .

As in R, many scalar operations in NIMBLE will work component-wise on vectors or higher dimensional objects. For example if B and C are vectors, A = B + C will add them and create vector C by component-wise addition of B and C. In the current version of NIMBLE, component-wise operations generally only work for vectors and matrices, not arrays with more than two dimensions. The only exception is assignment: A = B will work up to NIMBLE’s current limit of four dimensions.

More information on the nimbleLists returned by the eigen and svd functions in NIMBLE can be found in Section 14.2.2 .

11.2.4 Distribution functions

Distribution ‘d’, ‘r’, ‘p’, and ‘q’ functions can all be used from nimbleFunctions (and in BUGS model code), but care is needed in the syntax, as follows.

  • Names of the distributions generally (but not always) match those of R, which sometimes differ from BUGS. See the list below.
  • Supported parameterizations are also indicated in the list below.
  • For multivariate distributions (multivariate normal, Dirichlet, and Wishart), ‘r’ functions only return one random draw at a time, and the first argument must always be 1.
  • R’s recycling rule (re-use of an argument as needed to accommodate longer values of other arguments) is generally followed, but the returned object is always a scalar or a vector, not a matrix or array.

As in R (and nimbleFunctions), arguments are matched by order or by name (if given). Standard arguments to distribution functions in R ( log , log.p , lower.tail ) can be used and have the same defaults. User-defined distributions for BUGS (Chapter 12 ) can also be used from nimbleFunctions.

For standard distributions, we rely on R’s regular help pages (e.g., help(dgamma) . For distributions unique to NIMBLE (e.g., dexp_nimble , ddirch ), we provide help pages.

Supported distributions, listed by their ‘d’ function, include:

  • dbinom(x, size, prob, log)
  • dcat(x, prob, log)
  • dmulti(x, size, prob, log)
  • dnbinom(x, size, prob, log)
  • dpois(x, lambda, log)
  • dbeta(x, shape1, shape2, log)
  • dchisq(x, df, log)
  • ddexp(x, location, rate, log)
  • ddexp(x, location, scale, log)
  • dexp(x, rate, log)
  • dexp_nimble(x, rate, log)
  • dexp_nimble(x, scale, log)
  • dgamma(x, shape, rate, log)
  • dgamma(x, shape, scale, log)
  • dinvgamma(x, shape, rate, log)
  • dinvgamma(x, shape, scale, log)
  • dlnorm(x, meanlog, sdlog, log)
  • dlogis(x, location, scale, log)
  • dnorm(x, mean, sd, log)
  • dt_nonstandard(x, df, mu, sigma, log)
  • dt(x, df, log)
  • dunif(x, min, max, log)
  • dweibull(x, shape, scale, log)
  • ddirch(x, alpha, log)
  • dlkj_corr_cholesky(x, shape, size, log)
  • dmnorm_chol(x, mean, cholesky, prec_param, log)
  • dmvt_chol(x, mu, cholesky, df, prec_param, log)
  • dwish_chol(x, cholesky, df, scale_param, log)
  • dinvwish_chol(x, cholesky, df, scale_param, log)

In the last three, cholesky stands for Cholesky decomposition of the relevant matrix; prec_param is a logical indicating whether the Cholesky is of a precision matrix (TRUE) or covariance matrix (FALSE) 23 ; and scale_param is a logical indicating whether the Cholesky is of a scale matrix (TRUE) or an inverse scale matrix (FALSE).

11.2.5 Flow control: if-then-else , for , while , and stop

These basic flow-control structures use the same syntax as in R. However, for -loops are limited to sequential integer indexing. For example, for(i in 2:5) {...} works as it does in R. Decreasing index sequences are not allowed. Unlike in R, if is not itself a function that returns a value.

We plan to include more flexible for -loops in the future, but for now we’ve included just one additional useful feature: for(i in seq_along(NFL)) will work as in R, where NFL is a nimbleFunctionList . This is described in Section 15.4.8 .

stop , or equivalently nimStop , throws control to R’s error-handling system and can take a character argument that will be displayed in an error message.

11.2.6 print and cat

print , or equivalently nimPrint , prints an arbitrary set of outputs in order and adds a newline character at the end. cat or nimCat is identical, except without a newline at the end.

11.2.7 Checking for user interrupts: checkInterrupt

When you write algorithms that will run for a long time in C++, you may want to explicitly check whether a user has tried to interrupt the execution (i.e., by pressing Control-C). Simply include checkInterrupt in run code at places where a check should be done. If there has been an interrupt waiting to be handled, the process will stop and return control to R.

11.2.8 Optimization: optim and nimOptim

NIMBLE provides a nimOptim function that partially implement’s R’s optim function with some minor differences. nimOptim supports optimization methods ‘Nelder-Mead’, ‘BFGS’, ‘CG’, ‘L-BFGS-B’, but does not support methods ‘SANN’ and ‘Brent’. NIMBLE’s nimOptim allows gradients to be supplied using user-provided functions if available or finite differences otherwise. Currently nimOptim does not support extra parameters to the function being optimized (via \dots ), but a work-around is to create a new nimbleFunction that calls another one with the additional parameters. Finally, nimOptim requires a nimbleList datatype for the control parameter, whereas R’s optim uses a simple R list . To define the control parameter, create a default value with the nimOptimDefaultControl function, and set any desired fields.

See help(nimOptim) for details, including example usage.

11.2.9 Integration: integrate and nimIntegrate

NIMBLE provides a nimIntegrate function that implement’s R’s integrate function, which carries out adaptive Gauss-Kronrod quadrature to integrate a function of one variable over a finite or infinite interval.

In addition to general use in a nimbleFunction, this can, of course, be used in a user-defined function in model code, e.g., to implement models that involve an integral, such as certain point process and survival models.

One could also consider using nimIntegrate to numerically integrate over a parameter in a model, such as to remove a parameter that is not mixing well in an MCMC. Note that NIMBLE’s Laplace approximation is a version of this, being equivalent to Gauss-Hermite quadrature with a single integration point (aka node). In a future version of NIMBLE, we will be making Gauss-Hermite quadrature available more generally as an extension of NIMBLE’s Laplace approximation.

See help(nimIntegrate) for details, including basic example usage.

Here is an example of using nimIntegrate to implement a vectorized von Mises distribution.

11.2.10 ‘nim’ synonyms for some functions

NIMBLE uses some keywords, such as dim and print , in ways similar but not identical to R. In addition, there are some keywords in NIMBLE that have the same names as R functions with quite different functionality. For example, step is part of the BUGS language, but it is also an R function for stepwise model selection. And equals is part of the BUGS language but is also used in the testthat package, which we use in testing NIMBLE.

NIMBLE tries to avoid conflicts by replacing some keywords immediately upon creating a nimbleFunction. These replacements include

  • c \(\rightarrow\) nimC
  • copy \(\rightarrow\) nimCopy
  • dim \(\rightarrow\) nimDim
  • print \(\rightarrow\) nimPrint
  • cat \(\rightarrow\) nimCat
  • step \(\rightarrow\) nimStep
  • equals \(\rightarrow\) nimEquals
  • rep \(\rightarrow\) nimRep
  • round \(\rightarrow\) nimRound
  • seq \(\rightarrow\) nimSeq
  • stop \(\rightarrow\) nimStop
  • switch \(\rightarrow\) nimSwitch
  • numeric, integer, logical \(\rightarrow\) nimNumeric, nimInteger, nimLogical
  • matrix, array \(\rightarrow\) nimMatrix, nimArray
  • optim \(\rightarrow\) nimOptim
  • integrate \(\rightarrow\) nimIntegrate

This system gives programmers the choice between using the keywords like nimPrint directly, to avoid confusion in their own code about which ‘print’ is being used, or to use the more intuitive keywords like print but remember that they are not the same as R’s functions.

11.3 How NIMBLE handles types of variables

Variables in the NIMBLE language are statically typed. Once a variable is used for one type, it can’t subsequently be used for a different type. This rule facilitates NIMBLE’s compilation to C++. The NIMBLE compiler often determines types automatically, but sometimes the programmer needs to explicitly provide them.

The elemental types supported by NIMBLE include double (floating-point), integer , logical , and character . The type of a numeric or logical object refers to the number of dimensions and the elemental type of the elements. Hence if x is created as a double matrix, it can only be used subsequently for a double matrix. The size of each dimension is not part of its type and thus can be changed. Up to four dimensions are supported for double, integer, and logical. Only vectors (one dimension) are supported for character. Unlike R, NIMBLE supports true scalars, which have 0 dimensions.

11.3.1 nimbleList data structures

A nimbleList is a data structure that can contain arbitrary other NIMBLE objects, including other nimbleList s. Like other NIMBLE types, nimbleLists are strongly typed: each nimbleList is created from a configuration that declares what types of objects it will hold. nimbleList s are covered in Chapter 14.2 .

11.3.2 How numeric types work

R’s dynamic types support easy programming because one type can sometimes be transformed to another type automatically when an expression is evaluated. NIMBLE’s static types makes it stricter than R.

11.3.2.1 When NIMBLE can automatically set a numeric type

When a variable is first created by assignment, its type is determined automatically by that assignment. For example, if x has not appeared before, then

will create x to be a double matrix of the correct size (determined during execution).

11.3.2.1.1 Avoid changing types of a variable within a nimbleFunction

Because NIMBLE is statically typed, you cannot use the same variable name for two objects of different types (including objects of different dimensions).

Suppose we have (implicitly) created x as a double matrix. If x is used subsequently, it can only be used as a double matrix. This is true even if it is assigned a new value, which will again set its size automatically but cannot change its type.

11.3.2.2 When a numeric object needs to be created before being used

If the contents of a variable are to be populated by assignment into some indices in steps, the variable must be created first. Further, it must be large enough for its eventual contents; it will not be automatically resized if assignments are made beyond its current size. For example, in the following code, x must be created before being filled with contents for specific indices.

11.3.2.3 How NIMBLE handles NA

NIMBLE supports use of NA with some caveats. In the compiled version of a nimbleFunction:

  • NA values in a logical scalar or vector will not work;
  • Assigning NA to a new variable will make that variable have type double (in R, this would be a logical!);
  • Non-trivial use of NA in integer variables may fail by having the value become a large (negative) number;
  • Use of NA in doubles should generally work.

These issues arise because NIMBLE uses R’s encoding of NA values in C(++) but uses native compiled math and type-casting in C++, which do not always preserve R’s NA encodings. In summary, NA should generally work for doubles and should be used cautiously (i.e. after you test that what you need to work actually works) for integers. For some needs, NaN is a suitable alternative to NA.

11.3.2.4 Changing the sizes of existing objects: setSize

setSize changes the size of an object, preserving its contents in column-major order.

11.3.2.5 Confusions between scalars and length-one vectors

In R, there is no such thing is a true scalar; scalars can always be treated as vectors of length one. NIMBLE allows true scalars, which can create confusions. For example, consider the following code:

In the line that creates b , the index range i:i is not evaluated until run time. Even though i:i will always evaluate to simpy i , the compiler does not determine that. Since there is a vector index range provided, the result of randomValues[i:i] is determined to be a vector. The following line then creates d as a vector, because a vector plus a scalar returns a vector. Another way to create a vector from a scalar is to use c , as illustrated in the last line.

11.3.2.6 Confusions between vectors and one-column or one-row matrices

Consider the following code:

This creates a matrix A , a vector B , and matrix-multiplies them. The vector B is automatically treated as a one-column matrix in matrix algebra computations. The result of matrix multiplication is always a matrix, but a programmer may expect a vector, since they know the result will have one column. To make it a vector, simply extract the first column. More information about such handling is provided in the next section.

11.3.2.7 Understanding dimensions and sizes from linear algebra

As much as possible, NIMBLE behaves like R when determining types and sizes returned from linear algebra expressions, but in some cases this is not possible because R uses run-time information while NIMBLE must determine dimensions at compile time. For example, when matrix multiplying a matrix by a vector, R treats the vector as a one-column matrix unless treating it as a one-row matrix is the only way to make the expression valid, as determined at run time. NIMBLE usually must assume during compilation that it should be a one-column matrix, unless it can determine not just the number of dimensions but the actual sizes during compilation. When needed asRow and asCol can control how a vector will be treated as a matrix.

Here is a guide to such issues. Suppose v1 and v2 are vectors, and M1 is a matrix. Then

  • v1 + M1 promotes v1 to a 1-column matrix if M1 is a one-column matrix. Otherwise, this results in a run-time error. This behavior occurs for all component-wise binary functions.
  • v1 %*% M1 defaults to promoting v1 to a 1-row matrix, unless it is known at compile-time that M1 has 1 row, in which case v1 is promoted to a 1-column matrix.
  • M1 %*% v1 defaults to promoting v1 to a 1-column matrix, unless it is known at compile time that M1 has 1 column, in which case v1 is promoted to a 1-row matrix.
  • v1 %*% v2 promotes v1 to a 1-row matrix and v2 to a 1-column matrix, so the returned values is a 1x1 matrix with the inner product of v1 and v2 . If you want the inner product as a scalar, use inprod(v1, v2) .
  • asRow(v1) explicitly promotes v1 to a 1-row matrix. Therefore v1 %*% asRow(v2) gives the outer product of v1 and v2 .
  • asCol(v1) explicitly promotes v1 to a 1-column matrix.
  • The default promotion for a vector is to a 1-column matrix. Therefore, v1 %*% t(v2) is equivalent to v1 %*% asRow(v2) .
  • When indexing, dimensions with scalar indices will be dropped. For example, M1[1,] and M1[,1] are both vectors. If you do not want this behavior, use drop=FALSE just as in R. For example, M1[1,,drop=FALSE] is a matrix.
  • The left-hand side of an assignment can use indexing, but if so it must already be correctly sized for the result. For example, Y[5:10, 20:30] <- x will not work – and could crash your R session with a segmentation fault – if Y is not already at least 10x30 in size. This can be done by setSize(Y, c(10, 30)) . See Section 11.3.2.4 for more details. Note that non-indexed assignment to Y , such as Y <- x , will automatically set Y to the necessary size.

Here are some examples to illustrate the above points, assuming M2 is a square matrix.

  • Y <- v1 + M2 %*% v2 will return a 1-column matrix. If Y is created by this statement, it will be a 2-dimensional variable. If Y already exists, it must already be 2-dimesional, and it will be automatically re-sized for the result.
  • Y <- v1 + (M2 %*% v2)[,1] will return a vector. Y will either be created as a vector or must already exist as a vector and will be re-sized for the result.

11.3.2.8 Size warnings and the potential for crashes

For matrix algebra, NIMBLE cannot ensure perfect behavior because sizes are not known until run time. Therefore, it is possible for you to write code that will crash your R session. In Version 1.1.0, NIMBLE attempts to issue a warning if sizes are not compatible, but it does not halt execution. Therefore, if you execute A <- M1 %*% M2 , and M1 and M2 are not compatible for matrix multiplication, NIMBLE will output a warning that the number of rows of M1 does not match the number of columns of M2 . After that warning the statement will be executed and may result in a crash. Another easy way to write code that will crash is to do things like Y[5:10, 20:30] <- x without ensuring Y is at least 10x30. In the future we hope to prevent crashes, but in Version 1.1.0 we limit ourselves to trying to provide useful information.

11.4 Declaring argument and return types

NIMBLE requires that types of arguments and the type of the return value be explicitly declared.

As illustrated in the example in Section 11.1 , the syntax for a type declaration is:

type(nDim, sizes)

where type is double , integer , logical or character . (In more general nimbleFunction programming, a type can also be a nimbleList type, discussed in Section 14.2 .)

For example run = function(x = double(1)) { ... } sets the single argument of the run function to be a vector of numeric values of unknown size.

For type(nDim, sizes) , nDim is the number of dimensions, with 0 indicating scalar and omission of nDim defaulting to a scalar. sizes is an optional vector of fixed, known sizes. For example, double(2, c(4, 5)) declares a \(4 \times 5\) matrix. If sizes are omitted, they will be set either by assignment or by setSize .

In the case of scalar arguments only, a default value can be provided. For example, to provide 1.2 as a default:

Functions with return values must have their return type explicitly declared using returnType , which can occur anywhere in the run code. For example returnType(integer(2)) declares the return type to be a matrix of integers. A return type of void() means there is no return value, which is the default if no returnType statement is included.

Note that because all values in models are stored as doubles and because of some limitations in NIMBLE’s automatic casting, non-scalar return values of user-defined distributions must be doubles.

11.5 Compiled nimbleFunctions pass arguments by reference

Uncompiled nimbleFunctions pass arguments like R does, by copy. If x is passed as an argument to function foo , and foo modifies x internally, it is modifying its copy of x , not the original x that was passed to it.

Compiled nimbleFunctions pass arguments to other compiled nimbleFunctions by reference (or pointer). This is very different. Now if foo modifies x internally, it is modifying the same x that was passed to it. This allows much faster execution but is obviously a fundamentally different behavior.

Uncompiled execution of nimbleFunctions is primarily intended for debugging. However, debugging of how nimbleFunctions interact via arguments requires testing the compiled versions.

11.6 Calling external compiled code

If you have a function in your own compiled C or C++ code and an appropriate header file, you can generate a nimbleFunction that wraps access to that function, which can then be used in other nimbleFunctions. See help(nimbleExternalCall) for an example. This also contains an example of using an externally compiled function in the BUGS code of a model.

11.7 Calling uncompiled R functions from compiled nimbleFunctions

Sometimes one may want to combine R functions with compiled nimbleFunctions. Obviously a compiled nimbleFunction can be called from R. An R function with numeric inputs and output can be called from compiled nimbleFunctions. The call to the R function is wrapped in a nimbleFunction returned by nimbleRcall . See help(nimbleRcall) for an example, including an example of using the resulting function in the BUGS code of a model.

Of course, in general, explicitly calculating the inverse is not the recommended numerical recipe for least squares. ↩︎

On the machine this is being written on, the compiled version runs a few times faster than the uncompiled version. However we refrain from formal speed tests. ↩︎

For the multivariate t, these are more properly termed the ‘inverse scale’ and ‘scale’ matrices ↩︎

Defence Forum & Military Photos - DefenceTalk

  • New comments
  • Military Photos
  • Russian Military
  • Anti-Aircraft
  • SA-21/S-400 Triumf

92N6E Radar, S-400

92N6E Radar, S-400

  • Oct 18, 2010

Media information

Share this media.

  • This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register. By continuing to use this site, you are consenting to our use of cookies. Accept Learn more…

nimble traffic assignment

JavaScript must be enabled in order to use this site.

Please enable JavaScript in your browser and refresh the page.

Subnet Traffic Assignments

Traffic assignments determine what type of iSCSI traffic a subnet carries. A subnet can have one of the following traffic assignments.

nimble traffic assignment

For the first time Rosatom Fuel Division supplied fresh nuclear fuel to the world’s only floating nuclear cogeneration plant in the Arctic

The fuel was supplied to the northernmost town of Russia along the Northern Sea Route.

nimble traffic assignment

The first in the history of the power plant refueling, that is, the replacement of spent nuclear fuel with fresh one, is planned to begin before 2024. The manufacturer of nuclear fuel for all Russian nuclear icebreakers, as well as the Akademik Lomonosov FNPP, is Machinery Manufacturing Plant, Joint-Stock Company (MSZ JSC), a company of Rosatom Fuel Company TVEL that is based in Elektrostal, Moscow Region.

The FNPP includes two KLT-40S reactors of the icebreaking type. Unlike convenient ground-based large reactors (that require partial replacement of fuel rods once every 12-18 months), in the case of these reactors, the refueling takes place once every few years and includes unloading of the entire reactor core and loading of fresh fuel into the reactor.

The cores of KLT-40 reactors of the Akademik Lomonosov floating power unit have a number of advantages compared to the reference ones: a cassette core was used for the first time in the history of the unit, which made it possible to increase the fuel energy resource to 3-3.5 years between refuelings, and also reduce the fuel component of the electricity cost by one and a half times. The FNPP operating experience formed the basis for the designs of reactors for nuclear icebreakers of the newest series 22220. Three such icebreakers have been launched by now.

For the first time the power units of the Akademik Lomonosov floating nuclear power plant were connected to the grid in December 2019, and put into commercial operation in May 2020. The supply of nuclear fuel from Elektrostal to Pevek and its loading into the second reactor is planned for 2024. The total power of the Akademik Lomonosov FNPP, supplied to the coastal grid of Pevek without thermal energy consumption on shore, is about 76 MW, being about 44 MW in the maximum thermal power supply mode. The FNPP generated 194 million kWh according to the results of 2023. The population of Pevek is just a little more than 4 thousand, while the FNPP has a potential for supplying electricity to a city with a population of up to 100 thousand people. After the FNPP commissioning two goals were achieved. These include first of all the replacement of the retiring capacities of the Bilibino NPP, which has been operating since 1974, as well as the Chaunskaya TPP, which has already been operating for more than 70 years. Secondly, energy is supplied to the main mining companies in western Chukotka in the Chaun-Bilibino energy hub a large ore and metal cluster, including gold mining companies and projects related to the development of the Baimsk ore zone. In September 2023, a 110 kilovolt power transmission line with a length of 490 kilometers was put into operation, connecting the towns of Pevek and Bilibino. The line increased the reliability of energy supply from the FNPP to both Bilibino consumers and mining companies, the largest of which is the Baimsky GOK. The comprehensive development of the Russian Arctic is a national strategic priority. To increase the NSR traffic is of paramount importance for accomplishment of the tasks set in the field of cargo shipping. This logistics corridor is being developed due regular freight voyages, construction of new nuclear-powered icebreakers and modernization of the relevant infrastructure. Rosatom companies are actively involved in this work. Rosatom Fuel Company TVEL (Rosatom Fuel Division) includes companies fabricating nuclear fuel, converting and enriching uranium, manufacturing gas centrifuges, conducting researches and producing designs. As the only nuclear fuel supplier to Russian NPPs, TVEL supplies fuel for a total of 75 power reactors in 15 countries, for research reactors in nine countries, as well as for propulsion reactors of the Russian nuclear fleet. Every sixth power reactor in the world runs on TVEL fuel. Rosatom Fuel Division is the world’s largest producer of enriched uranium and the leader on the global stable isotope market. The Fuel Division is actively developing new businesses in chemistry, metallurgy, energy storage technologies, 3D printing, digital products, and decommissioning of nuclear facilities. TVEL also includes Rosatom integrators for additive technologies and electricity storage systems. Rosenergoatom, Joint-Stock Company is part of Rosatom Electric Power Division and one of the largest companies in the industry acting as an operator of nuclear power plants. It includes, as its branches, 11 operating NPPs, including the FNPP, the Scientific and Technical Center for Emergency Operations at NPPs, Design and Engineering as well as Technological companies. In total, 37 power units with a total installed capacity of over 29.5 GW are in operation at 11 nuclear power plants in Russia. Machinery Manufacturing Plant, Joint-Stock Company (MSZ JSC, Elektrostal) is one of the world’s largest manufacturers of fuel for nuclear power plants. The company produces fuel assemblies for VVER-440, VVER-1000, RBMK-1000, BN-600,800, VK-50, EGP-6; powders and fuel pellets intended for supply to foreign customers. It also produces nuclear fuel for research reactors. The plant belongs to the TVEL Fuel Company of Rosatom.

nimble traffic assignment

Rosatom obtained a license for the first land-based SMR in Russia

On April 21, Rosenergoatom obtained a license issued by Rostekhnadzor to construct the Yakutsk land-based SMR in the Ust-Yansky District of the Republic of Sakha (Yakutia).

nimble traffic assignment

ROSATOM and FEDC agree to cooperate in the construction of Russia's first onshore SNPP

ROSATOM and FEDC have signed a cooperation agreement to build Russia's first onshore SNPP in Yakutia.

nimble traffic assignment

Rosatom develops nuclear fuel for modernized floating power units

Rosatom has completed the development of nuclear fuel for the RITM-200S small modular reactor designed for the upgraded floating power units.

Facts.net

Turn Your Curiosity Into Discovery

Latest facts.

Follistatin344 Peptide Considerations

Follistatin344 Peptide Considerations

Approach for Using 5 Tips To Help You Write Your Dissertation

Approach for Using 5 Tips To Help You Write Your Dissertation

40 facts about elektrostal.

Lanette Mayes

Written by Lanette Mayes

Modified & Updated: 02 Mar 2024

Jessica Corbett

Reviewed by Jessica Corbett

40-facts-about-elektrostal

Elektrostal is a vibrant city located in the Moscow Oblast region of Russia. With a rich history, stunning architecture, and a thriving community, Elektrostal is a city that has much to offer. Whether you are a history buff, nature enthusiast, or simply curious about different cultures, Elektrostal is sure to captivate you.

This article will provide you with 40 fascinating facts about Elektrostal, giving you a better understanding of why this city is worth exploring. From its origins as an industrial hub to its modern-day charm, we will delve into the various aspects that make Elektrostal a unique and must-visit destination.

So, join us as we uncover the hidden treasures of Elektrostal and discover what makes this city a true gem in the heart of Russia.

Key Takeaways:

  • Elektrostal, known as the “Motor City of Russia,” is a vibrant and growing city with a rich industrial history, offering diverse cultural experiences and a strong commitment to environmental sustainability.
  • With its convenient location near Moscow, Elektrostal provides a picturesque landscape, vibrant nightlife, and a range of recreational activities, making it an ideal destination for residents and visitors alike.

Known as the “Motor City of Russia.”

Elektrostal, a city located in the Moscow Oblast region of Russia, earned the nickname “Motor City” due to its significant involvement in the automotive industry.

Home to the Elektrostal Metallurgical Plant.

Elektrostal is renowned for its metallurgical plant, which has been producing high-quality steel and alloys since its establishment in 1916.

Boasts a rich industrial heritage.

Elektrostal has a long history of industrial development, contributing to the growth and progress of the region.

Founded in 1916.

The city of Elektrostal was founded in 1916 as a result of the construction of the Elektrostal Metallurgical Plant.

Located approximately 50 kilometers east of Moscow.

Elektrostal is situated in close proximity to the Russian capital, making it easily accessible for both residents and visitors.

Known for its vibrant cultural scene.

Elektrostal is home to several cultural institutions, including museums, theaters, and art galleries that showcase the city’s rich artistic heritage.

A popular destination for nature lovers.

Surrounded by picturesque landscapes and forests, Elektrostal offers ample opportunities for outdoor activities such as hiking, camping, and birdwatching.

Hosts the annual Elektrostal City Day celebrations.

Every year, Elektrostal organizes festive events and activities to celebrate its founding, bringing together residents and visitors in a spirit of unity and joy.

Has a population of approximately 160,000 people.

Elektrostal is home to a diverse and vibrant community of around 160,000 residents, contributing to its dynamic atmosphere.

Boasts excellent education facilities.

The city is known for its well-established educational institutions, providing quality education to students of all ages.

A center for scientific research and innovation.

Elektrostal serves as an important hub for scientific research, particularly in the fields of metallurgy, materials science, and engineering.

Surrounded by picturesque lakes.

The city is blessed with numerous beautiful lakes, offering scenic views and recreational opportunities for locals and visitors alike.

Well-connected transportation system.

Elektrostal benefits from an efficient transportation network, including highways, railways, and public transportation options, ensuring convenient travel within and beyond the city.

Famous for its traditional Russian cuisine.

Food enthusiasts can indulge in authentic Russian dishes at numerous restaurants and cafes scattered throughout Elektrostal.

Home to notable architectural landmarks.

Elektrostal boasts impressive architecture, including the Church of the Transfiguration of the Lord and the Elektrostal Palace of Culture.

Offers a wide range of recreational facilities.

Residents and visitors can enjoy various recreational activities, such as sports complexes, swimming pools, and fitness centers, enhancing the overall quality of life.

Provides a high standard of healthcare.

Elektrostal is equipped with modern medical facilities, ensuring residents have access to quality healthcare services.

Home to the Elektrostal History Museum.

The Elektrostal History Museum showcases the city’s fascinating past through exhibitions and displays.

A hub for sports enthusiasts.

Elektrostal is passionate about sports, with numerous stadiums, arenas, and sports clubs offering opportunities for athletes and spectators.

Celebrates diverse cultural festivals.

Throughout the year, Elektrostal hosts a variety of cultural festivals, celebrating different ethnicities, traditions, and art forms.

Electric power played a significant role in its early development.

Elektrostal owes its name and initial growth to the establishment of electric power stations and the utilization of electricity in the industrial sector.

Boasts a thriving economy.

The city’s strong industrial base, coupled with its strategic location near Moscow, has contributed to Elektrostal’s prosperous economic status.

Houses the Elektrostal Drama Theater.

The Elektrostal Drama Theater is a cultural centerpiece, attracting theater enthusiasts from far and wide.

Popular destination for winter sports.

Elektrostal’s proximity to ski resorts and winter sport facilities makes it a favorite destination for skiing, snowboarding, and other winter activities.

Promotes environmental sustainability.

Elektrostal prioritizes environmental protection and sustainability, implementing initiatives to reduce pollution and preserve natural resources.

Home to renowned educational institutions.

Elektrostal is known for its prestigious schools and universities, offering a wide range of academic programs to students.

Committed to cultural preservation.

The city values its cultural heritage and takes active steps to preserve and promote traditional customs, crafts, and arts.

Hosts an annual International Film Festival.

The Elektrostal International Film Festival attracts filmmakers and cinema enthusiasts from around the world, showcasing a diverse range of films.

Encourages entrepreneurship and innovation.

Elektrostal supports aspiring entrepreneurs and fosters a culture of innovation, providing opportunities for startups and business development.

Offers a range of housing options.

Elektrostal provides diverse housing options, including apartments, houses, and residential complexes, catering to different lifestyles and budgets.

Home to notable sports teams.

Elektrostal is proud of its sports legacy, with several successful sports teams competing at regional and national levels.

Boasts a vibrant nightlife scene.

Residents and visitors can enjoy a lively nightlife in Elektrostal, with numerous bars, clubs, and entertainment venues.

Promotes cultural exchange and international relations.

Elektrostal actively engages in international partnerships, cultural exchanges, and diplomatic collaborations to foster global connections.

Surrounded by beautiful nature reserves.

Nearby nature reserves, such as the Barybino Forest and Luchinskoye Lake, offer opportunities for nature enthusiasts to explore and appreciate the region’s biodiversity.

Commemorates historical events.

The city pays tribute to significant historical events through memorials, monuments, and exhibitions, ensuring the preservation of collective memory.

Promotes sports and youth development.

Elektrostal invests in sports infrastructure and programs to encourage youth participation, health, and physical fitness.

Hosts annual cultural and artistic festivals.

Throughout the year, Elektrostal celebrates its cultural diversity through festivals dedicated to music, dance, art, and theater.

Provides a picturesque landscape for photography enthusiasts.

The city’s scenic beauty, architectural landmarks, and natural surroundings make it a paradise for photographers.

Connects to Moscow via a direct train line.

The convenient train connection between Elektrostal and Moscow makes commuting between the two cities effortless.

A city with a bright future.

Elektrostal continues to grow and develop, aiming to become a model city in terms of infrastructure, sustainability, and quality of life for its residents.

In conclusion, Elektrostal is a fascinating city with a rich history and a vibrant present. From its origins as a center of steel production to its modern-day status as a hub for education and industry, Elektrostal has plenty to offer both residents and visitors. With its beautiful parks, cultural attractions, and proximity to Moscow, there is no shortage of things to see and do in this dynamic city. Whether you’re interested in exploring its historical landmarks, enjoying outdoor activities, or immersing yourself in the local culture, Elektrostal has something for everyone. So, next time you find yourself in the Moscow region, don’t miss the opportunity to discover the hidden gems of Elektrostal.

Q: What is the population of Elektrostal?

A: As of the latest data, the population of Elektrostal is approximately XXXX.

Q: How far is Elektrostal from Moscow?

A: Elektrostal is located approximately XX kilometers away from Moscow.

Q: Are there any famous landmarks in Elektrostal?

A: Yes, Elektrostal is home to several notable landmarks, including XXXX and XXXX.

Q: What industries are prominent in Elektrostal?

A: Elektrostal is known for its steel production industry and is also a center for engineering and manufacturing.

Q: Are there any universities or educational institutions in Elektrostal?

A: Yes, Elektrostal is home to XXXX University and several other educational institutions.

Q: What are some popular outdoor activities in Elektrostal?

A: Elektrostal offers several outdoor activities, such as hiking, cycling, and picnicking in its beautiful parks.

Q: Is Elektrostal well-connected in terms of transportation?

A: Yes, Elektrostal has good transportation links, including trains and buses, making it easily accessible from nearby cities.

Q: Are there any annual events or festivals in Elektrostal?

A: Yes, Elektrostal hosts various events and festivals throughout the year, including XXXX and XXXX.

Was this page helpful?

Our commitment to delivering trustworthy and engaging content is at the heart of what we do. Each fact on our site is contributed by real users like you, bringing a wealth of diverse insights and information. To ensure the highest standards of accuracy and reliability, our dedicated editors meticulously review each submission. This process guarantees that the facts we share are not only fascinating but also credible. Trust in our commitment to quality and authenticity as you explore and learn with us.

Share this Fact:

IMAGES

  1. Chapter 9: Traffic Assignment Model: Methods with examples

    nimble traffic assignment

  2. Mod 6, Part 1: Traffic Assignment (Introduction)

    nimble traffic assignment

  3. PPT

    nimble traffic assignment

  4. Dynamic traffic assignment

    nimble traffic assignment

  5. Read The Traffic Assignment Problem Online by Michael Patriksson

    nimble traffic assignment

  6. PPT

    nimble traffic assignment

VIDEO

  1. Traffic Assignment Part1 Dr. Ibrahim Ramadan

  2. HAI -TSO

  3. Traffic Assignment 1

  4. WIX1003: Traffic Light Assignment [Occ1 Group 24]

  5. Visum 2024 macierz, popyt, rozkład ruchu / Visum 2024 demand, traffic assignment

  6. Traffic assignment part 2

COMMENTS

  1. Subnet Traffic Assignments

    A subnet can have one of the following traffic assignments. Note: Traffic assignments are not required for Fibre Channel arrays. The subnet carries both iSCSI data traffic and intra-group communication (traffic between arrays in a group). The subnet carries only iSCSI data traffic. The subnet carries intra-group communication traffic.

  2. Traffic Networks: Dynamic Traffic Routing, Assignment, and ...

    Alternatively, the system‐optimum traffic assignment is achieved at a volume distribution of 500 veh on routes 1 and 2, respectively. From a traffic engineering point of view, the difference in total travel time between the system and user‐optimum traffic assignment (16,250 versus 16,667 veh‐min) is of interest.

  3. PDF BEST PRACTICES GUIDE: Nimble Storage Best Practices for Networking

    Disabling Unicast Storm Control ensures that the storage traffic is transmitted unfettered. Nimble Storage, Inc. 2740 Zanker Road, San Jose, CA 95134. Tel: 408-432-9600; 877-364-6253) | www.nimblestorage.com | [email protected]. 2012 Nimble Storage, Inc.

  4. Network assignment

    Origin-destination travel demand are assigned to a transportation network in order to estimate traffic flows and network travel conditions such as travel time. These estimated outputs from network assignment are compared against observed data such as traffic counts for model validation. Network assignment is a mathematical problem which is ...

  5. Traffic Assignments to Transportation Networks

    Section 3.1 introduces the assignment problem in transportation as the distribution of traffic in a network considering the demand between locations and the transport supply of the network. Four trip assignment models relevant to transportation are presented and characterized. Section 3.2 covers traffic assignment to uncongested networks based ...

  6. Traffic Assignment: A Survey of Mathematical Models and Techniques

    The traditional transportation planning process [1, 2] has the following four stages, having traffic assignment as one of the four stages:1. Trip Generation: Trip generation involves estimating the number of trips generated at each origin node and/or the number of trips attracted to each destination node.This estimation is performed based on surveys conducted and generally uses a model that ...

  7. The Basics of Traffic Data

    👩‍🏫 Take Action Assignment 2: Set up GA account and install on your website(s) Configure your account (33:21) ... Build a Traffic Dashboard with Conversions (Both Looker Studio and GA) (54:56) Add content pages/reports to your traffic dashboard (8:51)

  8. Task Plans Overview

    View the selected task's resource assignment in the Task Assignment Panel. By default, the names of assigned resources appear with the task's Gantt bars. The task name with the planned start, planned finish dates, the percent of units, planned effort, percent of work completed, and overall status for the selected task are displayed in the ...

  9. Traffic Assignment Problem

    Traffic assignment problems usually consider two dimensions. Generation and attraction. A place of origin generates movements that are bound (attracted) to a place of destination. The relationship between traffic generation and attraction is commonly labeled as spatial interaction. The above example considers one origin/generation and ...

  10. Chapter 15 Writing nimbleFunctions to interact with models

    15.1 Overview. When you write an R function, you say what the input arguments are, you provide the code for execution, and in that code you give the value to be returned 29. Using the function keyword in R triggers the operation of creating an object that is the function. Creating nimbleFunctions is similar, but there are two kinds of code and ...

  11. Chapter 11 Writing simple nimbleFunctions

    The only exception is assignment: A = B will work up to NIMBLE's current limit of four dimensions. Table 11.2: Functions operating on scalars, many of which can operate on each element (component-wise) of vectors and matrices. Status column indicates if the function is currently provided in NIMBLE. Vector input column indicates if the ...

  12. Concepts and terminology for Amazon Nimble Studio

    Amazon Nimble Studio is an AWS service that enables creative studios to produce visual effects, animation, and interactive content entirely in the cloud, from storyboard sketch to final deliverable. Amazon Nimble Studio console. The Nimble Studio console is a portion of the AWS Management Console that is devoted to our admin IT customers.

  13. How to Convert Your Blog Traffic from Readers into Leads

    Starting a blog for your business, products, and services is a great way to bring in a lot of traffic to your site. Having good high-quality content gets your visitors interested, but now you need to turn them from readers to leads. Converting your traffic can be accomplished in various ways. For best results, it's often best to use a subtle blend of multiple approaches instead of just one ...

  14. Increase Your Web Traffic Without Increasing Your Budget

    Over 70% of traffic now comes from Google search. You attract organic search traffic simply by creating content. Every piece of content you publish gives you an opportunity to spread it through social media (such as Twitter or LinkedIn) and helps to drive more traffic back to your site, making your content more visible. Owned traffic

  15. PDF Amazon Nimble Studio

    Welcome to the Amazon Nimble Studio API reference. This API reference provides methods, schema, resources, parameters, and more to help you get the most out of Nimble Studio. Nimble Studio is a virtual studio that empowers visual effects, animation, and interactive content teams to create content securely within a scalable, private cloud service.

  16. PDF HPE Nimble Storage Deployment Considerations for Networking

    HPE Nimble Storage arrays are designed with redundant controllers that provide continuous access to your storage if the active controller ... • The ability to segment broadcast domains to limit traffic scope without needing to purchase additional hardware. • The ability to modify the VLAN, which enables you to adapt to changing needs over ...

  17. AS45027 LLC "Internet Tehnologii" ASN Network Lookup

    AS45027 is an autonomous system number (ASN) managed by LLC "Internet Tehnologii".The registry was last assigned on 23 Apr 2008 with 6.3382530011411E+29 IP addresses active in the network. AS45027 network's IP addresses are assigned by Réseaux IP Européens (RIPE), the regional internet registry (RIR) for European IP addresses. ...

  18. 92N6E Radar, S-400

    First S-400 bltn, Elektrostal, Moscow. This site uses cookies to help personalise content, tailor your experience and to keep you logged in if you register.

  19. Subnet Traffic Assignments

    A subnet can have one of the following traffic assignments. Note: Traffic assignments are not required for Fibre Channel arrays. The subnet carries both iSCSI data traffic and intra-group communication (traffic between arrays in a group). The subnet carries only iSCSI data traffic. The subnet carries intra-group communication traffic.

  20. For the first time Rosatom Fuel Division supplied fresh nuclear fuel to

    To increase the NSR traffic is of paramount importance for accomplishment of the tasks set in the field of cargo shipping. This logistics corridor is being developed due regular freight voyages, construction of new nuclear-powered icebreakers and modernization of the relevant infrastructure. Rosatom companies are actively involved in this work.

  21. 40 Facts About Elektrostal

    40 Facts About Elektrostal. Elektrostal is a vibrant city located in the Moscow Oblast region of Russia. With a rich history, stunning architecture, and a thriving community, Elektrostal is a city that has much to offer. Whether you are a history buff, nature enthusiast, or simply curious about different cultures, Elektrostal is sure to ...