亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? auto.cpp

?? 使用改進的遺傳算法實現簡單的高校排課
?? CPP
?? 第 1 頁 / 共 2 頁
字號:
//---------------------------------------------------------------------------

#include <vcl.h>
#pragma hdrstop

#include "auto.h"
#include<time.h>
#include<stdio.h>
#include<malloc.h>
#include<stdlib.h>
#include<math.h>
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TAutoForm *AutoForm;
//---------------------------------------------------------------------------
__fastcall TAutoForm::TAutoForm(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TAutoForm::FormClose(TObject *Sender, TCloseAction &Action)
{
     Action = caFree;
}
//---------------------------------------------------------------------------
void __fastcall TAutoForm::Button1Click(TObject *Sender)
{
     int   flag = 0;
     long  i,gen,k,j;
     int   p;
     float oldmax;
     int   oldmaxpp;
     int   max;

     int   temp=1, tmp =0;
     int   cous_tmp[100];
     int   cous_per[10];
     int   cous_pri[10];
     int   class_room_cap[100];
     int   class_room_num[100];
     int   cls_id_arry[100], cls_total_num;
     int   cous_num;
     int   next_start;
     int   cls_id, cou_id, tim_num, cls_cap, room_num;
     int   tec_id[20], tmp_tec_id, teac_assi_tmp[20], teac_cls_num_tmp[20];

     gen=0;

     AnsiString    cls_name, head_tech;
     AnsiString sqlStr;

     pcross = 0.9;

     /***求班級編號及總數***/
     ADOQuery6->Close();
     ADOQuery6->SQL->Clear();
     ADOQuery6->SQL->Add("select distinct Class_ID From Class");
     ADOQuery6->Open();
     if(ADOQuery6->RecordCount!=0)
     {
         i = 0;
         ADOQuery6->First();
         while(!ADOQuery6->Eof)
         {
             cls_id_arry[i] = ADOQuery6->FieldByName("Class_ID")->AsInteger;
             i++;
             ADOQuery6->Next();
         }
         cls_total_num = i;
     }

     /***求教室數和各個教室的容量教室編號***/
     ADOQuery3->Close();
     ADOQuery3->SQL->Clear();
     ADOQuery3->SQL->Add("select * From room");
     ADOQuery3->Open();
     if(ADOQuery3->RecordCount != 0)
     {
          ADOQuery3->First();
          i = 0;
          while(!ADOQuery3->Eof)
          {
              class_room_cap[i] = ADOQuery3->FieldByName("Room_Capacity")->AsInteger;;
              class_room_num[i] = ADOQuery3->FieldByName("Room_Num")->AsInteger;;
              ADOQuery3->Next();
              i++;
          }
          room_num = i;
     }
     
     for (p = 0; p<cls_total_num; p++)
     {
         popsize=10;
         maxgen = 440*(p+1);
         
         ADOQuery1->Close();
         ADOQuery1->SQL->Clear();
         ADOQuery1->SQL->Add("select * From plans");
         ADOQuery1->SQL->Add("where Class_ID = :ID");
         ADOQuery1->Parameters->ParamByName("ID")->Value = cls_id_arry[p];
         ADOQuery1->Open();
         if(ADOQuery1->RecordCount!=0)
         {
            ADOQuery1->First();
            i=0;
            while(!ADOQuery1->Eof)
            {
                chromize[i] = ADOQuery1->FieldByName("Cper_Week")->AsInteger;
                cous_per[i] = chromize[i];
                course_id[i] = ADOQuery1->FieldByName("Course_ID")->AsInteger;
                cous_tmp[i] = course_id[i];
                priority[i] = ADOQuery1->FieldByName("Course_Priority")->AsInteger;
                cous_pri[i] =  priority[i];
                i++;
                ADOQuery1->Next();
            }
         }
         cous_num = i;

         oldpop=(struct pp*)malloc(maxpop*sizeof(struct pp));

         newpop=(struct pp*)malloc(maxpop*sizeof(struct pp));

         p1=(struct pp*)malloc(sizeof(struct pp));

         lchrom=length(chromize);

         for(k=0;k<popsize;k++)
            for(i=0;i<lchrom;i++)
               oldpop[k].chrom[i]=0;
         for(k=0;k<popsize;k++)
            for(i=0;i<lchrom;i++)
                newpop[k].chrom[i]=0;


         initialize();
         do
         {
             gen=gen+1;
             oldmax=max;
             oldmaxpp=maxpp;
             generation();
             statics(newpop);
             if(max<oldmax)
             {
                 for(j=0;j<lchrom;j++)
                 {
                     newpop[minpp].chrom[j]=oldpop[oldmaxpp].chrom[j];
                     newpop[minpp].fitness=oldpop[oldmaxpp].fitness;
                     statics(newpop);
                 }
             }
             p1=oldpop;

             oldpop=newpop;
             newpop=p1;
         }while(gen<maxgen);
         max=maxpp;

         /**計算cou_id**/
         int x = 0, n = 0;
         i = 0;
         for (j = 0; j<cous_num; j++)
         {
             n = chromize[j];
             for (i = x; i<x+n; i++)
             cous_tmp[i] = course_id[j];
             x = x+n;
         }

         /***填充課程表***/
         for(i=0;i<lchrom;i++)
         {
             ADOQuery1->Close();
             ADOQuery1->SQL->Clear();

             cls_id   = cls_id_arry[p];
             ADOQuery2->Close();
             ADOQuery2->SQL->Clear();
             ADOQuery2->SQL->Add("select * From Class");
             ADOQuery2->SQL->Add("where Class_ID = :Cls_ID");
             ADOQuery2->Parameters->ParamByName("Cls_ID")->Value= cls_id;
             ADOQuery2->Open();
             if (ADOQuery2->RecordCount == 1)
             {
                 cls_cap = ADOQuery2->FieldByName("Class_Cap")->AsInteger;
             }
             else
             {
             }

             for (j=0; j<room_num;)
             {
                 if (class_room_cap[j]-cls_cap<=15)
                 {
                     /****檢查同時間段和已經排好的其他班級教室是否沖突****/
                     ADOQuery7->Close();
                     ADOQuery7->SQL->Clear();
                     ADOQuery7->SQL->Add("select * From CTable");
                     ADOQuery7->SQL->Add("where Time_Num = :Tim_Num");
                     ADOQuery7->SQL->Add("and Room_Num = :Room_No");
                     ADOQuery7->Parameters->ParamByName("Tim_Num")->Value= newpop[max].chrom[i];
                     ADOQuery7->Parameters->ParamByName("Room_No")->Value= class_room_num[j];
                     ADOQuery7->Open();
                     if (ADOQuery7->RecordCount != 0)
                     {
                         j++;
                         continue;
                     }
                     else  if (ADOQuery7->RecordCount == 0)
                         break;
                 }
             }
         
             cou_id    = cous_tmp[i]; /**課程編號**/
             /***考慮多個老師教授一門課程的情況***/
             ADOQuery4->Close();
             ADOQuery4->SQL->Clear();
             ADOQuery4->SQL->Add("select * From teacher");
             ADOQuery4->SQL->Add("where Teac_Cousid = :Tec_Couid");
             ADOQuery4->Parameters->ParamByName("Tec_Couid")->Value= cou_id;
             ADOQuery4->Open();
             if(ADOQuery4->RecordCount != 0)
             {
                 k = 0;
                 ADOQuery4->First();
                 while(!ADOQuery4->Eof)
                 {
                     tec_id[k] =  ADOQuery4->FieldByName("Teacher_ID")->AsInteger;
                     teac_assi_tmp[k] = ADOQuery4->FieldByName("Teac_assi")->AsInteger;
                     teac_cls_num_tmp[k] = ADOQuery4->FieldByName("Teac_cls_num")->AsInteger;;
                     ADOQuery4->Next();
                     k++;
                 }
             }
             /***選擇教師***/
             for (k=0; k<ADOQuery4->RecordCount; k++)
             {
                 int choice =0;
                 choice = k;
                 tmp_tec_id = 0;
                 if (teac_assi_tmp[k] == 0)  /**該教師從來沒有安排課程  則得到 k 值**/
                 {
                     break;
                 }
                 else if (teac_assi_tmp[k] == 1)
                 {
                     /*該教師已經安排課程如果還能繼續任課則還可以選擇*/
                     /*同一個班同一門課程需要同一個教師授課*/
                     /**當一個教師可以代課的班級數為零 則不能選擇**/
                     ADOQuery5->Close();
                     ADOQuery5->SQL->Clear();
                     ADOQuery5->SQL->Add("select * From CTable");
                     ADOQuery5->SQL->Add("where Class_ID = :Cls_ID");
                     ADOQuery5->SQL->Add("and Course_ID = :Cou_ID");
                     ADOQuery5->SQL->Add("and Teac_ID = :Tec_ID");
                     ADOQuery5->Parameters->ParamByName("Cls_ID")->Value= cls_id;
                     ADOQuery5->Parameters->ParamByName("Cou_ID")->Value= cou_id;
                     ADOQuery5->Parameters->ParamByName("Tec_ID")->Value= tec_id[choice]; /*???*/
                     ADOQuery5->Open();
                     if (ADOQuery5->RecordCount!=0) /***教師已經任同一個班同一門課程***/
                     {
                        break;
                     }
                     else  if (ADOQuery5->RecordCount==0) /**教師沒有任該班課程**/
                     {
                         int q;
                         /***如果教授同一門課程的其他老師還沒有任課則選擇下一個還沒有安排上課的老師***/
                         for (q = k+1; q<ADOQuery4->RecordCount; q++)
                         {
                             if (teac_assi_tmp[q] == 0)  /**該教師從來沒有安排課程  則得到 k 值**/
                             {
                                  choice = q;
                                  break;
                             }
                         }
                         if (q == ADOQuery4->RecordCount)/*所有教師都安排班級*/
                         {
                             /***如果所有教師都有班級安排上課 那么選擇還可以代其他班級課程的老師任課***/
                             int max = teac_cls_num_tmp[0];
                             for ( int m = 0; m<ADOQuery4->RecordCount; m ++)
                             {
                                 if (teac_cls_num_tmp[m] >0)
                                 {
                                     if (teac_cls_num_tmp[m] > max)
                                     {
                                         choice = m;
                                         max = teac_cls_num_tmp[m];
                                     }
                                 }
                             }
                             /**課程時間沒有沖突那么該教師可以選擇**
                             ****
                                 如何判斷????
                              ****/
                             //k = choice;
                             break;
                        }
                     }
                 }
             }

             tim_num   = newpop[max].chrom[i];
             sqlStr =  "INSERT INTO CTable VALUES (";
             sqlStr += cls_id;
             sqlStr += ",";
             sqlStr += cou_id;
             sqlStr += ",";
             sqlStr += tim_num;
             sqlStr += ",";
             sqlStr += class_room_num[j];
             sqlStr += ",";
             sqlStr += tec_id[k];
             sqlStr += ")";
             ADOQuery1->SQL->Add(sqlStr);
             ADOQuery1->ExecSQL();
             /***更新教師信息表***/
             /***先查詢到教師的授課信息***/
             AnsiString sqlUpdate;
             teac_assi_tmp[k] = 1;
             teac_cls_num_tmp[k] -=1;

             sqlUpdate = "update teacher set teac_assi =";
             sqlUpdate += teac_assi_tmp[k];
             sqlUpdate += ",teac_cls_num =";

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美α欧美αv大片| 日本精品免费观看高清观看| 亚洲国产日韩一级| 亚洲区小说区图片区qvod| 亚洲欧洲国产专区| 国产精品久久久久一区二区三区共 | 99久久久久久| av网站免费线看精品| 一本到不卡免费一区二区| 91国产成人在线| 欧美三级资源在线| 日韩精品一区二区三区四区视频| 欧美精品久久一区| 日韩一区二区在线观看视频播放| 精品国产乱码久久久久久久 | 中文字幕免费观看一区| 综合婷婷亚洲小说| 午夜精品久久久久久久久久久 | 国产精品午夜免费| 最新日韩在线视频| 午夜久久福利影院| 国产尤物一区二区在线| 国产精品香蕉一区二区三区| 91在线丨porny丨国产| 欧美日韩一区高清| 久久亚洲免费视频| 亚洲欧美在线另类| 日本欧美在线看| jvid福利写真一区二区三区| 欧美午夜精品一区| 久久天堂av综合合色蜜桃网| 中文字幕一区二区三中文字幕| 日韩精品亚洲专区| 成人黄色777网| 欧美一区二区三区爱爱| 国产日产欧美精品一区二区三区| 亚洲一区二区在线观看视频| 色综合久久久网| 欧美一区二区日韩| 久久久久久久久久电影| 一区二区三区免费网站| 国产成人免费视频精品含羞草妖精| 在线观看一区二区视频| 久久久www成人免费毛片麻豆| 一区二区三区四区在线免费观看| 国产美女一区二区| 日韩一区二区在线观看视频播放| 亚洲免费看黄网站| 国产麻豆精品视频| 日韩欧美一卡二卡| 一区二区三区不卡在线观看| 国产精品综合一区二区三区| 欧美撒尿777hd撒尿| 自拍av一区二区三区| 国产在线日韩欧美| 欧美剧情片在线观看| 日韩伦理av电影| 国产99精品国产| 欧美成人aa大片| 日韩国产欧美一区二区三区| 欧美自拍偷拍一区| 成人免费在线观看入口| 国产精品中文欧美| 久久只精品国产| 久久成人免费电影| 日韩片之四级片| av不卡在线播放| 久久综合久久99| 精品婷婷伊人一区三区三| 日韩精品欧美精品| 色呦呦国产精品| 精品亚洲国内自在自线福利| 在线观看免费成人| 国产精品激情偷乱一区二区∴| 国产呦萝稀缺另类资源| 欧美videos中文字幕| 日本视频在线一区| 欧美挠脚心视频网站| 日产欧产美韩系列久久99| 欧美色电影在线| 亚洲五月六月丁香激情| 欧洲av一区二区嗯嗯嗯啊| 亚洲综合精品自拍| 91精品国产福利| 精品一区二区久久久| 久久久久久综合| 成人免费毛片嘿嘿连载视频| 亚洲欧洲一区二区在线播放| 91久久精品日日躁夜夜躁欧美| 亚洲第四色夜色| 日韩一区二区三区四区| 韩国av一区二区| 中文av字幕一区| 在线观看视频一区| 青青草精品视频| 国产无一区二区| 色综合欧美在线视频区| 日韩国产在线观看一区| 国产精品激情偷乱一区二区∴| 色综合久久久网| 免费观看91视频大全| 久久久亚洲欧洲日产国码αv| 99视频在线精品| 亚洲一区二区三区四区中文字幕| 欧美日韩大陆在线| 国产在线精品视频| 国产喷白浆一区二区三区| 成人国产精品免费观看| 亚洲成人综合网站| 久久嫩草精品久久久精品| 91视频免费看| 美女高潮久久久| 一区二区在线观看视频| 日韩欧美视频在线 | 欧美日韩中文国产| 久久成人18免费观看| 亚洲激情图片一区| 欧美成人乱码一区二区三区| 一本一道综合狠狠老| 激情综合网最新| 亚洲激情欧美激情| 国产亚洲午夜高清国产拍精品 | 蜜臀a∨国产成人精品| 自拍偷拍亚洲综合| 欧美sm极限捆绑bd| 欧美日韩精品二区第二页| 成人毛片在线观看| 奇米一区二区三区| 亚洲国产美女搞黄色| 亚洲国产精品自拍| 亚洲视频图片小说| 国产精品青草综合久久久久99| 欧美一区二区三区小说| 欧美色综合网站| 色婷婷精品大在线视频| 高清beeg欧美| 国精产品一区一区三区mba视频| 天天色综合成人网| 亚洲一区精品在线| 亚洲少妇30p| 亚洲日本一区二区三区| 国产欧美日韩三区| 久久精品一级爱片| 久久综合成人精品亚洲另类欧美 | 成人三级在线视频| 国产在线视视频有精品| 麻豆精品视频在线观看| 偷拍亚洲欧洲综合| 午夜精品福利在线| 视频在线观看国产精品| 亚洲成人免费视| 天天做天天摸天天爽国产一区| 亚洲综合无码一区二区| 亚洲午夜日本在线观看| 亚洲精品videosex极品| 亚洲精品久久久久久国产精华液| 亚洲色图19p| 一区二区三区精品在线| 亚洲一区二区成人在线观看| 亚洲国产精品久久人人爱蜜臀 | 欧美酷刑日本凌虐凌虐| 国产欧美一区二区精品久导航 | 日韩午夜在线影院| 久久综合五月天婷婷伊人| 国产亚洲欧美色| 国产精品护士白丝一区av| 亚洲视频在线观看三级| 一个色妞综合视频在线观看| 丝袜美腿一区二区三区| 久久国产剧场电影| 成人听书哪个软件好| 91色在线porny| 欧美人妖巨大在线| 精品国产乱码久久久久久1区2区 | 六月丁香综合在线视频| 国产精品99久久久久久久vr| av不卡一区二区三区| 在线不卡免费欧美| 26uuu国产在线精品一区二区| 国产精品―色哟哟| 视频一区二区中文字幕| 国产在线不卡一卡二卡三卡四卡| 成人开心网精品视频| 精品视频一区二区不卡| 精品国产第一区二区三区观看体验| 亚洲国产精品激情在线观看| 亚洲国产精品综合小说图片区| 国产在线精品一区在线观看麻豆| 在线视频中文字幕一区二区| 久久人人超碰精品| 亚洲一区中文日韩| 韩国v欧美v亚洲v日本v| 欧美日韩成人在线一区| 国产精品久久久久影院亚瑟| 日韩精品一卡二卡三卡四卡无卡| 粉嫩在线一区二区三区视频| 欧美精品丝袜中出| **性色生活片久久毛片| 久久99精品国产麻豆婷婷| 欧美在线一区二区三区|