From 4ea75104d860d0277c73827f7306532129370dfb Mon Sep 17 00:00:00 2001 From: wxz Date: Mon, 24 Aug 2020 15:55:11 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E5=96=84=E5=88=86=E5=80=BC=E8=AE=A1?= =?UTF-8?q?=E7=AE=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../normalizing/DoubleScoreCalculator.java | 2 +- .../normalizing/IntegerScoreCalculator.java | 2 +- .../support/normalizing/ScoreCalculator.java | 46 ++++++++++++++++++- 3 files changed, 47 insertions(+), 3 deletions(-) diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/DoubleScoreCalculator.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/DoubleScoreCalculator.java index 87f34db1f9..c626602393 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/DoubleScoreCalculator.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/DoubleScoreCalculator.java @@ -17,7 +17,7 @@ public class DoubleScoreCalculator extends ScoreCalculator { * @param correlation 相关性 */ public DoubleScoreCalculator(Double[] sourceArray, BigDecimal minScore, BigDecimal maxScore, Correlation correlation) { - this.sourceArrary = sourceArray; + this.sourceArrary = sourceArray.clone(); this.minScore = minScore; this.maxScore = maxScore; this.correlation = correlation; diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/IntegerScoreCalculator.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/IntegerScoreCalculator.java index 333cd0a4a2..7708b83fc0 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/IntegerScoreCalculator.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/IntegerScoreCalculator.java @@ -17,7 +17,7 @@ public class IntegerScoreCalculator extends ScoreCalculator { * @param correlation 相关性 */ public IntegerScoreCalculator(Integer[] sourceArray, BigDecimal minScore, BigDecimal maxScore, Correlation correlation) { - this.sourceArrary = sourceArray; + this.sourceArrary = sourceArray.clone(); this.minScore = minScore; this.maxScore = maxScore; this.correlation = correlation; diff --git a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java index 2fb3fab926..e3c98d5117 100644 --- a/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java +++ b/epmet-module/data-statistical/data-statistical-server/src/main/java/com/epmet/support/normalizing/ScoreCalculator.java @@ -6,6 +6,7 @@ import java.util.Arrays; /** * 所有数据类型计算器的父类,实现算法骨架,数据类型转换方法则由子类实现 + * ☆☆☆ 如果需要保持传入的数组元素顺序不变,请在实现类的构造方法中将传入数组进行克隆 ☆☆☆ * @param 数据类型泛型 */ public abstract class ScoreCalculator { @@ -38,7 +39,7 @@ public abstract class ScoreCalculator { } /** - * 归一算法 + * 单值归一算法 * @return */ public BigDecimal normalize(T sourceValue) { @@ -66,6 +67,49 @@ public abstract class ScoreCalculator { } } + /** + * 单值归一算法,带权重 + * @param sourceValue + * @param weight + * @return + */ + public BigDecimal normalize(T sourceValue, BigDecimal weight) { + return normalize(sourceValue).multiply(weight); + } + + /** + * 批量归一算法 + * @param sourceValues + * @return + */ + public BigDecimal[] normalize(T[] sourceValues) { + + BigDecimal[] scores = new BigDecimal[sourceValues.length]; + + for (int i=0;i