private void TestAllSABTN_Click(object sender, EventArgs e) { ShowPoint.Clear(); NowQueenSolve = Form1.ThisQueenSolve; NowQueenSolve.ChessLocationList = Form1.QueenChessLocation; NowQueenSolve.QueenLocationList = new List <Point>(); for (int i = 0; i < 8; i++) { NowQueenSolve.QueenLocationList.Add(new Point(i, NowQueenSolve.EightQueenResult[0, i] - 1)); } double InitTemp = 0, alpha = 0, SALenght = 0; try { InitTemp = Convert.ToDouble(InitTempTB.Text); alpha = Convert.ToDouble(AlphaTB.Text); SALenght = Convert.ToDouble(SALenghtTB.Text); } catch (Exception) { throw; } Chart1.Series[0].ChartType = SeriesChartType.Point; Chart1.Series[0].IsValueShownAsLabel = true; Chart1.Series[0].MarkerSize = 6; Chart1.Series[0].ToolTip = "第#VALX组八皇后的解\r\n寻优后的最短路径为:#VAL"; Chart1.ChartAreas[0].AxisY.Maximum = 55; Chart1.ChartAreas[0].AxisY.Minimum = 30; Chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = true; Chart1.ChartAreas[0].AxisY.MinorGrid.Enabled = false; Chart1.ChartAreas[0].AxisY.MajorGrid.Interval = 100; Chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = true; Chart1.ChartAreas[0].AxisX.MajorGrid.Interval = 1; Chart1.ChartAreas[0].AxisX.MinorGrid.Enabled = false; Chart1.ChartAreas[0].AxisX.MajorTickMark.Interval = 5; Chart1.ChartAreas[0].AxisX.MinorTickMark.Interval = 1; //NowQueenSolve.InitSA(InitTemp, alpha, SALenght, 0, SimulateAnneal.Annealing.SAMode.SA); NowQueenSolve.InitSA(1000, 0.9, 90, 0.1, SimulateAnneal.Annealing.SAMode.FastSA); //NowQueenSolve.InitSA(1000, 0.9, 90, 0, SimulateAnneal.Annealing.SAMode.SA); List <Point> BestResult_QueenLocation = new List <Point>(); List <int> MoveSequence = new List <int>(); double disall = 0; MoveSequence = NowQueenSolve.SearchResult_ForOverall(ref disall, ref BestResult_QueenLocation, ShowPoint); #region 92组解评估 List <double> ResultEve = new List <double>(); ResultEve = NowQueenSolve.QueenResultEvaluation(); ShowPoint2.Clear(); for (int i = 0; i < 92; i++) { ShowPoint2.Add(new DataPoint(i, ResultEve[i])); } #endregion InfoPrintTB.Text = "模拟退火参数:" + System.Environment.NewLine; InfoPrintTB.Text += "T0 = " + InitTemp.ToString() + System.Environment.NewLine; InfoPrintTB.Text += "a = " + alpha.ToString() + System.Environment.NewLine; InfoPrintTB.Text += "L = " + SALenght.ToString() + System.Environment.NewLine; InfoPrintTB.Text += "本次最优距离为:" + System.Environment.NewLine; InfoPrintTB.Text += disall.ToString() + System.Environment.NewLine; }
DataPointCollection ShowPoint2; ///用来显示的点集2 private void SATest1BTN_Click(object sender, EventArgs e) { NowQueenSolve = Form1.ThisQueenSolve; NowQueenSolve.ChessLocationList = Form1.QueenChessLocation; NowQueenSolve.QueenLocationList = new List <Point>(); for (int i = 0; i < 8; i++) { NowQueenSolve.QueenLocationList.Add(new Point(i, NowQueenSolve.EightQueenResult[0, i] - 1)); } SimulateAnneal.Annealing.SAMode UsedSAMode = SimulateAnneal.Annealing.SAMode.SA; double InitTemp = 0, alpha = 0, SALenght = 0, FSAh = 0; int TestNum = 0; try { InitTemp = Convert.ToDouble(InitTempTB.Text); alpha = Convert.ToDouble(AlphaTB.Text); SALenght = Convert.ToDouble(SALenghtTB.Text); FSAh = Convert.ToDouble(FSAhTB.Text); TestNum = Convert.ToInt32(TestNumSetTB.Text); if (SAModeSetTB.SelectedIndex == 0)//SA { UsedSAMode = SimulateAnneal.Annealing.SAMode.SA; } else { UsedSAMode = SimulateAnneal.Annealing.SAMode.FastSA; } } catch (Exception) { throw; } Chart1.Series[0].ChartType = SeriesChartType.Line; Chart1.Series[0].MarkerSize = 0; Chart1.Series[0].IsValueShownAsLabel = false; Chart1.Series[0].ToolTip = "第#VALX次模拟退火中\r\n局部最短路径为:#VAL"; //Chart1.ChartAreas[0].AxisY.Maximum = 1; //Chart1.ChartAreas[0].AxisY.Minimum = 30; Chart1.ChartAreas[0].AxisY.MajorGrid.Enabled = false; Chart1.ChartAreas[0].AxisY.MinorGrid.Enabled = false; Chart1.ChartAreas[0].AxisX.MajorGrid.Enabled = false; Chart1.ChartAreas[0].AxisX.MinorGrid.Enabled = false; Chart1.ChartAreas[0].AxisX.MajorTickMark.Interval = 5; Chart1.ChartAreas[0].AxisX.MinorTickMark.Interval = 1; Chart1.Series[1].ChartType = SeriesChartType.Line; Chart1.Series[1].MarkerSize = 0; Chart1.Series[1].IsValueShownAsLabel = false; Chart1.Series[1].ToolTip = "第#VALX次模拟退火中\r\n局部最短路径为:#VAL"; string TestStr = NowQueenSolve.Test_SAParameter( InitTemp, alpha, SALenght, FSAh, UsedSAMode, TestNum); ShowPoint.Clear(); List <double> DisList = NowQueenSolve.TestDisList.ToList(); List <double> UsedTimeList = NowQueenSolve.TestUsedTime.ToList(); for (int i = 0; i < NowQueenSolve.TestDisList.Count; i++) { ShowPoint.Add(new DataPoint(i, DisList[i])); } ShowPoint2.Clear(); for (int i = 0; i < NowQueenSolve.TestUsedTime.Count; i++) { //ShowPoint2.Add(new DataPoint(i, UsedTimeList[i])); } InfoPrintTB.Text = TestStr; }