The task of automatically composing Web services involves two main composition processes, vertical and horizontal composition. Vertical composition consists of defining an appropriate combination of simple processes to perform a composition task. Horizontal composition process consists of determining the most appropriate Web service, from among a set of functionally equivalent ones for each component process. Several recent research efforts have dealt with the Web service composition problem. Nevertheless, most of them tackled only the vertical composition of Web services despite the growing trend towards functionally equivalent Web services. In an attempt to facilitate and streamline the process of horizontal composition of Web services while taking the above limitation into consideration, this work includes two main contributions. The first is a generic formalization of any Web service composition problem based on a con7straint optimization problem (COP); this formalization is compatible to any Web service description language. The second contribution is an incremental userintervention-based protocol to find the optimal composite Web service according to some predefined criteria at run-time. Our goal is i) to deal with many crucial natural features of Web services such as dynamic and distributed environment, uncertain and incomplete Web service information, etc; and ii) to allow human user intervention to enhance the solving process. Three approaches are described in this work, a centralized approach, a distributed approach and a multi-agent approach to deal with realistic domains.