- What I hope to accomplish with the sailboat design project (SBD).
- What I have gotten out of the SBD.
- The domain of the SBD project.
- Current State of the Implementation.
- Conflicts Planned For Implementation.
- Impressions on using the sifa system.
- Miscellaneous Questions.
- Source Code.
Note: This work was done in 1994 as a summer project. It is not intended to be a full-fledged sailboat design system, but rather an investigation into a way of experimenting with and building engineering design systems.
![]()
What I hoped to accomplish
My intentions were to make a contribution to the development of the SINE system being developed by Bert Dunskus by producing a Sail Boat Design system that was implemented using the SINE source code.
![]()
What I got out of the Sail Boat design project?
The sail boat design project (SBD) was a chance for me to be to introduced to one field of AI in Design research. It has been invaluable to me to be involved in this project and to learn something of the problems which are being worked on, the nature of the systems which are being produced and the tools used to produce these systems.In this project, I have been reviewing, looking over the shoulder, and using code from some of the research work of Bert Dunskus. Bert has been putting together a system of Single Function Agents (SiFA's) with the unique characteristic that these agents have negotiation knowledge and facilities built in. These facilities, organized in his SINE architecture, are intended to give the agents more robust and less fragile design capabilities.
![]()
The domain of the sifa design project
The design task which I chose for the SINE system was the design of a "sailboat". The sail boat I was aiming to design, would a boat in which a single value from a range of values would be chosen for a number of parameters. These parameters have included:Each one of these parameters have the following categories of values:
- Hull Design Type
- Sail Design Type
- Sail Material
- Hull Material
- Number of Sails
- Hull Design Type
- SURFBOARD
- SLOOP
- FRIGATE
- Sail Design Type
- JIB
- MAINSAIL
- SPINNAKER
- Sail Material
- CANVAS
- MYLAR
- KEVLAR
- Boat Material
- BALSA
- FIBERGLASS
- STEEL
Each of the parameter values have a slew of associated properties/facets, i.e.:
- Number of Sails
- SINGLE MASTED
- DOUBLE MASTED
- TRIPLE MASTED
With the values of the facets being for the most part simply a relative value on a range from 1 to 100. The values of these facets are to be used to perform algorithmic estimations, evaluations and selections.
- Hull Design Type-Sloop
- cost 70
- draft 30
- floatation 20
- durability 60
These parameters and their values have been chosen for their simplicity. I hoped that by choosing an easy design problem, I would be able to avoid difficulties that I might have with the design domain and focus more on the domain of the problem solving/ negotiating capabilities of the SINE agents( at least as a start).
I have tried to get the system designing while adding the minimum additional rules over the domain independent rules which are part of the SINE architecture. Rules that I have implemented up to this moment have been algorithmic rules. i.e. estimating t he speed of the boat given the parameter values for the number of sails, the sail type, and the hull design type.
Obviously I chose not to design an optimum sailboat but to design a sailboat that one would design, if given the above parameters, their values, their facets and some common sense. I believe that this is the more appropriate domain for the SINE system, for the capabilities of SINE architecture should be significant in its ability to handling more common sense designs tasks. Eventually, it would will be interesting to see how the sailboat design project continues to perform as more parameter values and more parameters are added to the design domain.
![]()
Current State of the Implementation
Currently I have a large number of agent objects. When one considers producing an agent for each of the cross product of the three aspects of an agent (point-of-view, function, target) in the sail boat domain, there are a large number of agents to be produced.
Targets
- Sail Boat
- Hull Design Type
- Sail Design Type
- Hull Material
- Sail Material
- Num Sails
Functions
- Selector
- Estimator
- Suggestor
- Critic
- Evaluator
Points of View
Of the 100 possible agents, I have created instances of 60 agents.
- Cost
- Speed
- Durability
- Cargo
Of those rules that a will need (mostly the algorithmic estimations and evaluations), I have a fraction of the rules needed for the full implementation of the sail boat design. I have used the domain independent rules to negotiate conflicts between agents. Presently my attention is focused on understanding the semantics of the domain independent conflict negotiation message being passed between agents.
![]()
Conflicts that I have planned for implementation
Some of the interesting conflicts between agents include:Any of the conflicts where the cost versus performance is an issue:
- Sail Material Cost Selector - Sail Material Durability Selector
- NumSails Cost Selector - NumSails Speed Selector
- Hull Design Cost Selector - Hull Design Cargo Selector
Any of the conflicts where sub optimal values are chosen for two or more design parameters which together offer an improvement over the optimal decision chosen for either one of the individual design parameters.
Any conflict where one value can be traded for another:
- Num Sails Speed Selector - Sail Design Type Durability Selector - Boat Speed/Durability Evaluator
- Num Sails Speed Selector - Hull Design Speed Selector - Boat Cost Critic: In this case the more optimum solution might be where the Num Sails Speed Selector and the Hull Design Speed Selector select sub optimal values from their individual point of view.
- Hull Design Cargo Selector - Num Sails Speed Selector: A conflict where the preference is for a fast boat which holds a lot of cargo. In this case it may be necessary to go down from the FRIGATE hull design to the SLOOP hull design, giving up cargo capacity in exchange for speed.