COOM Profile: N-FULL¶
Synopsis¶
The COOM N-FULL profile considers calculations of numerical values, for which the results of the calculations are relevant for the solutions space. That way, they are constraining the possible space of valid configurations. This often happens, when the results of these computations are used within further constraints.
It is worth noticing, that the N-FULL profile is difficult to implement for common smart configuration engines, since valid states for numerical values need to be (at least) estimated during the configuration process.
Building Blocks¶
Example: Sunday Bike¶
The product SundayBike
calculates the effectiveTopTubeLength
that is based on the value of the reach
, stack
, and seatTubeAngle
.
The computation of the seatTubeAngle
uses the tan(seatTubeAngle)
, which makes it a non-linear computation.
Subsequently, there exists a requirement, that the bag of the top tube needs to be smaller than the value of the effectiveTopTubeLength
, i.e., (topTubeBag.length + 30) < effectiveTopTubeLength
.
This constraint influences the solution space of possible valid configurations.
product {
SundayBike sundayBike
}
structure SundayBike {
num /mm reach
num /mm stack
num /mm seatTubeAngle
num /mm effectiveTopTubeLength
TopTubeBag topTubeBag
}
enumeration TopTubeBag {
attribute num /mm length
short = ( 550 )
middle = ( 600 )
long = ( 650 )
}
behavior SundayBike {
default reach = 470
default stack = 600
default seatTubeAngle = 73
imply effectiveTopTubeLength = reach + (stack / tan(seatTubeAngle))
}
behavior SundayBike {
require (topTubeBag.length + 30) < effectiveTopTubeLength
}