A nuclear reactor core is composed of a few hundred "assemblies", arranged in a regular array of cells, each cell being formed by a fuel or control rod surrounded, in most designs, by a moderator and coolant, which is water in most reactors.
Because of the fission process that consumes the fuels, the old fuel rods must be changed periodically to fresh ones (this period is called a cycle). However, only a part of the assemblies (typically one-third) are removed since the fuel depletion is not spatially uniform. Furthermore, it is not a good policy, for efficiency reasons, to put the new assemblies exactly at the location of the removed ones. Even bundles of the same age may have different burn-up levels, which depends on their previous positions in the core. Thus the available bundles must be arranged in such a way that the yield is maximized, while safety limitations and operational constraints are satisfied. Consequently reactor operators are faced with the so-called optimal fuel reloading problem, which consists in optimizing the rearrangement of all the assemblies, the old and fresh ones, while still maximizing the reactivity of the reactor core so as to maximise fuel burn-up and minimise fuel-cycle costs.
This is a discrete optimization problem, and computationally infeasible by current combinatorial methods, due to the huge number of permutations and the complexity of each computation. Many numerical methods have been proposed for solving it and many commercial software packages have been written to support fuel management. This is an on-going issue in reactor operations as no definitive solution to this problem has been found and operators use a combination of computational and empirical techniques to manage this problem.