From 49eb2a09634e439090d4a2b13ec7d6f911d3deaf Mon Sep 17 00:00:00 2001
From: cloudflight <cloudflight@126.com>
Date: 星期六, 27 七月 2024 11:44:21 +0800
Subject: [PATCH] fix:修复沿程损失计算异常的问题

---
 Hydraulic/Hydro.CommonBase/Helper/CurveFitHelper.cs |   19 ++++++++++---------
 1 files changed, 10 insertions(+), 9 deletions(-)

diff --git a/Hydraulic/Hydro.CommonBase/Helper/CurveFitHelper.cs b/Hydraulic/Hydro.CommonBase/Helper/CurveFitHelper.cs
index 5a02a15..b0a09d2 100644
--- a/Hydraulic/Hydro.CommonBase/Helper/CurveFitHelper.cs
+++ b/Hydraulic/Hydro.CommonBase/Helper/CurveFitHelper.cs
@@ -270,14 +270,14 @@
         /// <param name="numIntervals"></param>
         /// <param name="filterNum">浠ユ渶灏忓�间綔涓鸿繃婊ょ殑绯绘暟</param>
         /// <returns></returns>
-        public static List<DataPoint> GetFrequencyDistribution(List<double> data, out List<double>[] datapoints, int numIntervals = 10,double filterNum=5 )
+        public static List<DataPoint> GetFrequencyDistribution(List<Result> data, out List<DataPoint>[] datapoints, int numIntervals = 10,double filterNum=5 )
         {
 
             List<DataPoint> resultPoints = new List<DataPoint>();
-            datapoints= new List<double>[numIntervals];
+            datapoints= new List<DataPoint>[numIntervals];
             for(int i=0;i<numIntervals;i++)
             {
-                datapoints[i]= new List<double>();
+                datapoints[i]= new List<DataPoint>();
             }
             // 璁剧疆缃俊姘村钩
 
@@ -291,8 +291,8 @@
 
 
             // 璁$畻鏁版嵁鐨勬渶灏忓�煎拰鏈�澶у��
-            double minValue = data.Min();
-            double maxValue = data.Max();
+            double minValue = data.Min(x=>x.ObjFunctionValue);
+            double maxValue = data.Max(x => x.ObjFunctionValue);
 
             // 璁$畻鍖洪棿瀹藉害
             double intervalWidth = (maxValue - minValue) / numIntervals;
@@ -301,23 +301,24 @@
             int[] freqDist = new int[numIntervals];
 
             // 璁$畻鍚勪釜鍖洪棿鐨勯鐜�
-            foreach (double x in data)
+            foreach (var xd in data)
             {
+                var x = xd.ObjFunctionValue;
                 int index = (int)((x - minValue) / intervalWidth);
                 if (index < 0) // 鏁版嵁灏忎簬鏈�灏忓��
                 {
                     freqDist[0]++;
-                    datapoints[0].Add(x);
+                    datapoints[0].Add(new DataPoint() {XValue= x,Tag=xd });
                 }
                 else if (index >= numIntervals) // 鏁版嵁澶т簬鏈�澶у��
                 {
                     freqDist[numIntervals - 1]++;
-                    datapoints[numIntervals - 1].Add(x);
+                    datapoints[numIntervals - 1].Add(new DataPoint() { XValue = x, Tag = xd });
                 }
                 else // 鏁版嵁鍦ㄥ尯闂村唴
                 {
                     freqDist[index]++;
-                    datapoints[index].Add(x);
+                    datapoints[index].Add(new DataPoint() { XValue = x, Tag = xd });
                 }
             }
             double[] freqDistPersent =new double[numIntervals];

--
Gitblit v1.9.3