A network capacity management system comprising: a first data repository encoding topology definition data, the topology definition data comprising data on topology elements of a network and including data on capacity of a respective topology element, the topology elements being defined hierarchically and including dependency data describing inter-relationships between the topology elements, the hierarchical dependencies defining respective parent and child relationships of the topology elements, the data on capacity encoding capacity at different levels of granularity in the hierarchy of the topology elements; a second data repository encoding service consumption data, the service consumption data comprising data on service elements associated with the network and including data on capacity requirements associated with a respective service element; a network definition component operable generate a network definition from the topology definition data and the service consumption data, the network definition encoding capacity criteria determined from said data on capacity of the respective topology elements and from data on capacity requirements of the respective service elements; an optimisation component operable to process said network definition in dependence on one or more predetermined optimisation criteria to optimise said network definition based on said optimisation criteria and on said capacity criteria, wherein the optimisation component includes an evolution engine operable to apply a selected one of a neural network, genetic programming or a genetic algorithm to optimise the network definition, the optimisation component being operable to calculate a fitness value for the network definition for each evolution of the evolution engine, the evolution engine being operable to perform subsequent optimisation of the network definition in dependence on said fitness value, wherein the fitness value is calculated in dependence on said optimisation criteria and on said capacity criteria. a first data repository encoding topology definition data, the topology definition data comprising data on topology elements of a network and including data on capacity of a respective topology element, the topology elements being defined hierarchically and including dependency data describing inter-relationships between the topology elements, the hierarchical dependencies defining respective parent and child relationships of the topology elements, the data on capacity encoding capacity at different levels of granularity in the hierarchy of the topology elements; a second data repository encoding service consumption data, the service consumption data comprising data on service elements associated with the network and including data on capacity requirements associated with a respective service element; a network definition component operable generate a network definition from the topology definition data and the service consumption data, the network definition encoding capacity criteria determined from said data on capacity of the respective topology elements and from data on capacity requirements of the respective service elements; an optimisation component operable to process said network definition in dependence on one or more predetermined optimisation criteria to optimise said network definition based on said optimisation criteria and on said capacity criteria, wherein the optimisation component includes an evolution engine operable to apply a selected one of a neural network, genetic programming or a genetic algorithm to optimise the network definition, the optimisation component being operable to calculate a fitness value for the network definition for each evolution of the evolution engine, the evolution engine being operable to perform subsequent optimisation of the network definition in dependence on said fitness value, wherein the fitness value is calculated in dependence on said optimisation criteria and on said capacity criteria.