* double * Results, * const long * ResultsSize, * const short * RowsCount, * const short * ColumnsCount, * double * DecisionMatrix, * const short * Mode)
Compute "objective" weights for a DecisionMatrix, based of the values in the matrix.
Mode 1 :
Use the "entropy method" as described by ZELENY (chapter 7) : the weight wj given to each action depends upon the entropy of the criteria :
* the decision matrix values are normalized with DECIDE__Normalize, mode 3 * entropy Ej = -(sum aij log(aij)) / log(ColumnsCount) * Dj = 1 - Ej * wj = Dj / sum(Dj)
Note : due to the use of log(), all values of DecisionMatrix (aij) must be > 0.
Mode 2 :
Use the method described by DIAKOULAKI D., MAVROTAS G., PAPAYANNAKIS L. : the weight wj given to each action depends upon the correlation between the columns of the DecisionMatrix. The weight of a criterion is high if the information the criterion brings is different from the information given by the other criteria, and is higher if its variance is high.
wj = (standard deviation of column j) * sum(1 - rjk), with rjk = correlation coefficient between column j and column k.
return value :
* 0 : completed successfully * 1 : null pointer in first parameter * 2 : null pointer in second parameter * 3 : null pointer in third parameter * 4 : null pointer in fourth parameter * 5 : null pointer in fifth parameter * 6 : null pointer in sixth parameter * 101 : (*ResultsSize < (long)(*ColumnsCount * sizeof(double))) * 102 : invalid Mode * 202 : with Mode 1, one of the input values is negative (log cannot be calculated) * 901 : internal call to DECIDE__PreProcess failed * 902 : internal call to DECIDE__Normalize failed