public ActionResult ResponsePointIntervalEstimate(int dop_id, double reponseProbability2, double confidenceLevel2, double cjl, double favg, double fsigma) { DoptimizeExperimentTable det = dbDrive.GetDoptimizeExperimentTable(dop_id); List <DoptimizeDataTable> ddt_list = dbDrive.GetDoptimizeDataTables(dop_id); ddt_list.RemoveRange(ddt_list.Count - 1, 1); var der_list = DoptimizePublic.DoptimizeExperimentRecoedsList(ddt_list, det); var xAndV = DoptimizePublic.ReturnXarrayAndVarray(der_list); var lr = DoptimizePublic.SelectState(det); var ies = lr.ResponsePointIntervalEstimate(xAndV.xArray, xAndV.vArray, reponseProbability2, confidenceLevel2, cjl, favg, fsigma); return(Json(DoptimizePublic.GetIntervalEstimateValue(ies))); }
//批量区间估计 public ActionResult BatchIntervalCalculation(double BatchConfidenceLevel, double yMin, double yMax, int Y_Axis, int intervalTypeSelection, double favg, double fsigma, int dop_id) { DoptimizeExperimentTable det = dbDrive.GetDoptimizeExperimentTable(dop_id); List <DoptimizeDataTable> ddt_list = dbDrive.GetDoptimizeDataTables(dop_id); ddt_list.RemoveRange(ddt_list.Count - 1, 1); var der_list = DoptimizePublic.DoptimizeExperimentRecoedsList(ddt_list, det); var xAndV = DoptimizePublic.ReturnXarrayAndVarray(der_list); var lr = DoptimizePublic.SelectState(det); var srd = lr.BatchIntervalCalculate(yMax, yMin, Y_Axis, BatchConfidenceLevel, favg, fsigma, xAndV.xArray, xAndV.vArray, intervalTypeSelection); LangleyPublic.sideReturnData = srd; LangleyPublic.aArray.Clear(); LangleyPublic.bArray.Clear(); LangleyPublic.cArray.Clear(); double ceiling = srd.responsePoints.Min(); double lower = srd.responsePoints.Max(); for (int i = 0; i < srd.responseProbability.Length; i++) { LangleyPublic.aArray.Add("[" + srd.responsePoints[i] + "," + srd.responseProbability[i] + "]"); if (double.IsInfinity(srd.Y_Ceilings[i])) { LangleyPublic.bArray.Add("[" + lower + "," + srd.responseProbability[i] + "]"); } else { LangleyPublic.bArray.Add("[" + srd.Y_Ceilings[i] + "," + srd.responseProbability[i] + "]"); } if (double.IsInfinity(srd.Y_LowerLimits[i])) { LangleyPublic.cArray.Add("[" + ceiling + "," + srd.responseProbability[i] + "]"); } else { LangleyPublic.cArray.Add("[" + srd.Y_LowerLimits[i] + "," + srd.responseProbability[i] + "]"); } } if (intervalTypeSelection == 0) { LangleyPublic.incredibleIntervalType = "拟然比区间计算-单侧置信区间"; } else { LangleyPublic.incredibleIntervalType = "拟然比区间计算-双侧置信区间"; } LangleyPublic.incredibleLevelName = BatchConfidenceLevel.ToString(); return(Json(true)); }
public JsonResult InsertData(int dop_id, string response, string sq) { DoptimizeExperimentTable det = dbDrive.GetDoptimizeExperimentTable(dop_id); List <DoptimizeDataTable> ddt_list = dbDrive.GetDoptimizeDataTables(dop_id); ddt_list[ddt_list.Count - 1].ddt_StimulusQuantity = sq != "" ? double.Parse(sq) : ddt_list[ddt_list.Count - 1].ddt_StimulusQuantity; ddt_list[ddt_list.Count - 1].ddt_Response = int.Parse(response); var der_list = DoptimizePublic.DoptimizeExperimentRecoedsList(ddt_list, det); var xAndV = DoptimizePublic.ReturnXarrayAndVarray(der_list); var outputParameter = DoptimizePublic.SelectState(det).GetResult(xAndV.xArray, xAndV.vArray, det.det_StimulusQuantityFloor, det.det_StimulusQuantityCeiling, det.det_PrecisionInstruments, out double z, ddt_list[ddt_list.Count - 1].ddt_SigmaGuess); DoptimizeDataTable ddt = ddt_list[ddt_list.Count - 1]; DoptimizePublic.UpdateDoptimizeDataTable(ref ddt, outputParameter, response, sq); dbDrive.Update(ddt); bool isTurn = dbDrive.Insert(DoptimizePublic.DoptimizeDataTable(det.det_Id, dbDrive, double.Parse(z.ToString("f6")), outputParameter)); string[] value = { isTurn.ToString(), ddt_list.Count.ToString(), z.ToString() }; return(Json(value)); }
public static string DoptimizeFreeSpireExcel(DoptimizeExperimentTable doptimizeExperimentTable, List <DoptimizeDataTable> ddts) { var lr = DoptimizePublic.SelectState(doptimizeExperimentTable); ddts.RemoveRange(ddts.Count - 1, 1); var der_list = DoptimizePublic.DoptimizeExperimentRecoedsList(ddts, doptimizeExperimentTable); var xOrVArray = DoptimizePublic.ReturnXarrayAndVarray(der_list); Workbook book = new Workbook(); Worksheet sheet = book.Worksheets[0]; var iCellcount = 1; //1.设置表头 sheet.Range[1, iCellcount++].Text = "D-优化法感度试验数据记录及处理结果"; sheet.Range["A1:H1"].Merge(); sheet.Range["A1:H1"].Style.HorizontalAlignment = HorizontalAlignType.Center; sheet.Range["E2"].Text = "打印时间"; sheet.Range["F2:H2"].Text = DateTime.Now.ToString("yyyy-MM-dd"); sheet.Range["F2:H2"].Merge(); sheet.Range["A3"].Text = "样本名称"; sheet.Range["B3:D3"].Text = doptimizeExperimentTable.det_ProductName; sheet.Range["B3:D3"].Merge(); sheet.Range["E3"].Text = "试验时间"; sheet.Range["F3:H3"].Text = doptimizeExperimentTable.det_ExperimentalDate.ToString("yyyy-MM-dd HH:mm"); sheet.Range["F3:H3"].Merge(); sheet.Range["A4"].Text = "实验数量"; sheet.Range["B4"].Text = ddts.Count.ToString(); sheet.Range["C4"].Text = "分辨率"; sheet.Range["D4"].Text = doptimizeExperimentTable.det_PrecisionInstruments.ToString(); sheet.Range["E4"].Text = "发布选择"; sheet.Range["F4:H4"].Text = DoptimizePublic.DistributionState(doptimizeExperimentTable); sheet.Range["F4:H4"].Merge(); sheet.Range["A5"].Text = "刺激量上限"; sheet.Range["B5"].Text = doptimizeExperimentTable.det_StimulusQuantityCeiling.ToString(); sheet.Range["C5"].Text = "刺激量下限"; sheet.Range["D5"].Text = doptimizeExperimentTable.det_StimulusQuantityFloor.ToString(); sheet.Range["E5"].Text = "预估值"; sheet.Range["F5"].Text = doptimizeExperimentTable.det_StandardDeviationEstimate.ToString(); sheet.Range["G5"].Text = "翻转响应"; sheet.Range["H5"].Text = doptimizeExperimentTable.det_FlipTheResponse == 1 ? "是" : "否"; sheet.Range["A6"].Text = "技术条件"; sheet.Range["B6:H6"].Text = doptimizeExperimentTable.det_TechnicalConditions; sheet.Range["B6:H6"].Merge(); if (doptimizeExperimentTable.det_FlipTheResponse == 0) { sheet.Range["A7:H7"].Text = "标记:发火:“1”,不发火:“0”;"; } else { sheet.Range["A7:H7"].Text = "标记:发火:“0”,不发火:“1”;"; } TableHead(sheet); int count = 9; for (int i = 0; i < ddts.Count; i++) { sheet.Range["A" + count + ""].Text = (i + 1).ToString(); sheet.Range["B" + count + ":C" + count + ""].Text = ddts[i].ddt_StimulusQuantity.ToString(); sheet.Range["B" + count + ":C" + count + ""].Merge(); sheet.Range["D" + count + ""].Text = ddts[i].ddt_Response.ToString(); sheet.Range["E" + count + ":F" + count + ""].Text = ddts[i].ddt_Mean.ToString(); sheet.Range["E" + count + ":F" + count + ""].Merge(); sheet.Range["G" + count + ":H" + count + ""].Text = ddts[i].ddt_StandardDeviation.ToString(); sheet.Range["G" + count + ":H" + count + ""].Merge(); count++; } sheet.Range["A" + count + ""].Text = "点估计:"; sheet.Range["B" + count + ":D" + count + ""].Text = "均值:" + ddts[ddts.Count - 1].ddt_Mean + ""; sheet.Range["B" + count + ":D" + count + ""].Merge(); sheet.Range["E" + count + ":H" + count + ""].Text = "标准差:" + ddts[ddts.Count - 1].ddt_StandardDeviation + ""; sheet.Range["E" + count + ":H" + count + ""].Merge(); count++; var ignition99 = DoptimizeIgnition(ddts, lr, 0.99); var ignition1 = DoptimizeIgnition(ddts, lr, 0.01); var ignition999 = DoptimizeIgnition(ddts, lr, 0.999); var ignition01 = DoptimizeIgnition(ddts, lr, 0.001); var ignition9999 = DoptimizeIgnition(ddts, lr, 0.9999); var ignition001 = DoptimizeIgnition(ddts, lr, 0.0001); count = PointCalculation(count, ignition99, ignition1, ignition999, ignition01, ignition9999, ignition001, sheet); var ie = lr.GetIntervalEstimationValue(lr.DoubleSideEstimation(xOrVArray.xArray, xOrVArray.vArray, 0.999, 0.8)); var ie01 = lr.GetIntervalEstimationValue(lr.DoubleSideEstimation(xOrVArray.xArray, xOrVArray.vArray, 0.001, 0.8)); sheet.Range["A" + count + ""].Text = "区间估计:"; count = IntervalEstimation(count, sheet, ie, ie01, 0.8); ie = lr.GetIntervalEstimationValue(lr.DoubleSideEstimation(xOrVArray.xArray, xOrVArray.vArray, 0.999, 0.95)); ie01 = lr.GetIntervalEstimationValue(lr.DoubleSideEstimation(xOrVArray.xArray, xOrVArray.vArray, 0.001, 0.95)); count = IntervalEstimation(count, sheet, ie, ie01, 0.95); ie = lr.GetIntervalEstimationValue(lr.DoubleSideEstimation(xOrVArray.xArray, xOrVArray.vArray, 0.999, 0.99)); ie01 = lr.GetIntervalEstimationValue(lr.DoubleSideEstimation(xOrVArray.xArray, xOrVArray.vArray, 0.001, 0.99)); count = IntervalEstimation(count, sheet, ie, ie01, 0.99); sheet.Range["A3:H" + count + ""].BorderInside(LineStyleType.Thin, Color.Black); sheet.Range["A3:H" + count + ""].BorderAround(LineStyleType.Medium, Color.Black); count++; sheet.Range["B" + count + ""].Text = "复查人"; sheet.Range["F" + count + ""].Text = "试验人"; //设置行宽 sheet.Range["A1:H1"].RowHeight = 20; var strFullName = @"C:\D-优化法\" + "D-优化法" + DateTime.Now.ToString("yyyy-MM-dd-HH-mm-ss") + ".xlsx"; book.SaveToFile(strFullName, ExcelVersion.Version2010); return(strFullName); }