コード例 #1
0
        //响应概率计算
        public ActionResult ResponseProbabilityCalculate(int dop_id, double fq, double favg, double fsigma)
        {
            DoptimizeExperimentTable det = dbDrive.GetDoptimizeExperimentTable(dop_id);
            var lr = DoptimizePublic.SelectState(det);

            return(Json(lr.ResponseProbabilityCalculate(fq, favg, fsigma).ToString("f6")));
        }
コード例 #2
0
        public static DoptimizationAlgorithm SelectState(DoptimizeExperimentTable det)
        {
            IDoptimizationDistributionSelection distributionSelection = null;
            LangleyMethodStandardSelection      langleyMethod         = null;

            if (det.det_DistributionState == 0)
            {
                distributionSelection = new Dop_Noraml();
            }
            else if (det.det_DistributionState == 1)
            {
                distributionSelection = new Dop_Logistic();
            }

            if (det.det_StandardState == 0)
            {
                langleyMethod = new Standard();
            }
            else if (det.det_StandardState == 1)
            {
                langleyMethod = new Ln();
            }
            else if (det.det_StandardState == 2)
            {
                langleyMethod = new Log();
            }
            else if (det.det_StandardState == 3)
            {
                langleyMethod = new Pow(double.Parse(det.det_Power));
            }

            return(new DoptimizationAlgorithm(distributionSelection, langleyMethod));
        }
コード例 #3
0
        // GET: DoptimizeExperiment
        //D优化法实验
        public ActionResult DoptimizeExperiment(int dop_id)
        {
            DoptimizeExperimentModel  doptimizeExperimentModel = new DoptimizeExperimentModel();
            DoptimizeExperimentTable  det      = dbDrive.GetDoptimizeExperimentTable(dop_id);
            List <DoptimizeDataTable> ddt_list = dbDrive.GetDoptimizeDataTables(dop_id);

            doptimizeExperimentModel.doptimizeNameSeting = DoptimizePublic.DistributionState(det);
            doptimizeExperimentModel.sq  = ddt_list[ddt_list.Count - 1].ddt_StimulusQuantity;
            doptimizeExperimentModel.det = det;
            return(View(doptimizeExperimentModel));
        }
コード例 #4
0
 public override bool Insert(DoptimizeExperimentTable det)
 {
     try
     {
         db.DoptimizeExperimentTable.Add(det);
         db.SaveChanges();
     }
     catch (Exception)
     {
         return(false);
     }
     return(true);
 }
コード例 #5
0
        //导出excel
        public JsonResult ExportXls(int DoptimizeExpTableId)
        {
            var strFullName = "";

            try
            {
                DoptimizeExperimentTable  doptimizeExperimentTable = dbDrive.GetDoptimizeExperimentTable(DoptimizeExpTableId);
                List <DoptimizeDataTable> ddts = dbDrive.GetDoptimizeDataTables(doptimizeExperimentTable.det_Id);
                strFullName = FreeSpire.DoptimizeFreeSpireExcel(doptimizeExperimentTable, ddts);
            }
            catch (Exception ex) { }
            return(Json(strFullName, JsonRequestBehavior.AllowGet));
        }
コード例 #6
0
        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)));
        }
コード例 #7
0
        //批量区间估计
        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));
        }
コード例 #8
0
        private static Doptimization_list GetDoptimization(DoptimizeExperimentTable det)
        {
            Doptimization_list doptimization_List = new Doptimization_list();

            doptimization_List.Id = det.det_Id;
            doptimization_List.PrecisionInstruments      = det.det_PrecisionInstruments;
            doptimization_List.StimulusQuantityFloor     = det.det_StimulusQuantityFloor;
            doptimization_List.StimulusQuantityCeiling   = det.det_StimulusQuantityCeiling;
            doptimization_List.DistributionState         = DistributionState(det);
            doptimization_List.FlipTheResponse           = det.det_FlipTheResponse;
            doptimization_List.ExperimentalDate          = det.det_ExperimentalDate.ToString();
            doptimization_List.StandardDeviationEstimate = det.det_StandardDeviationEstimate;
            doptimization_List.projectname = det.det_ProductName;
            return(doptimization_List);
        }
コード例 #9
0
        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));
        }
コード例 #10
0
        public override bool Delete(DoptimizeExperimentTable det)
        {
            DoptimizeExperimentTable modle = db.DoptimizeExperimentTable.FirstOrDefault(m => m.det_Id == det.det_Id);

            if (modle == null)
            {
                return(false);
            }
            try
            {
                db.DoptimizeExperimentTable.Remove(modle);
                db.SaveChanges();
            }
            catch (Exception)
            {
                return(false);
            }
            return(true);
        }
コード例 #11
0
 public override bool Update(DoptimizeExperimentTable det)
 {
     try
     {
         var entry = db.Set <DoptimizeExperimentTable>().Find(det.det_Id);
         if (entry != null)
         {
             db.Entry <DoptimizeExperimentTable>(entry).State = EntityState.Detached; //这个是在同一个上下文能修改的关键
         }
         db.DoptimizeExperimentTable.Attach(det);
         db.Entry(det).State = EntityState.Modified;
         db.SaveChanges();
     }
     catch (Exception)
     {
         return(false);
     }
     return(true);
 }
コード例 #12
0
        public JsonResult DoptimizeParameterSettingsJson()
        {
            double[]                 xArray = { };
            int[]                    vArray = { };
            var                      str    = new StreamReader(Request.InputStream);
            var                      stream = str.ReadToEnd();
            JavaScriptSerializer     js     = new JavaScriptSerializer();
            DoptimizeExperimentTable det    = js.Deserialize <DoptimizeExperimentTable>(stream);

            det.det_ExperimentalDate = DateTime.Now;
            det.det_RecordEmployeeId = LangleyPublic.adminId;
            dbDrive.Insert(det);
            var    outputParameter = DoptimizePublic.SelectState(det).GetResult(xArray, vArray, det.det_StimulusQuantityFloor, det.det_StimulusQuantityCeiling, det.det_PrecisionInstruments, out double z, det.det_StandardDeviationEstimate);
            bool   isTure          = dbDrive.Insert(DoptimizePublic.DoptimizeDataTable(det.det_Id, dbDrive, z, outputParameter));
            string name            = det.det_ProductName;

            string[] value = { isTure.ToString(), det.det_Id.ToString(), name };
            return(Json(value));
        }
コード例 #13
0
ファイル: IDbDrive.cs プロジェクト: hongyemahua/WsSensitivity
 public abstract bool Insert(DoptimizeExperimentTable det);
コード例 #14
0
ファイル: IDbDrive.cs プロジェクト: hongyemahua/WsSensitivity
 public abstract bool Delete(DoptimizeExperimentTable det);
コード例 #15
0
        public static List <DoptimizeExperimentRecoed> DoptimizeExperimentRecoedsList(List <DoptimizeDataTable> ddt_list, DoptimizeExperimentTable det)
        {
            List <DoptimizeExperimentRecoed> der_list = new List <DoptimizeExperimentRecoed>();

            for (int i = 0; i < ddt_list.Count; i++)
            {
                DoptimizeExperimentRecoed der = new DoptimizeExperimentRecoed();
                der.stimulusQuantity = ddt_list[i].ddt_StimulusQuantity;
                der.response         = der.Filp(ddt_list[i].ddt_Response, det.det_FlipTheResponse);
                der_list.Add(der);
            }
            return(der_list);
        }
コード例 #16
0
        public static string DistributionState(DoptimizeExperimentTable det)
        {
            LangleyAlgorithm lr = SelectState(det);

            return(lr.Discription());
        }
コード例 #17
0
        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);
        }
コード例 #18
0
        public override DoptimizeExperimentTable GetDoptimizeExperimentTable(int id)
        {
            DoptimizeExperimentTable det = db.DoptimizeExperimentTable.Where(m => m.det_Id == id).First();

            return(det);
        }
コード例 #19
0
ファイル: IDbDrive.cs プロジェクト: hongyemahua/WsSensitivity
 public abstract bool Update(DoptimizeExperimentTable det);