The allocation of water resources between different users is a traditional problem in many river basins. The objective is to obtain the optimal resource distribution and the associated circulating flows through the system. Network flow programming is a common technique for solving this problem. This optimisation procedure has been used many times for developing applications for concrete water systems, as well as for developing complete decision support systems. As long as many aspects of a river basin are not purely linear, the study of non-linearities will also be of great importance in water resources systems optimisation. This paper presents a generalised model for solving the optimal allocation of water resources in schemes where the objectives are minimising the demand deficits, complying with the required flows in the river and storing water in reservoirs. Evaporation from reservoirs and returns from demands are considered, and an iterative methodology is followed to solve these two non-network constraints. The model was applied to the Duero River basin (Spain). Three different network flow algorithms (Out-of-Kilter, RELAX-IV and NETFLO) were used to solve the allocation problem. Certain convergence issues were detected during the iterative process. There is a need to relate the data from the studied systems with the convergence criterion to be able to find the convergence criterion which yields the best results possible without requiring a long calculation time.