void main () { int i; initiate ();//读入数据,初始化聚类中心,参数设定默认值 for (i = 1 ; ; i++) { input ();//显示、修改参数 allocate ();//完成第2-6步 if (i == I) { Dm = 0; converge (); break; } if (groupnum <= K / 2) diverge (); else { if ((groupnum >= K * 2) | ( i % 2 == 0)) converge (); else diverge (); } renum (); } showresult (); free (datafield); free (ccdhead); for (i = 0 ; i < 100 ; i++) free (group[i].center); }
void input () { char choice; printf ("\n\n现用的参数取值:\n"); printf ("K = %d\n,Nmin=%d\n,Ds=%f\n,Dm=%f\n,L=%d\n,I=%d\n",K,Nmin,Ds,Dm,L,I); showresult(); printf ("是否需要进行修改?(Y/N)\n"); scanf("%s" , & choice); choice = toupper (choice); if (choice == 'Y') { printf ("\n请输入预期的聚类中心数目:"); scanf ("%d" , &K); printf ("\n请输入每一聚类域中最少样本数:"); scanf ("%d" , &Nmin); printf ("\n请输入一个聚类域中样本距离分布的标准差:"); scanf ("%f" , &Ds); printf("\n请输入两聚类中心之间的最小距离:"); scanf ("%f" , &Dm); printf ("\n请输入一次迭代运算中可以合并的聚类中心的最多数目:"); scanf ("%d" , &L); printf ("\n请输入最大迭代次数:"); scanf ("%d" , &I); } }
void mainwin::OnNextClick(wxCommandEvent& event) { vector<string>* crcresults = m_core.getcrcresults(); ((wxTextCtrl*)FindWindow(XRCID("ID_SCROLLEDWINDOW")))->AppendText(crcresults->at(clicknum++) + "\n"); if (clicknum >= crcresults->size()) showresult(); }
void mainwin::OnGenerateClick( wxCommandEvent& event ) { wxTextCtrl *showarea; if (FindWindow(XRCID("ID_SCROLLEDWINDOW"))) { showarea = (wxTextCtrl*)FindWindow(XRCID("ID_SCROLLEDWINDOW")); vector<string>* crcresults = m_core.getcrcresults(); for (; clicknum < crcresults->size(); clicknum++) showarea->AppendText(crcresults->at(clicknum) + "\n"); showresult(); } }
void game() { int model; model=modelchoice(); memset(info[MAXN],0,MAXN*sizeof(info[MAXN])); //将info数组全部置为空 do { showchess(); if( putchess(model) ) model= model==1 ? 2 : 1 ; } while( judge() == 0 ); showresult( judge() ); }
int main (int argc, char **argv) { int i, flag; flag = 0; initiate(); // 产生初始化群体 evaluation(0); // 对初始化种群进行评估、排序 for (i = 0; i < MAXloop; i++) { // 进入进化循环,当循环次数超过MAXloop所规定的值时终止循环,flag值保持为0 cross(); // 进行交叉操作 evaluation(1); // 对子种群进行评估、排序 selection(); // 从父、子种群中选择最优的NUM个作为新的父种群 if (record() == 1) { // 如果满足终止规则1时将flag置1,停止循环 flag = 1; break; } mutation(); // 进行变异操作 } showresult(flag); // 按flag值显示寻优结果 return 0; }
void main() { int i,flag; flag=0; initiate(); //产生初始化种群 evaluation( 0 ); //对初始化种群进行评估、排序 for( i = 0 ; i < MAXloop ; i++ ) { cross(); //进行交叉操作 evaluation( 1 ); //对子种群进行评估、排序 selection(); //对父子种群中选择最优的NUM个作为新的父种群 if( record() == 1 ) //满足终止规则1,则flag=1并停止循环 { flag = 1; break; } mutation(); //变异操作 } showresult( flag ); //按照flag显示寻优结果 }
void main() { int flag; //标记扩展是否成功 for( ; ; ) { initiate(); flag = search (); if(flag == 1) { recorder(); releasemem(); showresult(); goon(); } else { printf("无法找到符合条件的解"); releasemem(); goon(); } } }
int dofsfile(char *filename) { char result[CCHMAXPATH]; int rc, attrib; int found = NOTFOUND; if (fmf_init(filename, FMF_ALL_FILES, FMF_NO_SUBDIR)) return(NOTFOUND); else { do { rc = fmf_return_next(result, &attrib); if (rc == 0) { showresult(result); found = FOUND; } } while (!rc && isambig(filename)); } fmf_close(); return(found); }
//Jansion.zhou void SVDeviceTest::NewCreateContain() { m_pContentTable = new WSPopTable(this); if(m_pContentTable) { m_pContentTable->AppendRows(m_szResult); m_pWait = new WText("", (WContainerWidget *)m_pContentTable->GeRowContentTable(0)->elementAt(0, 0)); string strTmp = "<div id='"; strTmp += "listpan1"; strTmp += "' class='panel_item'>"; new WText(strTmp, (WContainerWidget *)m_pContentTable->GeRowContentTable(0)->elementAt(1, 0)); m_pSubContent = new WTable(m_pContentTable->GeRowContentTable(0)->elementAt(1, 0)); if (!m_pSubContent) { return; } new WText("</div>", (WContainerWidget *)m_pContentTable->GeRowContentTable(0)->elementAt(1, 0)); //设置高度 strListHeights += "200"; strListHeights += ","; strListPans += "listpan1"; strListPans += ","; strListTitles += m_pSubContent->formName(); strListTitles += ","; m_pFinish = new WText("", (WContainerWidget *)m_pContentTable->GeRowContentTable(0)->elementAt(2, 0)); m_pContentTable->GeRowActionTable(0)->setStyleClass("widthauto"); m_pClose = new WSPopButton(m_pContentTable->GeRowActionTable(0)->elementAt(0, 0), m_szClose, "button_bg_m.png", m_szClose, false); if(m_pClose) { m_pClose->setToolTip(m_szCloseTip); WObject::connect(m_pClose, SIGNAL(clicked()), this, SLOT(closeWnd())); } m_pContentTable->GeRowActionTable(0)->elementAt(0, 0)->setContentAlignment(AlignCenter); } //int RowList = m_pContentTable->GeRowActionTable(0)->numRows(); m_pHideButton = new WPushButton("hide button", m_pContentTable->GeRowActionTable(0)->elementAt(0, 1)); if(m_pHideButton) { OutputDebugString("--------------- is --------------\n"); WObject::connect(m_pHideButton, SIGNAL(clicked()), this, SLOT(showresult())); m_pHideButton->hide(); } pTranslateBtn = new WPushButton(strTranslate, m_pContentTable->GeRowActionTable(0)->elementAt(0, 2)); connect(pTranslateBtn, SIGNAL(clicked()), this, SLOT(Translate())); //pTranslateBtn->setToolTip(strTranslateTip); pTranslateBtn->hide(); pExChangeBtn = new WPushButton(strRefresh, m_pContentTable->GeRowActionTable(0)->elementAt(0, 3)); connect(pExChangeBtn, SIGNAL(clicked()), this, SLOT(ExChange())); //pExChangeBtn->setToolTip(strRefreshTip); pExChangeBtn->hide(); }
//根据用户的设置,重新调整分段即相应信息 bool NumberSegmentIdentification::setNumberSegmentPropety(qulonglong startNumber, qulonglong endNumber, IdentificationState command) { qDebug()<<"setNumberSegmentPropety"; if( startNumber>=endNumber || startNumber<MinPhoneNumber || endNumber>=MaxPhoneNumber) { qDebug()<<" setNumberSegmentPropety NumberSegment format wrong。"; return false; } // QString startNumber = QString::number(startNumber); // QString endNumberString = QString::number(endNumber); //![0]节点排序 QList<qulonglong> allStartNumber = records.keys(); if(!allStartNumber.contains(startNumber)) //某一号段新的起点或结点 allStartNumber.append(startNumber); if(!allStartNumber.contains(endNumber+1)) //某一号段新的起点或结点 allStartNumber.append(endNumber+1); if(!allStartNumber.contains(MaxPhoneNumber)) //增加边界 allStartNumber.append(MaxPhoneNumber); std::list<qulonglong> allStartNumber_stl = allStartNumber.toStdList(); allStartNumber_stl.sort(); //排序 allStartNumber = QList<qulonglong>::fromStdList(allStartNumber_stl); //两个节点点所在的位置(已经排好序) int startNumberIndex = allStartNumber.indexOf(startNumber); int endNumberIndex = allStartNumber.indexOf(endNumber+1); //![1]首先确定用户设置的号段(startNumber与endNumber之间) if(!records.contains(startNumber)) { //新的中间段,startNumber与endNumber为号段 struct NumberSegmentInformation numberSegmentInformation; numberSegmentInformation.startNumber = startNumber; numberSegmentInformation.endNumber = endNumber; numberSegmentInformation.count = 0; numberSegmentInformation.state = command; //插入到记录表中 records.insert(startNumber,numberSegmentInformation); } else { records[startNumber].state = command; records[startNumber].endNumber = endNumber; } //重新统计该号段的号码个数 records[startNumber].Numbers.clear(); qDebug()<<"startNumber,endNumber:" +QString::number(startNumber) +" ~ " +QString::number(endNumber); for(int i =0;i <allNotingNumbers.count();i++) { if(allNotingNumbers.at(i) >=records[startNumber].startNumber && allNotingNumbers.at(i)<=records[startNumber].endNumber) { records[startNumber].Numbers.append(allNotingNumbers.at(i)); qDebug()<<"startNumber~endNumber,add:" +QString::number(allNotingNumbers.at(i)); } } records[startNumber].count = records[startNumber].Numbers.count(); qDebug()<<"after startNumber,endNumber:"; showresult(); //![2]确定endNumber+1与后面的号段合并,以endNumber+1为起点,以下一个号段的结点为结点 if(!records.contains(endNumber+1)) { struct NumberSegmentInformation numberSegmentInformationEnd; numberSegmentInformationEnd.startNumber = endNumber+1; numberSegmentInformationEnd.endNumber = allStartNumber[endNumberIndex+1]-1; //下一个结点的起始位置-1 numberSegmentInformationEnd.count = 0; if(records.contains(allStartNumber[endNumberIndex+1])) { numberSegmentInformationEnd.state =records[allStartNumber[endNumberIndex+1]].state; //清除重复的记录 records.remove(allStartNumber[endNumberIndex+1]); } else numberSegmentInformationEnd.state = Noting; records.insert(numberSegmentInformationEnd.startNumber,numberSegmentInformationEnd); //重新统计该号段的号码个数 records[endNumber+1].Numbers.clear(); qDebug()<<"endNumber+1~next:" + QString::number(records[endNumber+1].startNumber) +" ~ " + QString::number(records[endNumber+1].endNumber); for(int i =0;i <allNotingNumbers.count();i++) { if(allNotingNumbers.at(i) >=records[endNumber+1].startNumber && allNotingNumbers.at(i)<=records[endNumber+1].endNumber) { records[endNumber+1].Numbers.append(allNotingNumbers.at(i)); qDebug()<<"endNumber+1~next,add:" +QString::number(allNotingNumbers.at(i)); } } records[endNumber+1].count = records[endNumber+1].Numbers.count(); } //![3]确定startNumber与前面的号段合并,以前一个号段的起点为起点,以startNumber-1为结点 if(startNumberIndex>0) { qulonglong prestartNumber = allStartNumber[startNumberIndex-1]; records[prestartNumber].endNumber = startNumber -1; //重新统计该号段的号码个数 records[prestartNumber].Numbers.clear(); qDebug()<<"pre~startNumber -1:" + QString::number(records[prestartNumber].startNumber) +" ~ " + QString::number(records[prestartNumber].endNumber); for(int i =0;i <allNotingNumbers.count();i++) { if(allNotingNumbers.at(i) >=records[prestartNumber].startNumber && allNotingNumbers.at(i)<=records[prestartNumber].endNumber) { records[prestartNumber].Numbers.append(allNotingNumbers.at(i)); qDebug()<<"pre~startNumber -1,add:" +QString::number(allNotingNumbers.at(i)); } } records[prestartNumber].count = records[prestartNumber].Numbers.count(); } //![4]去除startNumber和endNumber号段见多余的记录表 for(int i = startNumberIndex+1;i<endNumberIndex;i++) { records.remove(allStartNumber[i]); } //![5]保存数据 saveKeyNumberSegments(); return true; }