Browse Source

计算器

dev_shibei_match
jianjun 5 years ago
parent
commit
1e4cc7102e
  1. 36
      epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/batch/BatchScoreCalculator.java

36
epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/batch/BatchScoreCalculator.java

@ -66,26 +66,30 @@ public class BatchScoreCalculator {
BigDecimal minScoreValue = idx.getScoreCalculator().getMinScore(); BigDecimal minScoreValue = idx.getScoreCalculator().getMinScore();
BigDecimal maxScoreValue = idx.getScoreCalculator().getMaxScore(); BigDecimal maxScoreValue = idx.getScoreCalculator().getMaxScore();
if (idx.getScoreCalculator().getMaxValue().compareTo(idx.getScoreCalculator().getMinValue()) == 0) {
//*((max-min)/ (Math.PI/2))+min
//Math.atan(new Double(vo.getSampleValue().toString()))* //1.如果是分数值(平均值)不需要归一 则 直接value*权重
normalizeValue = new BigDecimal(Math.atan(new Double(getFinalSampleValue(vo.getSampleValue(), threshold).toString()))) //2.否则 先判断 样本值是否相等 是:反正切函数 否:归一算法
.multiply( if (idx.isScore()) {
(maxScoreValue.subtract(minScoreValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP))) vo.setSampleValue(new BigDecimal(vo.getSampleValue().toString()).compareTo(NumConstant.ZERO_DECIMAL) == NumConstant.ZERO ? ScoreConstants.MIN_SCORE : new BigDecimal(vo.getSampleValue().toString()));
.add(minScoreValue).setScale(6, RoundingMode.HALF_UP); normalizeValue = getFinalSampleValue(vo.getSampleValue(), threshold);
// } else {
if (scoreCalculator.getCorrelation().getCode().equals(Correlation.NEGATIVE)) { if (idx.getScoreCalculator().getMaxValue().compareTo(idx.getScoreCalculator().getMinValue()) == 0) {
normalizeValue = maxScoreValue.subtract(normalizeValue); //*((max-min)/ (Math.PI/2))+min
} //Math.atan(new Double(vo.getSampleValue().toString()))*
}else { normalizeValue = new BigDecimal(Math.atan(new Double(getFinalSampleValue(vo.getSampleValue(), threshold).toString())))
//如果不需要归一 则 直接value*权重 .multiply(
if (idx.isScore()) { (maxScoreValue.subtract(minScoreValue).divide(new BigDecimal(Math.PI / 2), 10, RoundingMode.HALF_UP)))
vo.setSampleValue(new BigDecimal(vo.getSampleValue().toString()).compareTo(NumConstant.ZERO_DECIMAL) == NumConstant.ZERO ? ScoreConstants.MIN_SCORE : new BigDecimal(vo.getSampleValue().toString())); .add(minScoreValue).setScale(6, RoundingMode.HALF_UP);
normalizeValue = getFinalSampleValue(vo.getSampleValue(), threshold); //
if (scoreCalculator.getCorrelation().getCode().equals(Correlation.NEGATIVE)) {
normalizeValue = maxScoreValue.subtract(normalizeValue);
}
} else { } else {
normalizeValue = scoreCalculator.normalize(getFinalSampleValue(vo.getSampleValue(), threshold)); normalizeValue = scoreCalculator.normalize(getFinalSampleValue(vo.getSampleValue(), threshold));
} }
} }
BigDecimal score = normalizeValue.multiply(weight).setScale(6, RoundingMode.HALF_UP); BigDecimal score = normalizeValue.multiply(weight).setScale(6, RoundingMode.HALF_UP);
CalculateResult result = scoreCountOfSamples.get(sampleId); CalculateResult result = scoreCountOfSamples.get(sampleId);

Loading…
Cancel
Save