Parameters

The solution of a typical configuration problem is represented by a set of parameters, related to: For every type of the configuration problem a set of parameters is defined. But not each parameter must participate in the final solution - these parameters are only available and they can be used. For instance, one particular value of one parameter can cause another parameter to be useless for the solution (but it can be included in the solution) or its presence in the solution does not have sense. For this reason the current stage of the solution in general uses only a subset of all parameters. These used parameters are called active and the other parameters are inactive.

The activity attribute of a parameter can change in a dynamic way. During the search for the final solution some parameters can be activated and others can be transferred into the set of inactive parameters. A special case is when the set of active parameters does not change during the design process (and all parameters which are active at the beginning of the design process are included in each intermediate and final solution).

The question is which parameters are active at the start of the search for the solution when no parameter has a value. There are several strategies:

The last case is typical for the situation when designer for the sake of simplicity first deals only with a restricted set of basic parameters (which characterise the design) and additional parameters (which specify the design in detail) are used only in latter stages of the design.

Parameters can be bound to some values. Every parameter is associated with a set of possible values which can be assigned to this parameter. Of course, only values of active parameters are considered. Values of inactive parameters (if they are assigned to them) are irrelevant, not up-to-date, or meaningless. From the point of view of assignment, parameters can be divided into two groups:

The value which can be assigned to an independent parameter does not depend on the values of other parameters. It can be an arbitrary value from the set of all possible values.

The value of a dependent parameter depends on the values of other parameters (these parameters should be active - if the value of a dependent parameter depends on the value of an inactive parameter then this dependent parameter should be inactive too). The dependency can be tight when the value of a dependent parameter can be determined unambiguously from the values of parameters on which the initialized parameter depends (i.e. it is defined by a function). Another case stands for the loose dependency when the values of some parameters can restrict the possible values of a dependent parameter. The first type of dependency should be implemented by dependent parameters. The latter type can be implemented by the use of dependent parameters (with changeable set of possible values) or by independent parameters (the consistency is guaranteed by a particular constraint).

From the point of view of implementation it means that a value can be assigned to an independent parameter (directly from its set of possible values) and the value of a dependent parameter is computed from the values of other parameters. In other words, it is needed first to determine values of independent parameters and only after that the values of dependent parameters.

In general, the designer does not determine the values of parameters in a random order but uses a predefined order of parameter processing (although this order can depends on the current stage of the solution). That is why a parameter priority is sometimes introduced. The higher priority a parameter has, the higher chance to assign value to this parameter in an early stage. The solution always starts with the initialization of the independent parameter with the highest priority.