Cyclus is a nuclear fuel cycle simulator, and the primary consumer of fuel in such cycles are nuclear reactors. Used fuel eventually leaves reactors and can be stored or processed.

The mechanism by which these decisions are made in Cyclus is called a Resource
Exchange. Actors in the exchange can
*request* resources (e.g. fuel) and others *bid* on those requests to provide
the given resource. Actors are also allowed to place an arbitrary number of
custom constraints on collections of their requests and bids. For example, a
reactor could request two types of fuel, and constrain their requests such that
they receive only a certain quantity of fuel (i.e., any combination of fuel
types is acceptable).

Reactors are the drivers of any fuel cycle. The types and number of each type of
reactor determine the possible resource flows. A critical property of the
formulation used in the Cyclus resource exchange model is that it can be
separated into two exchanges: one in which reactors request fuel and another in
which reactors supply used fuel. This holds true in all cases *except* when

- repositories and reactors actively compete for the same processed fuel source (e.g., if MOX is produced by a fuel production plant, and repositories and reactors both actively request that fuel)
- if a reactor has the same input and output fuel commodity and bids on its own requests (i.e., it is self recycling)

In reality, neither situation occurs exactly as stated. In fuel cycle modeling practice, both cases can be achieved by modeling them slightly differently. The second example can be modeled as facility compound with a reactor, reprocessing facility, and fuel fabrication facility each with a high affinity for trade with the other. The first example can be avoided by the bidding facility delineating between mox fuel for reactors and byproducts for storage.

Each parameter has a theoretical basis in the real-life problem that is being modeled and an effect on the underlying formulation. This section describes the underlying formulation for each problem type and describes which parameters relate to that effect.

Any given formulation is comprised of, nominally, five prime characteristics:

- the number of request nodes (unodes)
- the number of supply nodes (vnodes)
- the number of arcs
- the number of exclusive arcs
- the number of constraints

- number of requesters
- assemblies per request
- multicommodity zone fraction
- commodities in multicommodity zone

- number of suppliers
- fraction of multi-commodities suppliers
- number of commodities per supplier

- number of request nodes
- number of supply nodes
- connection probability

- exclusion probability

- number of supply constraints
- number of suppliers
- number of demand constraints
- number of requesters

- number of requesters
- fraction of multicommodity requesters
- number of commodities per requester

- number of suppliers
- assemblies per supplier

- number of request nodes
- number of supply nodes
- connection probability

- exclusion probability

- number of assemblies
- number of requesters
- number of request constraints

Both formulation’s performance will be functions of:

- number of commodities
- number of arcs
- number of exclusive arcs
- number of constraints
- unit capacity/demand coefficients
- supply constraint values
- demand constraint values
- preference coefficient values

In order to generate random cases of resource exchanges, a parameter space must be defined. Given a full set of selected parameters, classes of resource exchanges that fit those parameters can be generated. The parameter space depends on the exchange being generated: