Integrating Multiple Knowledge Sources in a Distributed Environment: Experiences in Diagnostic Reasoning S. A. Cerri, A. Gisolfi, and V. Loia Dipartimento di Scienze dell’Informazione Dipartimento di Informatica ed Applicazioni Università di Milano Università di Salerno via Comelico 39, 20135 Milano, Italy 84080 Baronissi (SA) Italy cerri@dsi.unimi.it [gisolfi,loia]@dia.unisa.it Abstract Research in multimodel-based diagnosis stresses the role of a centralized diagnostic agent in a computational framework made of different models. Each of these models provides knowledge according with a given representation of the system to diagnose: structural, behavioral, functional and teleological aspects are each embodied into a different model. According to this approach, various proposals have been formulated in terms of cooperation among different views without addressing in a complete way the issue of concurrency and collaboration, in particular the effect of asynchronous message passing in software design. We present here the use of a distributed and concurrent architecture in which different models collaborate in order to achieve a global diagnosis through a set of independent agents. In two difficult, apparently different application domains (cognitive diagnosis and troubleshooting of a physical device) the same architecture leads to similar components, so that it is possible to identify an emerging, rather simple solution for distributed diagnostic reasoning that seems generic enough to be applicable for a wide class of diagnostic problems. Key-Words: Actor-based Models, Diagnostic Reasoning, Cooperative Problem Solving 1. Introduction Programming techniques have evolved from the machine-level style dominating in the 50ties up to the agent-level one in the 90ties. This progress has been characterized by important milestones: e.g. structured programming (1970) and object-oriented programming (1980). The current agent-based approach to software design and implementation derives from the development of methods oriented to distribute groups of objects each actively committed to perform independent computations and to exchange asynchronous messages by means of suitable communication protocols. This evolution has lead to a radical change of the traditional approach of designers involved in software construction: from action-based, algorithmic systems to interaction-based systems. The rationale behind it is not just efficiency but instead the need to capitalize from the opportunities - throughout the entire life cycle of complex systems - offered by the alternative, inherently interactive, behavioural models of the systems, especially when the interactions occur in a distributed, concurrent environment. Actor-based systems are computational environments in which asynchronous and concurrent events allow the interaction among active objects. An actor is defined in terms of an address, a mail-box containing the accepted requests in their arrival order, and a behaviour that can, at