| OCR Text |
Show 19 whenever a new constraint is added to the network since no plan ever encountered this new constraint before. Secondly. there are cases where retraction will fail to produce a plan to satisfy a netwoft( where the network would otherwise be satisfiable by propagation. Thirdly, since the system uses previous plans to guide subsequent plans. the system may not find simple or good solutions. h simply does not look far enough beyond its previous plan. In conclusion, retraction is slfTl)le with low overhead. But it makes assumptions which are untrue for modeling systems. and it may fail to find good solutions or even any solution in some cases. 2.4 Thlnglab. Thlnglab. developed by Alan Boming, is described as a simulation lab for physical and graphical experiments. The user is supplied with not only a set of primitive constraints, but also a set of constraint building tools. The user is aided in constructing a mathematical and/or geometric model of something by drawing it and applying constraints to its parts. The features of Thinglab notable for this thesis are Its graphical Interface. its ability to easily create new constraint types, and its method of compiling a constraint network satisfaction plan. Thinglab is an extension of Smalltalk and Thinglab's interface is embedded within the Smalltalk menu driven interface. Thinglab menus may be extended by creating new objects and adding them to a menu. One of the menus is a list of existing object types like points, lines. and another has predefined constraint types like addition and rrultiplication. A new object is created by making riew instances of existing object types and composing the instances into a single object. Merging two objects is similar to making them equal. Merging object A with object B is equivalent to applying B's constraints to A and then executing B == A; object B is thrown away and replaced with object A. A change to one of the objects is instantly apparent to the other object. Any constraints which applied to the objects before the merge still apply after the merge. We might make a quadrilateral out of four lines by make four new Jnstances of a line object and merging the endpoints of adjacent sides. The endpoints of the lines are now the vertices of the quadrilateral. We can see that a merge is really an equality constraint because if we move one endpoint of a line, the endpoint of the adjacent side also moves. |