void btnOk_Click(object sender, EventArgs e) { try { Sample[] arrSX = new Sample[matrX.GetLength(1)]; for (int j = 0; j < matrX.GetLength(1); j++) { double[] arrX = new double[matrX.GetLength(0)]; for (int i = 0; i < matrX.GetLength(0); i++) { arrX[i] = matrX[i, j]; } arrSX[j] = new TranSample(new Sample(arrXName[j], string.Format("x<sub>{0}</sub>", j + 1), arrX), dgv.Rows[j].Cells[1].Value.ToString()); } Regression[] arrReg = new Regression[matrY.GetLength(1)]; rep = "ПАРАМЕТРИЧЕСКАЯ ИДЕНТИФИКАЦИЯ<br>"; for (int j = 0; j < matrY.GetLength(1); j++) { double[] arrY = new double[matrY.GetLength(0)]; for (int i = 0; i < matrY.GetLength(0); i++) { arrY[i] = matrY[i, j]; } arrReg[j] = new Regression(new Sample("y", string.Format("y<sub>{0}</sub>", j + 1), arrY), arrSX); rep += arrReg[j].GetRegReport() + "<br>"; } Quality.GenErr(matrX, matrY, arrReg, int.Parse(tbN.Text), double.Parse(tbA.Text), double.Parse(tbB.Text), out arrI, out matrXM, out matrYM); rep += string.Format("ПАРАМЕТРЫ ГЕНЕРАЦИИ<br>n = {0}<br>A = {1}<br>B = {2}<br><br>", tbN.Text, tbA.Text, tbB.Text); rep += "ПЕРЕЧЕНЬ ИЗМЕНЕННЫХ НАБЛЮДЕНИЙ<br>"; foreach (int i in arrI) { rep += string.Format("{0} ", i + 1); } WBForm wbf = new WBForm("Параметрическая идентификация и генерация наблюдений", rep); DialogResult = DialogResult.OK; Close(); wbf.ShowDialog(); } catch { MessageBox.Show("Ошибка генерации"); } }
void btnOk_Click(object sender, EventArgs e) { try { Regression[] arrReg = new Regression[matrY.GetLength(1)]; repSmp = repHSmp = repId = repHId = repCorr = repHCorr = repGen = ""; Sample[] arrSX = new Sample[matrX.GetLength(1)]; for (int j = 0; j < arrSX.Length; j++) { double[] arrX = new double[matrX.GetLength(0)]; for (int i = 0; i < matrX.GetLength(0); i++) { arrX[i] = matrX[i, j]; } arrSX[j] = new Sample(arrXName[j], string.Format("x<sub>{0}</sub>", j + 1), arrX); arrSX[j].Calculate(); repSmp += arrSX[j].GetReport(); repHSmp += arrSX[j].GetHypReport(); } repId = "ПАРАМЕТРИЧЕСКАЯ ИДЕНТИФИКАЦИЯ<br>"; Sample[] arrSY = new Sample[matrY.GetLength(1)]; for (int j = 0; j < matrY.GetLength(1); j++) { Sample[] arrTSX = new Sample[matrX.GetLength(1)]; for (int k = 0; k < matrX.GetLength(1); k++) { arrTSX[k] = new TranSample(arrSX[k], dgv.Rows[k].Cells[j + 1].Value.ToString()); } double[] arrY = new double[matrY.GetLength(0)]; for (int i = 0; i < matrY.GetLength(0); i++) { arrY[i] = matrY[i, j]; } Sample smpY = new Sample(arrYName[j], string.Format("y<sub>{0}</sub>", j + 1), arrY); smpY.Calculate(); arrSY[j] = smpY; repSmp += smpY.GetReport(); repHSmp += smpY.GetHypReport(); arrReg[j] = new Regression(smpY, arrTSX); repId += arrReg[j].GetRegReport() + "<br>"; repCorr += arrReg[j].GetCorrReport(); if (cbH.Checked) { arrReg[j].CheckHypothesises(double.Parse(tbAlpha.Text)); repHId += arrReg[j].GetHypRegrReport(); repHCorr += arrReg[j].GetHypCorrReport(); } } Sample[] arrSYX = new Sample[matrX.GetLength(1) + matrY.GetLength(1) - 1]; for (int i = 0; i < arrSY.Length - 1; i++) { arrSYX[i] = arrSY[i + 1]; } for (int i = 0; i < arrSX.Length; i++) { arrSYX[arrSY.Length - 1 + i] = arrSX[i]; } Regression reg = new Regression(arrSY[0], arrSYX); repCorrXY = reg.GetCorrReport().Replace("<P>ПОКАЗАТЕЛЬ: y<sub>1</sub><BR>", ""); if (cbG.Checked) { Quality.GenErr(matrX, matrY, arrReg, int.Parse(tbN.Text), double.Parse(tbA.Text), double.Parse(tbB.Text), out arrI, out matrXM, out matrYM); repGen += string.Format("ПАРАМЕТРЫ ГЕНЕРАЦИИ<br>n = {0}<br>A = {1}<br>B = {2}<br><br>", tbN.Text, tbA.Text, tbB.Text); repGen += "ПЕРЕЧЕНЬ ИЗМЕНЕННЫХ НАБЛЮДЕНИЙ<br>"; foreach (int i in arrI) { repGen += string.Format("{0} ", i + 1); } } else { matrXM = matrX; matrYM = matrY; } DialogResult = DialogResult.OK; Close(); } catch { MessageBox.Show("Ошибка генерации"); } }
void btnOpt_Click(object sender, EventArgs e) { string rep = ""; Variable[] arrQ, arrU; Import(out arrQ, out arrU); Sample[] arrSmp = new Sample[arrU.Length]; double[][] arrCoeff = new double[arrQ.Length][]; for (int i = 0; i < arrU.Length; i++) { arrSmp[i] = new Sample(arrU[i].name, arrU[i].id, arrU[i].arr); } for (int i = 0; i < arrQ.Length; i++) { Sample[] arrTSmp = new Sample[arrSmp.Length]; for (int j = 0; j < arrTSmp.Length; j++) { arrTSmp[j] = new TranSample(arrSmp[j], dgvU[i + 2, j].Value.ToString()); } Sample smp = new Sample(arrQ[i].name, arrQ[i].id, arrQ[i].arr); Regression r = new Regression(smp, arrSmp); arrCoeff[i] = r.arrB; rep += r.GetRegReport() + "<br>"; } string[] arrStage = new string[dgvStage.Rows.Count]; for (int i = 0; i < arrStage.Length; i++) { arrStage[i] = dgvStage[0, i].Value.ToString(); } StageForm sf = new StageForm(arrStage); sf.ShowDialog(); List <string> lNU = new List <string>(), lU = new List <string>(); int k; for (k = 0; k < arrStage.Length; k++) { if (sf.stage == arrStage[k]) { break; } else { lNU.AddRange(dgvStage[1, k].Value.ToString().Split(new char[] { ' ', ',' }, StringSplitOptions.RemoveEmptyEntries)); } } ExpForm ef = new ExpForm(lNU.ToArray(), arrU); ef.ShowDialog(); for (int i = 0; i < arrU.Length; i++) { if (!lNU.Contains(string.Format("{0}", i + 1))) { lU.Add(arrU[i].name); } } int p = lU.Count, n = arrQ.Length; int[] arrI = new int[p], arrNI = new int[arrU.Length - p]; for (int i = 0; i < p; i++) { for (int j = 0; j < arrU.Length; j++) { if (arrU[j].name == lU[i]) { arrI[i] = j; break; } } } for (int i = 0; i < arrNI.Length; i++) { for (int j = 0; j < arrU.Length; j++) { if (arrU[j].name == lNU[i]) { arrNI[i] = j; break; } } } string[,] matrFunc = new string[p, n]; for (int i = 0; i < p; i++) { for (int j = 0; j < n; j++) { matrFunc[i, j] = dgvU[j + 2, arrI[i]].Value.ToString(); } } double[][] arrC = new double[n][]; for (int j = 0; j < n; j++) { arrC[j] = new double[p + 1]; double s = arrCoeff[j][0]; for (int i = 0; i < arrU.Length; i++) { for (k = 0; k < p; k++) { if (arrI[k] == i) { break; } } if (k < p) { arrC[j][k + 1] = arrCoeff[j][i + 1]; } else { for (k = 0; k < p; k++) { if (arrNI[k] == i) { break; } } s += arrCoeff[j][i + 1] * F(ef.arr[k], dgvU[j + 2, i].Value.ToString()); } } arrC[j][0] = s; } double[] arrUMin = new double[p], arrUMax = new double[p], arrUSMin = new double[p]; for (int i = 0; i < p; i++) { arrUMin[i] = double.Parse(dgvUParam[1, arrI[i]].Value.ToString()); arrUMax[i] = double.Parse(dgvUParam[2, arrI[i]].Value.ToString()); arrUSMin[i] = double.Parse(dgvUParam[3, arrI[i]].Value.ToString()); } double[] arrYOpt = new double[n], arrYMin = new double[n], arrYMax = new double[n], arrAlpha = new double[n]; for (int i = 0; i < n; i++) { arrYOpt[i] = double.Parse(dgvQParam[4, i].Value.ToString()); arrYMin[i] = double.Parse(dgvQParam[2, i].Value.ToString()); arrYMax[i] = double.Parse(dgvQParam[3, i].Value.ToString()); arrAlpha[i] = double.Parse(dgvQParam[1, i].Value.ToString()); } double R = double.Parse(tbR.Text); HJInitialParams init = new HJInitialParams(double.Parse(tbDU.Text), double.Parse(tbDF.Text), arrCoeff, matrFunc, arrUMin, arrUMax, arrUSMin, arrYOpt, arrYMin, arrYMax, arrAlpha, R); int iterNum = 0; List <HJIteration> lIter = new List <HJIteration>(); double[] arrX = new double[2 * p], arrXDelta = new double[2 * p]; double xEps = double.Parse(tbDU.Text); for (int i = 0; i < 2 * p; i++) { arrX[i] = 0.5; arrXDelta[i] = xEps; } HJIteration it = new HJIteration(arrX, arrXDelta); HJOptimizer opt = new HJOptimizer(); opt.Initialize(init); //double C = double.Parse(tbC.Text); double f = double.MaxValue, fEps = double.Parse(tbDF.Text); rep += "ОПТИМИЗАЦИЯ МЕТОДОМ ХУКА-ДЖИВСА<br><table border = 1 cellspacing = 0><tr>"; for (int i = 0; i < p; i++) { rep += "<td>" + lU[i]; } rep += "<td>Целевая функция"; rep += it.ToHtml(init, 3); //do { do { it = (HJIteration)opt.DoIteration(it); if (it == null) { break; } lIter.Add(it); iterNum++; rep += it.ToHtml(init, 3); }while (iterNum < 1000); //double FNext = lIter.Last().fRes; //if (Math.Abs(FNext - f) < fEps) // break; //f = FNext; //R *= C; //init = new HJInitialParams(double.Parse(tbDU.Text), double.Parse(tbDF.Text), // arrCoeff, matrFunc, arrUMin, arrUMax, arrUSMin, arrYOpt, arrYMin, arrYMax, arrAlpha, R); //it = new HJIteration(lIter.Last().arrX, arrXDelta); } //while (true); rep += "</table><br>"; rep += "РЕЗУЛЬТАТЫ ОПТИМИЗАЦИИ<br>"; for (int i = 0; i < p; i++) { rep += string.Format("m<sub>{0}</sub> = {1:f4}<br>", i + 1, lIter.Last().arrX[i]); } Random rnd = new Random(); for (int i = 0; i < p; i++) { rep += string.Format("s<sub>{0}</sub> = {1:f4}<br>", i + 1, lIter.Last().arrX[i + p]); } rep += string.Format("<br>Целевая функция:<br>F = {0:f4}<br>", init.GetFuncValue(lIter.Last().arrX)); rep += "<br>Значения параметров распределений показателей качества<br>"; for (int i = 0; i < n; i++) { rep += string.Format("mu<sub>{0}</sub> = {1:f4}<br>", i + 1, init.arrMu[i]); rep += string.Format("sigma<sub>{0}</sub> = {1:f4}<br>", i + 1, init.arrSigma[i]); } rep += "<br>Значения показателей качества<br>"; for (int i = 0; i < n; i++) { rep += string.Format("y<sub>{0}</sub> = {1:f4}<br>", i + 1, init.arrY[i]); } rep += "<br>Технологические факторы до и после оптимизации<br>"; rep += "Нормированные средние значения до и после оптимизации<table border = 1 cellspacing = 0><tr>" + "<td>Величина<td>Среднее до оптимизации<td>Среднее после оптимизации"; for (int i = 0; i < p; i++) { rep += string.Format("<tr><td>{0}<td>{1:f4}<td>{2:f4}", arrU[i].name, 0, lIter.Last().arrX[i]); } rep += "</table><br>Средние значения до и после оптимизации<table border = 1 cellspacing = 0><tr>" + "<td>Величина<td>Среднее до оптимизации<td>Среднее после оптимизации"; for (int i = 0; i < p; i++) { rep += string.Format("<tr><td>{0}<td>{1:f4}<td>{2:f4}", arrU[i].name, arrU[i].Inv(0), arrU[i].Inv(lIter.Last().arrX[i])); } rep += "</table><br>Нормированные средние квадратические отклонения до и после оптимизации<table border = 1 cellspacing = 0><tr>" + "<td>Величина<td>СКО до оптимизации<td>СКО после оптимизации"; for (int i = 0; i < p; i++) { rep += string.Format("<tr><td>{0}<td>{1:f4}<td>{2:f4}", arrU[i].name, 1, lIter.Last().arrX[p + i]); } rep += "</table><br>Средние квадратические отклонения до и после оптимизации<table border = 1 cellspacing = 0><tr>" + "<td>Величина<td>СКО до оптимизации<td>СКО после оптимизации"; for (int i = 0; i < p; i++) { rep += string.Format("<tr><td>{0}<td>{1:f4}<td>{2:f4}", arrU[i].name, arrU[i].sigma, arrU[i].sigma * lIter.Last().arrX[p + i]); } rep += "</table>"; rep += "<br>Показатели качества до и после оптимизации<br>"; rep += "Нормированные средние значения до и после оптимизации<table border = 1 cellspacing = 0><tr>" + "<td>Величина<td>Среднее до оптимизации<td>Среднее после оптимизации"; for (int i = 0; i < n; i++) { rep += string.Format("<tr><td>{0}<td>{1:f4}<td>{2:f4}", arrQ[i].name, 0, init.arrMu[i]); } rep += "</table><br>Средние значения до и после оптимизации<table border = 1 cellspacing = 0><tr>" + "<td>Величина<td>Среднее до оптимизации<td>Среднее после оптимизации"; for (int i = 0; i < n; i++) { rep += string.Format("<tr><td>{0}<td>{1:f4}<td>{2:f4}", arrQ[i].name, arrQ[i].Inv(0), arrQ[i].Inv(init.arrMu[i])); } rep += "</table><br>Нормированные средние квадратические отклонения до и после оптимизации<table border = 1 cellspacing = 0><tr>" + "<td>Величина<td>СКО до оптимизации<td>СКО после оптимизации"; for (int i = 0; i < n; i++) { rep += string.Format("<tr><td>{0}<td>{1:f4}<td>{2:f4}", arrQ[i].name, 1, init.arrSigma[i]); } rep += "</table><br>Средние квадратические отклонения до и после оптимизации<table border = 1 cellspacing = 0><tr>" + "<td>Величина<td>СКО до оптимизации<td>СКО после оптимизации"; for (int i = 0; i < n; i++) { rep += string.Format("<tr><td>{0}<td>{1:f4}<td>{2:f4}", arrQ[i].name, arrQ[i].sigma, arrQ[i].sigma * init.arrSigma[i]); } rep += "</table>"; List <Sample> lSmp = new List <Sample>(); for (int i = 1; i < arrQ.Length; i++) { lSmp.Add(new Sample(arrQ[i].name, string.Format("y{0}", i + 1), arrQ[i].arr)); } lSmp.AddRange(arrSmp); Regression reg = new Regression(new Sample(arrQ[0].name, "y0", arrQ[0].arr), lSmp.ToArray()); rep += reg.GetCorrReport(); ResForm rf = new ResForm(rep); rf.Show(); List <double[]> lArr = new List <double[]>(); List <string> lName = new List <string>(); List <double> lMu = new List <double>(), lSigma = new List <double>(); for (int i = 0; i < arrU.Length; i++) { lName.Add(arrU[i].name); lMu.Add(arrU[i].Inv(lIter.Last().arrX[i])); lSigma.Add(arrU[i].sigma * lIter.Last().arrX[i + p]); double[] arr = new double[arrU[i].arr.Length]; for (int j = 0; j < arr.Length; j++) { arr[j] = arrU[i].Inv(arrU[i].arr[j]); } lArr.Add(arr); } for (int i = 0; i < arrQ.Length; i++) { lName.Add(arrQ[i].name); lMu.Add(arrQ[i].Inv(init.arrMu[i])); lSigma.Add(arrQ[i].sigma * init.arrSigma[i]); double[] arr = new double[arrQ[i].arr.Length]; for (int j = 0; j < arr.Length; j++) { arr[j] = arrQ[i].Inv(arrQ[i].arr[j]); } lArr.Add(arr); } DistForm df = new DistForm(lName.ToArray(), lArr.ToArray(), lMu.ToArray(), lSigma.ToArray()); df.Show(); }
void btnOpt_Click(object sender, EventArgs e) { Variable[] arrQ, arrU; Import(out arrQ, out arrU); Sample[] arrSmp = new Sample[arrU.Length]; double[][] arrCoeff = new double[arrQ.Length][]; for (int i = 0; i < arrU.Length; i++) { arrSmp[i] = new Sample(arrU[i].name, arrU[i].id, arrU[i].arr); } for (int i = 0; i < arrQ.Length; i++) { Sample[] arrTSmp = new Sample[arrSmp.Length]; for (int j = 0; j < arrTSmp.Length; j++) { arrTSmp[j] = new TranSample(arrSmp[j], dgvU[i + 1, j].Value.ToString()); } Sample smp = new Sample(arrQ[i].name, arrQ[i].id, arrQ[i].arr); Regression r = new Regression(smp, arrSmp); arrCoeff[i] = r.arrB; } string[][] arrF = new string[arrQ.Length][]; for (int i = 0; i < arrF.Length; i++) { arrF[i] = new string[arrU.Length]; for (int j = 0; j < arrU.Length; j++) { arrF[i][j] = dgvU[i + 1, j].Value.ToString(); } } int[] arrN = new int[arrQ.Length + arrU.Length]; for (int i = 0; i < arrN.Length; i++) { arrN[i] = int.Parse(dgvParam[1, i].Value.ToString()); } double[,] mData = Data(arrQ, arrU, arrN); int iQ = int.Parse(tbIQ.Text), N = int.Parse(tbN.Text); double eMin = double.Parse(tbEMin.Text), eMax = double.Parse(tbEMax.Text); DataForm df = new DataForm(mData, arrU.Length, iQ, arrU, arrQ[iQ]); df.ShowDialog(); int iOpt = df.listBox1.SelectedIndex; List <double[]> listArrE = new List <double[]>(), listArrV = new List <double[]>(); List <int> lIndex = new List <int>(); for (int i = 0; i < N; i++) { double[] arr1, arr2; lIndex.Add(Calc(arrCoeff, arrF, mData, iOpt, iQ, eMin, eMax, out arr1, out arr2)); listArrE.Add(arr1); listArrV.Add(arr2); } ResDataForm rf = new ResDataForm(mData, arrU.Length, iQ, arrU, arrQ[iQ], iOpt, lIndex.ToArray(), listArrE, listArrV); rf.ShowDialog(); List <Variable> listV = new List <Variable>(arrU); listV.AddRange(arrQ); HistForm hf = new HistForm(listV.ToArray(), mData, lIndex.ToArray(), arrN); hf.ShowDialog(); /*string rep = ""; * Variable[] arrQ, arrU; * Import(out arrQ, out arrU); * Sample[] arrSmp = new Sample[arrU.Length]; * double[][] arrCoeff = new double[arrQ.Length][]; * for (int i = 0; i < arrU.Length; i++) * arrSmp[i] = new Sample(arrU[i].name, arrU[i].id, arrU[i].arr); * for (int i = 0; i < arrQ.Length; i++) * { * Sample[] arrTSmp = new Sample[arrSmp.Length]; * for (int j = 0; j < arrTSmp.Length; j++) * arrTSmp[j] = new TranSample(arrSmp[j], dgvU[i + 1, j].Value.ToString()); * Sample smp = new Sample(arrQ[i].name, arrQ[i].id, arrQ[i].arr); * Regression r = new Regression(smp, arrSmp); * arrCoeff[i] = r.arrB; * rep += r.GetRegReport() + "<br>"; * } * string[] arrStage = new string[dgvStage.Rows.Count - 1]; * for (int i = 0; i < arrStage.Length; i++) * arrStage[i] = dgvStage[0, i].Value.ToString(); * StageForm sf = new StageForm(arrStage); * sf.ShowDialog(); * List<string> lNU = new List<string>(), lU = new List<string>(); * int k; * for (k = 0; k < arrStage.Length; k++) * if (sf.stage == arrStage[k]) * break; * else * lNU.AddRange(dgvStage[1, k].Value.ToString().Split(new char[] { ' ', ',' }, * StringSplitOptions.RemoveEmptyEntries)); * ExpForm ef = new ExpForm(lNU.ToArray()); * ef.ShowDialog(); * for (int i = 0; i < arrU.Length; i++) * if (!lNU.Contains(arrU[i].name)) * lU.Add(arrU[i].name); * int p = lU.Count, n = arrQ.Length; * int[] arrI = new int[p], arrNI = new int[arrU.Length - p]; * for (int i = 0; i < p; i++) * for (int j = 0; j < arrU.Length; j++) * if (arrU[j].name == lU[i]) * { * arrI[i] = j; * break; * } * for (int i = 0; i < arrNI.Length; i++) * for (int j = 0; j < arrU.Length; j++) * if (arrU[j].name == lNU[i]) * { * arrNI[i] = j; * break; * } * string[,] matrFunc = new string[p, n]; * for (int i = 0; i < p; i++) * for (int j = 0; j < n; j++) * matrFunc[i, j] = dgvU[j + 1, arrI[i]].Value.ToString(); * double[][] arrC = new double[n][]; * for (int j = 0; j < n; j++) * { * arrC[j] = new double[p + 1]; * double s = arrCoeff[j][0]; * for (int i = 0; i < arrU.Length; i++) * { * for (k = 0; k < p; k++) * if (arrI[k] == i) * break; * if (k < p) * arrC[j][k + 1] = arrCoeff[j][i + 1]; * else * { * for (k = 0; k < p; k++) * if (arrNI[k] == i) * break; * s += arrCoeff[j][i + 1] * F(ef.arr[k], dgvU[j + 1, i].Value.ToString()); * } * } * arrC[j][0] = s; * } * double[] arrUMin = new double[p], arrUMax = new double[p], arrUSMin = new double[p]; * for (int i = 0; i < p; i++) * { * arrUMin[i] = double.Parse(dgvParam[1, arrI[i]].Value.ToString()); * arrUMax[i] = double.Parse(dgvParam[2, arrI[i]].Value.ToString()); * arrUSMin[i] = double.Parse(dgvParam[3, arrI[i]].Value.ToString()); * } * double[] arrMuOpt = new double[n], arrSigmaOpt = new double[n], arrAlpha = new double[n]; * for (int i = 0; i < n; i++) * { * arrMuOpt[i] = double.Parse(dgvQParam[1, i].Value.ToString()); * arrSigmaOpt[i] = double.Parse(dgvQParam[2, i].Value.ToString()); * arrAlpha[i] = double.Parse(dgvQParam[3, i].Value.ToString()); * } * double R = double.Parse(tbN.Text); * HJInitialParams init = new HJInitialParams(double.Parse(tbEMax.Text), double.Parse(tbDF.Text), * arrCoeff, matrFunc, arrUMin, arrUMax, arrUSMin, arrMuOpt, arrSigmaOpt, arrAlpha, R); * int iterNum = 0; * List<HJIteration> lIter = new List<HJIteration>(); * double[] arrX = new double[2 * p], arrXDelta = new double[2 * p]; * double xEps = double.Parse(tbEMax.Text); * for (int i = 0; i < 2 * p; i++) * { * arrX[i] = 0.5; * arrXDelta[i] = xEps; * } * HJIteration it = new HJIteration(arrX, arrXDelta); * HJOptimizer opt = new HJOptimizer(); * opt.Initialize(init); * double C = double.Parse(tbEMin.Text); * double f = double.MaxValue, fEps = double.Parse(tbDF.Text); * rep += "ОПТИМИЗАЦИЯ МЕТОДОМ ХУКА-ДЖИВСА<br>"; * do * { * do * { * it = (HJIteration)opt.DoIteration(it); * if (it == null) * break; * lIter.Add(it); * iterNum++; * rep += it.ToHtml(init, 3); * } * while (iterNum < 100); * double FNext = lIter.Last().fRes; * if (Math.Abs(FNext - f) < fEps) * break; * f = FNext; * R *= C; * init = new HJInitialParams(double.Parse(tbEMax.Text), double.Parse(tbDF.Text), * arrCoeff, matrFunc, arrUMin, arrUMax, arrUSMin, arrMuOpt, arrSigmaOpt, arrAlpha, R); * it = new HJIteration(lIter.Last().arrX, arrXDelta); * } * while (true); * rep += "РЕЗУЛЬТАТЫ ОПТИМИЗАЦИИ<br>"; * for (int i = 0; i < p; i++) * rep += string.Format("m{0} = {1:g4}<br>", i + 1, lIter.Last().arrX[i]); * Random rnd = new Random(); * for (int i = 0; i < p; i++) * rep += string.Format("s{0} = {1:g4}<br>", i + 1, Math.Abs(lIter.Last().arrX[i + p])); * rep += string.Format("<br>Целевая функция:<br>F = {0:g4}", init.GetFuncValue(lIter.Last().arrX));//rnd.Next(100) / 100.0); * * rep += "<br>Значения параметров распределений показателей качества<br>"; * for (int i = 0; i < n; i++) * { * rep += string.Format("mu{0} = {1:g4}<br>", i + 1, arrMuOpt[i] + rnd.Next(0, 100) / 1000.0); * rep += string.Format("sigma{0} = {1:g4}<br>", i + 1, arrSigmaOpt[i] + rnd.Next(0, 100) / 1000.0); * } * ResForm rf = new ResForm(rep); * rf.Show();*/ }