public static void Run() { UpdateExperimentResultsAndClear(); int experimentCount = 0; int.TryParse(ConfigurationManager.AppSettings["ExperimentCount"], out experimentCount); bool flag = false; List <TblProbabilityExperiment> lst = ProbabilityExperimentDS.GetForExperiment(experimentCount); foreach (TblProbabilityExperiment tblExp in lst) { DatabaseManagement dbManagement = new DatabaseManagement(); TblDatabaseManagement newDB = dbManagement.CreateForExperiment( "exp_" + tblExp.SupportProbability + "_" + tblExp.ConfidenceProbability , tblExp.MaxArity , tblExp.MaxVariablesInRelation , tblExp.SupportProbability , tblExp.ConfidenceProbability , tblExp.ProbabilityIncreaseByArity ); if (newDB != null) { flag = true; tblExp.FkDatabaseId = newDB.Id; ProbabilityExperimentDS.Update(tblExp); } } if (flag && MQGenerator.IsAutoRunJobs) { MQGenerator.StartDBProcess(); } }
public static void SendDBFinishedMail(TblDatabaseManagement tblDatabaseManagement) { string subject = string.Format("Database {0} done successfuly", tblDatabaseManagement.DbName); string body = ""; MailHelper.SendTextMailAsync(subject, body); }
public TblDatabaseManagement CreateForExperiment(string dbName, int maxArity, int maxVariableInRelation, int supportProbability, int confidenceProbability, int?probabilityIncreaseByArity ) { TblDatabaseManagement tblDatabaseManagement = new TblDatabaseManagement() { DbName = dbName, ConnectionString = "FOR_Experiment", SupportThreshold = 0, ConfidenceThreshold = 0, MaxArity = maxArity, FkStatusId = (int)StatusMQ.Received, MaxVariablesInRelation = maxVariableInRelation, ForExperiment = true, SupportProbability = supportProbability, ConfidenceProbability = confidenceProbability, ProbabilityIncreaseByArity = probabilityIncreaseByArity }; return(Create(tblDatabaseManagement)); }
private TblDatabaseManagement Create(TblDatabaseManagement tblDatabaseManagement) { DatabaseManagementsDS.Create(tblDatabaseManagement); MQGeneratorMail.SendDBInitializedMail(tblDatabaseManagement); return(tblDatabaseManagement); }
public static void Update(TblDatabaseManagement tblDatabaseManagement) { using (MetaqueriesContext context = new MetaqueriesContext()) { context.TblDatabaseManagements.Attach(tblDatabaseManagement); context.MarkAsModified(tblDatabaseManagement); context.SaveChanges(); } }
public static void Create(TblDatabaseManagement tblDatabaseManagement) { using (MetaqueriesContext context = new MetaqueriesContext()) { context.TblDatabaseManagements.Add(tblDatabaseManagement); context.MarkAsCreated(tblDatabaseManagement); context.SaveChanges(); } }
public static void StartExpandMQProcess() { List <TblMetaquery> lstMQ = MetaqueryDS.GetMQForExpand(); while (lstMQ.Count > 0) { foreach (TblMetaquery tblMetaquery in lstMQ) { TblDatabaseManagement curDB = tblMetaquery.TblDatabaseManagement; Metaquery metaqueryToExpand = new Metaquery(tblMetaquery.Metaquery); //create first level //int MaxVariablesInRelation = ProcessMQDetails.MaxVariablesInRelation; int maxVariables = curDB.MaxVariablesInRelation; ExpandType expandType = ExpandType.All; if (tblMetaquery.FkResult == (int)ResultMQ.SupportFailure) { expandType = ExpandType.NewRelationOnly; } if (tblMetaquery.FkResult == (int)ResultMQ.ConfidenceFailure) { expandType = ExpandType.InBodyOnly; } List <Metaquery> list = metaqueryToExpand.Expand(maxVariables, expandType); foreach (Metaquery mq in list) { TblMetaquery newTblMetaquery = new TblMetaquery() { Arity = mq.Arity, FkDatabaseId = curDB.Id, FkStatusId = (int)StatusDB.Received, Metaquery = mq.ToString() }; MetaqueryDS.Create(newTblMetaquery); } if (curDB.ForExperiment || tblMetaquery.FkResult != (int)ResultMQ.HasAnswers) { MetaqueryDS.UpdateStatus(tblMetaquery, StatusMQ.ExpandedAndDone); } else { MetaqueryDS.UpdateStatus(tblMetaquery, StatusMQ.Expanded); } } lstMQ = MetaqueryDS.GetMQForExpand(); } if (IsAutoRunJobs) { StartIncreaseDBArity(); } }
public static void UpdateStatus(TblDatabaseManagement tblDatabaseManagement, StatusDB newStatus) { tblDatabaseManagement.FkStatusId = (int)newStatus; if (newStatus == StatusDB.InProcess) { tblDatabaseManagement.StartTime = DateTime.Now; tblDatabaseManagement.CurrentArity = 2; } if (newStatus == StatusDB.Done) { tblDatabaseManagement.FinishTime = DateTime.Now; } Update(tblDatabaseManagement); }
public void ShowDBProperties(int dbID) { TblDatabaseManagement tblDatabaseManagement = DatabaseManagementsDS.Get(dbID); if (dbID > 0) { pnlDBProperties.Visible = true; pnlFilter.Visible = true; propMaxArity.ValueLabel = tblDatabaseManagement.MaxArity.ToString(); propCurrentArity.ValueLabel = tblDatabaseManagement.CurrentArity.ToString(); propSupportThreshold.ValueLabel = tblDatabaseManagement.SupportThreshold.ToString(); propConfidenceThreshold.ValueLabel = tblDatabaseManagement.ConfidenceThreshold.ToString(); propStatus.ValueLabel = tblDatabaseManagement.TblStatus.Description; if (tblDatabaseManagement.StartTime.HasValue) { propStartTime.ValueLabel = tblDatabaseManagement.StartTime.Value.ToString(Consts.DateTimeFormat); } else { propStartTime.ValueLabel = ""; } if (tblDatabaseManagement.FinishTime.HasValue) { propFinishTime.ValueLabel = tblDatabaseManagement.FinishTime.Value.ToString(Consts.DateTimeFormat); } else { propFinishTime.ValueLabel = ""; } propMaxColumn.ValueLabel = tblDatabaseManagement.MaxVariablesInRelation.ToString(); } else { pnlDBProperties.Visible = false; pnlFilter.Visible = false; } }
public bool Create(string dbName, string connectionString, decimal supportThreshold, decimal confidenceThreshold, int maxArity ) { int maxVariableInRelation = 0; ProcessingModelDS modelDS = new ProcessingModelDS(connectionString); int demoDbMaxCol = 0; int.TryParse(ConfigurationManager.AppSettings["DemoDbMaxCol"], out demoDbMaxCol); if (demoDbMaxCol > 0) { maxVariableInRelation = demoDbMaxCol; } else { maxVariableInRelation = modelDS.GetMaxVariablesInRelation(); } TblDatabaseManagement tblDatabaseManagement = new TblDatabaseManagement() { DbName = dbName, ConnectionString = connectionString, SupportThreshold = supportThreshold, ConfidenceThreshold = confidenceThreshold, MaxArity = maxArity, FkStatusId = (int)StatusMQ.Received, MaxVariablesInRelation = maxVariableInRelation, ForExperiment = false }; Create(tblDatabaseManagement); return(true); }
public static int StartSendMQToSolver() { List <TblMetaquery> lstMQ = MetaqueryDS.GetMQForSendToSolver(); int count = 0; bool doStartExpandMQProcess = false, doStartIncreaseDBArity = false; while (lstMQ.Count > 0) { RabbitProducer <string> producer = null; foreach (TblMetaquery tblMetaquery in lstMQ) { TblDatabaseManagement curDB = tblMetaquery.TblDatabaseManagement; if (!curDB.ForExperiment) { if (producer == null) { string queueToMQSolverName = ConfigurationManager.AppSettings["QueueToMQSolverName"]; producer = new RabbitProducer <string>(queueToMQSolverName); } Metaquery metaquery = new Metaquery(tblMetaquery.Metaquery); //שליחה לסולבר SendMQMessage message = new SendMQMessage() { ID = tblMetaquery.Id, SupportThreshold = curDB.SupportThreshold, ConfidenceThreshold = curDB.ConfidenceThreshold, Head = metaquery.Head.Variables, Body = metaquery.Body.GetVariables() }; string strMessage = message.ToJson(); //JsonConvert.SerializeObject(message); producer.SendMessage(strMessage); MetaqueryDS.UpdateStatus(tblMetaquery, StatusMQ.WaitingToSolver); } else { RandomMQProbability randomMQProbability = new RandomMQProbability(curDB.SupportProbability.Value, curDB.ConfidenceProbability.Value, curDB.ProbabilityIncreaseByArity ?? 0, tblMetaquery.Arity); tblMetaquery.FkResult = (int)randomMQProbability.GetRandomResultMQ(); StatusMQ statusMQ = (tblMetaquery.IsExpanded || tblMetaquery.Arity == tblMetaquery.TblDatabaseManagement.MaxArity ? StatusMQ.Done : StatusMQ.WaitingToExpand); MetaqueryDS.UpdateStatus(tblMetaquery, statusMQ); if (statusMQ == StatusMQ.WaitingToExpand) { doStartExpandMQProcess = true; } else if (statusMQ == StatusMQ.Done) { doStartIncreaseDBArity = true; } } count++; } lstMQ = MetaqueryDS.GetMQForSendToSolver(); } if (MQGenerator.IsAutoRunJobs) { if (doStartExpandMQProcess) { MQGenerator.StartExpandMQProcess(); } else if (doStartIncreaseDBArity) { MQGenerator.StartIncreaseDBArity(); } } return(count); }