| | |
| | | { |
| | | return; |
| | | } |
| | | var time_list = _schedule_request_list.Select(x => x.ReceptionTime).OrderBy(x => x).ToList(); |
| | | var start_time = time_list.Last().AddDays(-2); |
| | | var end_time = time_list.Last().AddDays(1); |
| | | var deline = new DateTime(2024,12,1); |
| | | var deline2 = new DateTime(2025,1,1); |
| | | var time_list = _schedule_request_list.Where(x=>x.ReceptionTime>=deline&&x.ReceptionTime<= deline2).Select(x => x.ReceptionTime).OrderBy(x => x).ToList(); |
| | | |
| | | foreach (var item in time_list) |
| | | { |
| | | this.repImgDate.Items.Add(item.ToString("G"), item, -1); |
| | | } |
| | | |
| | | var monitor_record_list = _service_monitor_record.GetByReceiptTimeRange(start_time, end_time); |
| | | } |
| | | var monitor_record_list = _service_monitor_record.GetByReceiptTimeRange(deline, deline2); |
| | | if (monitor_record_list == null || !monitor_record_list.Any()) |
| | | { |
| | | return; |
| | |
| | | if (this.barCekSimSchedule.Checked) |
| | | { |
| | | var target_flow1 = request.TargetFlow1; |
| | | var target_flow2 = request.TargetFlow2; |
| | | var target_flow2 = request.TargetFlow2; |
| | | |
| | | var target_pressure1 = Curve.PumpCalculateHelper.Mpa2M(request.TargetPressure1); |
| | | var target_pressure2 = Curve.PumpCalculateHelper.Mpa2M(request.TargetPressure2); |
| | |
| | | analysis_deviation_list = null; |
| | | } |
| | | |
| | | if (this.barCekCalcPressureDiff.Checked) |
| | | { |
| | | var time = Convert.ToDateTime(this.barEditImgRealTime.EditValue); |
| | | if (_monitor_record_dict != null && _monitor_record_dict.ContainsKey(time)) |
| | | { |
| | | var valid_record_list = _monitor_record_dict[time]; |
| | | var station_scada_dict = GetStationScadaDict(monitor_record_list); |
| | | |
| | | var validRealTimePressure = station_scada_dict[IStation.eDockingStation.Ch1s][0].Item2 ; |
| | | if (validRealTimePressure.HasValue) |
| | | { |
| | | var validRealTimePressureDiff = validRealTimePressure.Value - target_pressure1; |
| | | target_pressure1 += validRealTimePressureDiff; |
| | | AlertTool.ShowInfo(this, "填补压力缺失", $"{validRealTimePressureDiff:N3}"); |
| | | } |
| | | } |
| | | } |
| | | |
| | | if (this.barCekCalcFlowDiff.Checked) |
| | | { |
| | | var ptList = new List<CurvePoint>(); |
| | | try |
| | | { |
| | | var filePath = @"D:\WorkCode\Project\ChDt1\Schedule.Ch.V1.0\02-desktop\Desktop\IStation.Test\bin\Debug\net6.0-windows\csv\alow.csv"; |
| | | var filePath = @"D:\WorkCode\Project\ChDt1\Schedule.Ch.V1.0\02-desktop\Desktop\IStation.Test\bin\Debug\net6.0-windows\stationcsv\characteristic_curve.csv"; |
| | | using (StreamReader reader = new StreamReader(filePath)) |
| | | { |
| | | reader.ReadLine(); |
| | |
| | | |
| | | } |
| | | } |
| | | } |
| | | } |
| | | catch (Exception ex) |
| | | { |
| | | Console.WriteLine("读取文件时出错: " + ex.Message); |
| | | } |
| | | |
| | | |
| | | var x = ptList.Select(x => x.X).ToArray(); |
| | | var y = ptList.Select(x => x.Y).ToArray(); |
| | | |
| | | // 多项式回归的阶数(例如,二次多项式) |
| | | int degree = 10; |
| | | int degree = 3; |
| | | |
| | | // 拟合多项式回归模型 |
| | | double[] coefficients = NonlinearRegressionHelper.FitPolynomial(x, y, degree); |
| | |
| | | double yPredicted = NonlinearRegressionHelper.PredictPolynomial(xNew, coefficients); |
| | | |
| | | target_flow2 += yPredicted; |
| | | AlertTool.ShowInfo(this,"预测缺失",$"{yPredicted}"); |
| | | AlertTool.ShowInfo(this, "预测流量缺失", $"{yPredicted:N1}"); |
| | | |
| | | |
| | | // 计算 R² 和 MSE |
| | | double rSquared = NonlinearRegressionHelper.CalculateRSquared(x, y, coefficients); |
| | | double mse = NonlinearRegressionHelper.CalculateMSE(x, y, coefficients); |
| | | |
| | | |
| | | } |
| | | |
| | | |
| | |
| | | Verify(time); |
| | | } |
| | | |
| | | |
| | | private void barCekCalcPressureDiff_CheckedChanged(object sender, DevExpress.XtraBars.ItemClickEventArgs e) |
| | | { |
| | | var time = Convert.ToDateTime(this.barEditImgRealTime.EditValue); |
| | | Schedule(_schedule_request); |
| | | Verify(time); |
| | | } |
| | | |
| | | #region Expand |
| | | private string GetStationName(eDockingStation station) |
| | | { |
| | |
| | | var pump27_power = scada_dict[GlobalHelper.二输27泵_有功功率]; |
| | | |
| | | |
| | | var pump21_maintenance_status = scada_dict[GlobalHelper.二输21泵_状态]; |
| | | var pump22_maintenance_status = scada_dict[GlobalHelper.二输22泵_状态]; |
| | | var pump23_maintenance_status = scada_dict[GlobalHelper.二输23泵_状态]; |
| | | var pump24_maintenance_status = scada_dict[GlobalHelper.二输24泵_状态]; |
| | | var pump25_maintenance_status = scada_dict[GlobalHelper.二输25泵_状态]; |
| | | var pump26_maintenance_status = scada_dict[GlobalHelper.二输26泵_状态]; |
| | | var pump27_maintenance_status = scada_dict[GlobalHelper.二输27泵_状态]; |
| | | if (scada_dict.ContainsKey(GlobalHelper.二输21泵_状态)) |
| | | { |
| | | |
| | | } |
| | | //var pump21_maintenance_status = scada_dict[GlobalHelper.二输21泵_状态]; |
| | | //var pump22_maintenance_status = scada_dict[GlobalHelper.二输22泵_状态]; |
| | | //var pump23_maintenance_status = scada_dict[GlobalHelper.二输23泵_状态]; |
| | | //var pump24_maintenance_status = scada_dict[GlobalHelper.二输24泵_状态]; |
| | | //var pump25_maintenance_status = scada_dict[GlobalHelper.二输25泵_状态]; |
| | | //var pump26_maintenance_status = scada_dict[GlobalHelper.二输26泵_状态]; |
| | | //var pump27_maintenance_status = scada_dict[GlobalHelper.二输27泵_状态]; |
| | | |
| | | |
| | | pump21_pressure.Mpa2M(); |
| | |
| | | #endregion |
| | | |
| | | public class NonlinearRegressionHelper |
| | | { |
| | | { |
| | | |
| | | // 多项式回归拟合 |
| | | public static double[] FitPolynomial(double[] x, double[] y, int degree) |