This paper describes an approach in improving the usability of computer-aided design (CAD) applications by adding an intelligent agent that assists the user in his/her interaction with the system. To implement the agent, we use ConGolog [GLL97, LLR99] – a very high-level programming language for developing knowledge-based agents that are embedded in complex environments. ConGolog supports the specification of a task-level model of a dynamic environment, the description of complex behaviors, and the synthesis of new plans at run-time. A prototype intelligent agent is being developed to work with an existing 3D CAD system [GS99]. This agent is intended to help the user in designing an office layout that satisfies his goals.
The CAD system [GS99] that our intelligent agent works with is built to allow the user to design a 3D virtual environment (office, kitchen, living room, etc.). The system's graphical user interface is quite simple. Interactions consist primarily of using the mouse to pick and place various types of objects (desk, chair, lamp, inkwell, etc.) in the room layout. In this it resembles the Object Associations system [BS95]. The system handles the details of interactions based on a model of objects and the physical constraints that hold in the scene, for instance, an object being supported by a particular surface. But the system lacks a model of the user, of the task that he is trying to perform, and of the objectives that he is trying to achieve. It cannot really assist the user in quickly creating the desired room layout.
An early example for a system that attempts to aid the user in creating a room layout is CRACK [FM88]. This 2D system critiques the current design with text messages that explain the problem. The domain knowledge embedded in the critiquing system is not used to actively aid the user for placing objects.
We believe that the use of intelligent agent technology can provide many benefits in the area of layout systems. An agent would maintain a high-level representation of the application domain, including object
behavior and user knowledge and goals. This could be used to enforce complex application specific constraints on the way objects are manipulated and on the layouts that are produced. Secondly, such a model could be used for disambiguation and consistency checking. Humans often communicate information about a task very inaccurately, because they understand the context of the task and its goals from previous experience. An agent could use its domain knowledge to resolve ambiguities, as well as ask more meaningful questions when user input is required. Moreover, the user goal model could be exploited to detect inadvertent errors. Thirdly, the agent could also aid the user in constructing the virtual design using its knowledge of the domain and user goals. Because it is aware of the current state of the design, it can provide suggestions and advice to the user, guide him through the task, and respond to user questions. All this would lead to much more natural and intuitive interaction between the user and the CAD system.