Skip to content

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.

Sunday Bike

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
}