@Override
  public void initialize() {
    super.initialize();

    // Determine what parameters are constants or edges, and save the state
    determineParameterConstantsAndEdges();

    // Pre-compute statistics associated with any constant output values
    _constantOutputCounts = null;
    if (_hasConstantOutputs) {
      FactorFunction factorFunction = _factor.getFactorFunction();
      Object[] constantValues = factorFunction.getConstants();
      int[] constantIndices = factorFunction.getConstantIndices();
      _constantOutputCounts = new int[_numParameters];
      for (int i = 0; i < constantIndices.length; i++) {
        if (_hasFactorFunctionConstructorConstants || constantIndices[i] >= _numParameters) {
          int outputValue = FactorFunctionUtilities.toInteger(constantValues[i]);
          _constantOutputCounts[outputValue]++; // Histogram among constant outputs
        }
      }
    }
  }