;;; -*- Mode:Lisp; Package:ONTOLINGUA-USER; Syntax:Common-Lisp; Base:10 -*-
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; VT-DESIGN: a restricted class of configuration design
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Last modification: 19 August 1993
(in-package "ONTOLINGUA-USER")
(define-theory VT-DESIGN (configuration-design
scalar-quantities
standard-units)
"This ontology specializes the configuration design task for the VT problem.
It defines the type of components that are to be designed and the restricted
set of operators that may appear in constraints. It specializes the more
general configuration design theory by adding commitments to a notion of
optimality based on a cost function.")
(in-theory 'VT-DESIGN)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Limitations on the constraint language
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-class VT-CONSTRAINT (?c)
"All VT constraints have a restricted form, specified by
vt-constraint-sentence."
:def (and (constraint ?c)
(value-type ?c constraint.expression vt-constraint-sentence)))
(define-class VT-CONSTRAINT-SENTENCE (?sentence)
"A VT constraint-sentence is a constraint-sentence with the logical
operators, relational constants, and attribute operators restricted as
listed below."
:def (and (constraint-expression ?sentence)
(restricted-constraint-sentence
?sentence
(one-of 'and 'or 'not '=> '<= '<=>)
(one-of '= '/= '< '> '=< '>= 'member)
(one-of '+ '- '* '/ 'setof))))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; OPTIMALITY & COMPONENT COST
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(define-class VT-COMPONENT (?component)
"A VT component is just a component as defined
by the configuration-design ontology, except that we define a slot
for the cost."
:def (and (component ?component)
(value-type ?component HAS-CONSTRAINT vt-constraint)
(has-attribute ?component COMPONENT.COST)
(cost-quantity (COMPONENT.COST ?component)))
:issues (("Why not include the sum of subparts in the cost metric?"
"That assumes linear combination function for cost, which
is a domain specific assumption.")))
(define-function COMPONENT.COST (?component) :-> ?cost
"The monetary cost of a component in a design."
:def (and (component ?component)
(cost-quantity ?cost)))
(define-class COST-QUANTITY (?q)
"A scalar quantity of the physical dimension 'currency'. By use of
the standard-dimensions-and-units theory, costs can be stated in a
variety of known currencies, and translation can be accomodated."
:def (and (scalar-quantity ?q)
(= (quantity.dimension ?q) currency-dimension)))
(define-relation OPTIMAL-COMPONENT (?comp ?component-class)
"An optimal-component is the least costly instance
of a component class. To evaluate this relation will
require making some kind of closed-world assumption over
possible components."
:iff-def (and (component ?comp)
(component-class ?component-class)
(instance-of ?comp ?component-class)
(=> (instance-of ?other-component ?component-class)
(=< (component.cost ?comp)
(component.cost ?other-component)))))
This Lisp-to-HTML translation was brought to you by
François Gerbaux and Tom Gruber