Пример #1
0
main()
{
    //创建负责读取输入的线程
    DWORD ThreadID = 1, ThreadID1 = 2;
    HANDLE hRead, hRead1;

    initialize();//初始化数据

    hMutex = CreateMutex(NULL, FALSE, NULL);//创建互斥对象

    //建立两个线程
    hRead = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)getInput, NULL, 0, &ThreadID);//接受键盘输入
    hRead1 = CreateThread(NULL, 0, (LPTHREAD_START_ROUTINE)IO, NULL, 0, &ThreadID1);//接受屏幕输入和dos输出

    while (1)//不断重复判断电梯运行情况
    {

        state_trans(); //根据自动机模型和control()计算出的电梯目标楼层和运行方向决定此刻电梯的状态
        control();   //根据当前策略决定此刻电梯目标楼层和运行方向

        if (startexit == 1)//检测到图形界面关闭 return退出
        {
            return 0;
        }
    }
}
Пример #2
0
void HMMDataSet::read(int idAction){ 
    openMysqlSession();
    
    cout<<"Reading HMMData for action:"<<idAction<<endl;
    this->idAction=idAction;
    
    ResultSet *resSet;
    PreparedStatement *prep_stmt;

    /* create a statement object */
    prep_stmt = con -> prepareStatement("SELECT * FROM `HMMDataSet` WHERE `compression_rate`=? AND `num_clusters`=? AND `id_action`=?");
    prep_stmt->setInt(1, compressionRate);  
    prep_stmt->setInt(2, numClusters);  
    prep_stmt->setInt(3, idAction);    
    resSet = prep_stmt->executeQuery();

    while (resSet->next()) {
        std::stringstream state_trans(resSet->getString("state_trans"));
        std::stringstream initial_state_dist(resSet->getString("initial_state_dist"));
        std::stringstream obs_prob_dist(resSet->getString("obs_prob_dist"));
        std::stringstream cluster_distribution(resSet->getString("cluster_distribution"));
        
        stateTrans.resize(numStates, vector<double>(numStates, 0));
        initialStateDist.resize(numStates, 0);
        obsProbDist.resize(numStates, vector<double>(numStates,0));
        clustDist.resize(numStates);
       
        for (int i = 0; i < numClusters; i++) {
            for (int j = 0; j < numClusters; j++) {
                state_trans >> stateTrans[i][j];
            }
        }
         
        for (int j = 0; j < numClusters; j++) {
            initial_state_dist >> initialStateDist[j];
        }
           
        for (int i = 0; i < numClusters; i++) {
            for (int j = 0; j < numClusters; j++) {
                obs_prob_dist>> obsProbDist[i][j];
            }
        }       
             
        for (int j = 0; j < numClusters; j++) {
            ClusterDistribution cluster;           
            cluster_distribution >> cluster.mean.idCluster;            
             cluster.mean.center.resize(Vector_Size);
            for (int k = 0; k < Vector_Size; k++) {
                cluster_distribution >> cluster.mean.center[k];
            }             
            cluster_distribution >> cluster.standardDeviation;           
            clustDist.push_back(cluster);
        }        
    }
    
    delete resSet;
    delete prep_stmt;
    closeMysqlSession();
    
}