public List <ForecastDayStationData> SelectForecastDayStationData(int StationID, DateTime TargetDate, int Forecast) { connect(); DateTime TimeStart = TargetDate.Date; DateTime TimeEnd = TimeStart + TimeSpan.FromDays(1) - TimeSpan.FromSeconds(1); List <ForecastDayStationData> DataList = new List <ForecastDayStationData>(); string sql = String.Format("SELECT * FROM `forecast_day_station_data` WHERE `StationID`={0} AND `ForecastType`={1} AND `Time` BETWEEN '{2}' AND '{3}';", StationID, Forecast, TimeStart.ToString("yyyy-MM-dd HH:mm:ss"), TimeEnd.ToString("yyyy-MM-dd HH:mm:ss")); MySqlCommand cmd = new MySqlCommand(sql, conn); MySqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { ForecastDayStationData Record = new ForecastDayStationData() { ID = (int)rdr["ID"], StationID = (int)rdr["StationID"], ForecastType = (int)rdr["ForecastType"], ActivePower = double.Parse((string)rdr["ActivePower"]), ReactivePower = double.Parse((string)rdr["ReactivePower"]), Time = (DateTime)rdr["Time"] }; DataList.Add(Record); } rdr.Close(); return(DataList); }
public int AddForecastDayStationData(ForecastDayStationData Record) { connect(); string sql = String.Format("INSERT INTO `forecast_day_station_data` (`StationID`,`ForecastType`,`ActivePower`,`ReactivePower`,`Time`) VALUE ('{0}','{1}','{2}','{3}','{4}');", Record.StationID,Record.ForecastType, Record.ActivePower, Record.ReactivePower, Record.Time.ToString("yyyy-MM-dd HH:mm:ss")); MySqlCommand cmd = new MySqlCommand(sql, conn); int result = cmd.ExecuteNonQuery(); return result; }
public int AddForecastDayStationData(ForecastDayStationData Record) { connect(); string sql = String.Format("INSERT INTO `forecast_day_station_data` (`StationID`,`ForecastType`,`ActivePower`,`ReactivePower`,`Time`) VALUE ('{0}','{1}','{2}','{3}','{4}');", Record.StationID, Record.ForecastType, Record.ActivePower, Record.ReactivePower, Record.Time.ToString("yyyy-MM-dd HH:mm:ss")); MySqlCommand cmd = new MySqlCommand(sql, conn); int result = cmd.ExecuteNonQuery(); return(result); }
public int AddForecastDayStationData(ForecastDayStationData Record) { DatabaseConnector dc = new DatabaseConnector(); return(dc.AddForecastDayStationData(Record)); }
public List<ForecastDayStationData> SelectForecastDayStationData(int StationID, DateTime TargetDate,int Forecast) { connect(); DateTime TimeStart = TargetDate.Date; DateTime TimeEnd = TimeStart + TimeSpan.FromDays(1) - TimeSpan.FromSeconds(1); List<ForecastDayStationData> DataList = new List<ForecastDayStationData>(); string sql = String.Format("SELECT * FROM `forecast_day_station_data` WHERE `StationID`={0} AND `ForecastType`={1} AND `Time` BETWEEN '{2}' AND '{3}';", StationID,Forecast, TimeStart.ToString("yyyy-MM-dd HH:mm:ss"), TimeEnd.ToString("yyyy-MM-dd HH:mm:ss")); MySqlCommand cmd = new MySqlCommand(sql, conn); MySqlDataReader rdr = cmd.ExecuteReader(); while (rdr.Read()) { ForecastDayStationData Record = new ForecastDayStationData() { ID = (int)rdr["ID"], StationID = (int)rdr["StationID"], ForecastType = (int)rdr["ForecastType"], ActivePower = double.Parse((string)rdr["ActivePower"]), ReactivePower = double.Parse((string)rdr["ReactivePower"]), Time = (DateTime)rdr["Time"] }; DataList.Add(Record); } rdr.Close(); return DataList; }
List <ForecastDayStationData> dayforecastslot(List <List <RuntimeStationData> > HistoryData)//进行预测 { double[][] lp = new double[14][]; for (int day = 0; day < 14; day++)//读入数据 { lp[day] = new double[96]; bool[] hasvalue = new bool[96]; for (int ii = 0; ii < 96; ii++) { lp[day][ii] = 0; hasvalue[ii] = false; } for (int i = 0; i < HistoryData[day].Count; i++) { int ii = (int)((HistoryData[day][i].Time.Subtract(HistoryData[day][i].Time.Date).TotalMinutes) / (TimeSpan.FromMinutes(15).TotalMinutes)); lp[day][ii] = HistoryData[day][i].ActivePower; hasvalue[ii] = true; } for (int ii = 1; ii < 96; ii++) { if (!hasvalue[ii]) { lp[day][ii] = lp[day][ii - 1]; } } } double[][] germane = new double[14][];//相关负荷集合,将负荷重新排序 for (int i = 0; i < 14; i++) { germane[i] = new double[96]; } for (int i = 0; i < 96; i++) { germane[0][i] = lp[6][i]; germane[1][i] = lp[13][i]; for (int j = 2; j < 8; j++) { germane[j][i] = lp[j - 2][i]; } for (int j = 8; j < 14; j++) { germane[j][i] = lp[j - 1][i]; } } double[] pf1 = new double[96];//正常日点对点倍比法预测结果 for (int t = 0; t < 96; t++) { pf1[t] = pointtopointradio(germane, t); } double[] pf2 = new double[96];//正常日倍比平滑法预测结果 for (int t = 0; t < 96; t++) { pf2[t] = smooth(germane, t); } double[] pf3 = new double[96];//灰色预测 for (int t = 0; t < 96; t++) { pf3[t] = daygrey(germane, t); } double[] pf4 = new double[96]; for (int t = 0; t < 96; t++) { pf4[t] = variationcoefficient(lp, t);//简单直观的变化系数法 } List <ForecastDayStationData> DataList = new List <ForecastDayStationData>(); ForecastDayStationData Record; for (int ii = 0; ii < 96; ii++) { Record = new ForecastDayStationData() { ID = ii, ForecastType = 1, ActivePower = pf1[ii], }; DataList.Add(Record); Record = new ForecastDayStationData() { ID = ii, ForecastType = 2, ActivePower = pf2[ii] }; DataList.Add(Record); Record = new ForecastDayStationData() { ID = ii, ForecastType = 3, ActivePower = pf3[ii] }; DataList.Add(Record); Record = new ForecastDayStationData() { ID = ii, ForecastType = 4, ActivePower = pf4[ii] }; DataList.Add(Record); } return(DataList); }
//进行预测 List<ForecastDayStationData> dayforecastslot(List<List<RuntimeStationData>> HistoryData) { double[][] lp = new double[14][]; for (int day = 0; day < 14; day++)//读入数据 { lp[day] = new double[96]; bool[] hasvalue = new bool[96]; for (int ii = 0; ii < 96; ii++) { lp[day][ii] = 0; hasvalue[ii] = false; } for (int i = 0; i < HistoryData[day].Count; i++) { int ii = (int)((HistoryData[day][i].Time.Subtract(HistoryData[day][i].Time.Date).TotalMinutes) / (TimeSpan.FromMinutes(15).TotalMinutes)); lp[day][ii] = HistoryData[day][i].ActivePower; hasvalue[ii] = true; } for (int ii = 1; ii < 96; ii++) if (!hasvalue[ii]) lp[day][ii] = lp[day][ii - 1]; } double[][] germane = new double[14][];//相关负荷集合,将负荷重新排序 for (int i = 0; i < 14; i++) germane[i] = new double[96]; for (int i = 0; i < 96; i++) { germane[0][i] = lp[6][i]; germane[1][i] = lp[13][i]; for (int j = 2; j < 8; j++) { germane[j][i] = lp[j - 2][i]; } for (int j = 8; j < 14; j++) { germane[j][i] = lp[j - 1][i]; } } double[] pf1 = new double[96];//正常日点对点倍比法预测结果 for (int t = 0; t < 96; t++) { pf1[t] = pointtopointradio(germane, t); } double[] pf2 = new double[96];//正常日倍比平滑法预测结果 for (int t = 0; t < 96; t++) { pf2[t] = smooth(germane, t); } double[] pf3 = new double[96];//灰色预测 for (int t = 0; t < 96; t++) { pf3[t] = daygrey(germane, t); } double[] pf4 = new double[96]; for (int t = 0; t < 96; t++) { pf4[t] = variationcoefficient(lp, t);//简单直观的变化系数法 } List<ForecastDayStationData> DataList = new List<ForecastDayStationData>(); ForecastDayStationData Record; for (int ii = 0; ii < 96; ii++) { Record = new ForecastDayStationData() { ID=ii, ForecastType = 1, ActivePower = pf1[ii], }; DataList.Add(Record); Record = new ForecastDayStationData() { ID = ii, ForecastType = 2, ActivePower = pf2[ii] }; DataList.Add(Record); Record = new ForecastDayStationData() { ID = ii, ForecastType = 3, ActivePower = pf3[ii] }; DataList.Add(Record); Record = new ForecastDayStationData() { ID = ii, ForecastType = 4, ActivePower = pf4[ii] }; DataList.Add(Record); } return DataList; }
public int AddForecastDayStationData(ForecastDayStationData Record) { DatabaseConnector dc = new DatabaseConnector(); return dc.AddForecastDayStationData(Record); }