11.07.2015 Views

View - Universidad de Almería

View - Universidad de Almería

View - Universidad de Almería

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

142 Dario Izzo and Mihály Csaba Markótclientserverscreensaverprogress monitoring UIclient computationsserver computationsmessage managementmessage managementTCP/IP and physical networkFigure 1.Architecture of the distributed environment.progress-monitoring user interface (displaying the actual state of the computation process),on the server.The top-level layers communicate with the real computation layers that are performing thenumerical tasks. The computation layers are responsible for disassembling, distributing andassembling the whole computation task (server), and evaluating the subproblems (clients).The lowermost, so-called message management layers maintain connection with the computationlayers, and send and receive the problem and solution ‘packages’ between the clientand the server. This service was implemented by network sockets using the Windows Socketsversion 2 Application Programming Interface [12].The environment was programmed in Visual C++, strongly utilising the advantages of theobject-oriented language. The introduction of the <strong>de</strong>tailed architecture is a subject of separate,forthcoming publications (due to its extent); here we restrict ourselves to giving a shortoverview on the key concepts and building blocks.The environment provi<strong>de</strong>s several data storage classes to program the various solvers in aneasy way. The basic data type is called SOL PAIR; it is the representation of an (x, f(x)) ⊂R n × R m pair. Both components are implemented as a variable size vector, which allows us to<strong>de</strong>al with single and multi-objective optimisation problems, constraint satisfaction problems(with no objective function), and virtually every kind of distributable (even not necessarilyoptimisation!) problems. For population-based solvers, it was particularly useful to have aPOPULATION storage class, which is simply a set (list) of SOL PAIRs. The basic storage typesused during the client-server communication are called ‘packages’: the most important one isa base class called PS PACKAGE, which is used to <strong>de</strong>rive the specific problem and solutionpackages for the particular solvers. A package typically involves a data storage object (suchas a POPULATION) together with instruction (server) and solution (client) information. Allthe above classes have member functions which transform the data to and from a stream ofcharacters. The latter data type is used by the message management routines to transfer thedata on the network.The server computation layer is based on a C++ abstract class called SERVER. The particularservers (implementing various strategies to solve the whole problem) are <strong>de</strong>rived from thisclass. On the other hand, each client computation layer contains the set of available solvers.The solvers are <strong>de</strong>rived from an abstract SOLVER class. This means that the environment canbe arbitrarily exten<strong>de</strong>d by adding server and solver classes. Moreover, since each problempackage (sent out to a client) is always solved by one specified solver, various server strategiescan be tested without changing the client application. It is very important that the solutionpackages should always be kept in a consistent state by the solver: if the computation is

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!