人工智能设计任务书.docx
《人工智能设计任务书.docx》由会员分享,可在线阅读,更多相关《人工智能设计任务书.docx(25页珍藏版)》请在冰点文库上搜索。
人工智能设计任务书
课程设计
课程名称:
人工智能及应用
设计题目:
基于智能搜索的进路选排设计
院系:
计算机与通信工程系
年级:
09级信号1班
*****
******
西南交通大学峨眉校区
2012年10月22日
课程设计任务书
专业铁道信号姓名李明学号********
开题日期:
12年09月23日完成日期:
12年10月21日
题目基于智能搜索的进路选排设计
一、设计的目的
通过对课程设计任务的完成,进一步理解智能搜索算法与计算机联锁软件设计的理论内容,并且巩固和深化所学课程的知识,同时培养综合运用所学课程知识,分析和解决实际问题的能力,逐步树立正确的设计思想及严谨认真的科学态度。
二、设计的内容及要求
要求每位同学能够根据对人工智能搜索算法以及计算机联锁的进路选排过程的知识,结合课程设计的内容,独立完成该课程设计。
设计内容:
1)自选信号布置图,建立站场型静态数据库,并绘制其模块链接图;
2)自选智能搜索算法,编写动态进路搜索选排程序;
3)用所编搜索程序对建立的数据库进行进路选排,并举例说明其过程。
三、指导教师评语
四、成绩
指导教师(签章)
年月日
一、设计题目
根据下面信号布置图及进路搜索流程图:
1、自选信号布置图,建立站场型静态数据库,并绘制其模块链接图
2、自选智能搜索算法,编写动态进路搜索选排程序
3、用所编搜索程序对建立的数据库进行进路选排,并举例说明其过程
二、设计过程
2.1绘制站场图和站场型数据模块链接图
绘制原则:
(1)根据给出的信号平面布置图绘制,将每个调车信号机、道岔、轨道区段均要设置成为节点;
(2)在道岔的节点处还要设置此节点是否为具有导向标志的节点,以便完成变通进路的搜索;
(3)每个节点根据其由来命名,如K
(1)表示1号道岔的节点,K(D1)表示1号调车信号机的节点;
(4)按照其搜索方向将各个模块节点连接起来就形成了站场型数据模块链接图。
2.2动态变量的定义及关键变量的功能函数
(1)动态变量定义
typedefstruct//进路控制表
{
BYTEjlh;//进路号:
BYTEjlxz;//进路性质:
BYTEjllx;//进路类型:
BYTEjljc;//进路进程:
BYTEsdan;//始端按钮:
BYTEbgan;//变更按钮:
BYTEzdan;//终端按钮:
BYTEztxhjh;//体信号机号:
}JLKZB;
typedefstruct//信号控制表
{
BYTExhbh;//信号编号
BYTEanh;//按钮号
CStringxhjm;//信号机名称
BYTExhjlx;//信号机类型
BYTEsbflag;//锁闭标志
BYTExhkz;//信号控制
BYTEdszt;//灯丝状态
BYTEyxdszt;//允许灯丝状态
BYTEopened;//曾开放
POINTnPoint;//信号机坐标
COLORREFclor;//信号灯显示的颜色
BYTE*pf;//指针场
}XHKZB;
typedefstruct//道岔控制表:
DCKZB
{
CStringdcm;//道岔名称
BYTEdch;//道岔编号
BYTEdcxz;//是否是双动道岔;
BYTEsdch;//双动岔号
BYTEanh;//按钮号
BYTEsqdh;//所属区段号
BYTEcmzt;//岔名状态
BYTEdczt;//道岔状态(定位)
BYTEdckz;//道岔控制
BYTEsbjlh;//锁闭变量
BYTElkh;//控制进路号
BYTEused;//征用标志
BYTEfuncSb;//功能锁闭
BYTEdelay;//延世参数
BYTE*pz;//指针场指向直股
BYTE*pw;//指针场指向弯股
}DCKZB;
typedefstruct//区段控制表:
QDZTB
{
CStringqdm;//区段名称
BYTEqdbh;//区段编号
BYTEqdxz;//区段性质
BYTEqdlx;//区段类型
COLORREFgdys;//区段状态光带颜色
BYTEsbflag;//锁闭变量
BYTEbhqdh;//保护区段号
BYTEczy;//曾占用
BYTElkh;//控制进路号
BYTEused;//征用标志
POINTbgnPoint;//开始点坐标
POINTstpPoint;//终点坐标
BYTE*pf;//指针场
}QDZTB;
(2)主要功能函数:
1、选排一致性检测
道岔控制命令生成子模块函数
BYTE进路选排处理(BYTE控制进路号)
{
if(防护本进路的信号机被征用或已开放)
返回(进路不能建立);
if(敌对信号机开放)
返回(进路不能建立);
if(区段占用)
返回(进路不能建立);
if(存在其他照查条件)
返回(进路不能建立);
if(进路中道岔位置不正确)
{
将进路的进程标志设置成锁闭标志;
返回(进路选排完成);
}
else
{
if(道岔所在区段被占用)
返回(进路不能建立);
if(道岔被单独锁闭)
返回(进路不能建立);
生成道岔控制命令;
检测道岔状态;
if(规定时间内,道岔未转换到指定位置)
返回(故障);
}
}
2、进路锁闭子模块
void进路锁闭(BYTE进路控制号,INT进路号)
{
if(进路中有区段被占用)
返回(进路不能建立);
if(敌对信号机开放)
返回(进路不能建立);
if(道岔位置不正确)
返回(进路不能建立);
if(存在其他照查条件)
返回(进路不能建立);
{
设置道岔锁闭标志;
设置区段锁闭标志;
设置分歧道岔锁闭标志;
设置进路进程标志为开放信号;
返回(进路锁闭完成);
}
}
3、信号开放子模块
BYTE信号开放处理(BYTE进路控制号)
{
if(进路中有区段被占用)
返回(故障);
if(敌对信号机开放)
返回(故障);
if(道岔位置不正确)
返回(故障);
if(存在其他照查条件)
返回(故障);
if(灯丝状态故障)
返回(故障);
{
生成开放信号机命令;
}
if(信号机开放)
{
设置进路进程标志为Fxb(信号机开放保持);
返回(信号开放功能完成);
}
返回(等待开放)
}
4、信号保持子模块
BYTE信号保持处理(BYTE进路控制号)
{
if(敌对信号机开放)
返回(故障);
if(道岔位置不正确)
返回(故障);
if(存在其他照查条件)
返回(故障);
if(灯丝状态故障)
返回(故障);
if(列车驶入进路)
{
信号机立即关闭;
设置进路进程标志为进路解锁标志;
返回(进路保持功能完成);
}
if(调车完全驶入进路)
{
信号机立即关闭;
设置进路进程标志为进路解锁标志;
返回(信号开放功能完成);
}
返回(等待开放)
}
else
{
if(如果进路中有区段被占用)
返回(故障);
{
设置进路进程标志为进路解锁标志为Fxb;
}
返回(信号保持继续);
}
}
2.3编程实现进路搜索过程
进路搜索过程说明:
(1)当道岔节点处设置的有导向标志(红色)时,进路选择时优先选择侧线,否则正线优先;
(2)当优先选择的进路不能选通时,则返回到上一级道岔节点的另一线路继续搜索,直到选通进路为止。
如上图所示为D1至D17的进路搜索,搜索过程如下:
2.4在K
(1)处设置导向标志Yd时:
按所编制程序实现D1到SⅡ进路搜索过程。
D1至SⅡ搜索的时序图:
D1到SII进路搜索过程详述:
(1)从K(D1)节点开始搜索,经过K(1DG),到达K
(1);
(2)K
(1)处被设置为导向标志,所以侧线优先搜索,经过K(1/3),K(3DG),K(D13)和K(17DG)节点,到达K(17)道岔节点;
(3)K(17)处没有被设置为导向标志,所以正线优先搜索,到最后一个节点为K(D17),此时搜索过程没有完成;
(4)返回上一级道岔节点即K(17)节点进行侧线搜索,经K(17/19)区段,由于该区段和K(1/3)区段共同构成了八字形进路,在没有按压变通进路的按钮时的进路,不能走变通进路,所以收索返回到更上一级节点K
(1)道岔节点进行正线搜索,到K(19)节点,再经过K(19DG)区段,最后到K(SII)节点,此时就完成了进路搜索。
2.4附VB程序代码:
PrivateSubCommand1_Click()
IfLabel13.BackColor=&HFFFF&Then
Label13.BackColor=&HC0&
Else
Label13.BackColor=&HFFFF&
EndIf
EndSub
PrivateSubCommand10_Click()
End
EndSub
PrivateSubCommand11_Click()
IfLabel21.BackColor=&HFFFF&Then
Label21.BackColor=&HC0&
Else
Label21.BackColor=&HFFFF&
EndIf
EndSub
PrivateSubCommand12_Click()
IfLabel30.BackColor=&HFFFF&Then
Label30.BackColor=&HC0&
Else
Label30.BackColor=&HFFFF&
EndIf
IfLabel9.BackColor=&HC0&AndLabel30.BackColor=&HC0&Then
IfLabel21.BackColor=&HC0&Then
Line99.BorderColor=&H8000000A
Line150.BorderColor=&H8000000A
Line90.BorderColor=&H8000000A
Line91.BorderColor=&H8000000A
Line92.BorderColor=&H8000000A
Line93.BorderColor=&H8000000A
Line94.BorderColor=&H8000000A
Line95.BorderColor=&H8000000A
Line148.BorderColor=&H8000000A
Line147.BorderColor=&H8000000A
Line149.BorderColor=&H8000000A
Else
Line99.BorderColor=&H8000000A
Line150.BorderColor=&H8000000A
Line90.BorderColor=&H8000000A
Line91.BorderColor=&H8000000A
Line139.BorderColor=&H8000000A
Line139.BorderColor=&H8000000A
Line110.BorderColor=&H8000000A
Line111.BorderColor=&H8000000A
Line149.BorderColor=&H8000000A
EndIf
EndIf
IfLabel8.BackColor=&HC0&AndLabel30.BackColor=&HC0&Then
IfLabel14.BackColor=&HC0&Then
Line88.BorderColor=&H8000000A
Line89.BorderColor=&H8000000A
Line90.BorderColor=&H8000000A
Line91.BorderColor=&H8000000A
Line139.BorderColor=&H8000000A
Line110.BorderColor=&H8000000A
Line111.BorderColor=&H8000000A
Line149.BorderColor=&H8000000A
Else
IfLabel21.BackColor=&HC0&Then
Line88.BorderColor=&H8000000A
Line89.BorderColor=&H8000000A
Line90.BorderColor=&H8000000A
Line91.BorderColor=&H8000000A
Line92.BorderColor=&H8000000A
Line93.BorderColor=&H8000000A
Line94.BorderColor=&H8000000A
Line148.BorderColor=&H8000000A
Line95.BorderColor=&H8000000A
Line147.BorderColor=&H8000000A
Line149.BorderColor=&H8000000A
Else
Line88.BorderColor=&H8000000A
Line151.BorderColor=&H8000000A
Line106.BorderColor=&H8000000A
Line107.BorderColor=&H8000000A
Line108.BorderColor=&H8000000A
Line110.BorderColor=&H8000000A
Line111.BorderColor=&H8000000A
Line149.BorderColor=&H8000000A
EndIf
EndIf
EndIf
EndSub
PrivateSubCommand13_Click()
IfLabel12.BackColor=&HFFFF&Then
Label12.BackColor=&HC0&
Else
Label12.BackColor=&HFFFF&
EndIf
EndSub
PrivateSubCommand14_Click()
Label8.BackColor=&HFFFF&
Label9.BackColor=&HFFFF&
Label12.BackColor=&HFFFF&
Label18.BackColor=&HFFFF&
Label21.BackColor=&HFFFF&
Label24.BackColor=&HFFFF&
Label31.BackColor=&HFFFF&
Label30.BackColor=&HFFFF&
Label28.BackColor=&HFFFF&
Label13.BackColor=&HFFFF&
Label14.BackColor=&HFFFF&
Label10.BackColor=&HFFFF&
Line99.BorderColor=&H80000008
Line150.BorderColor=&H80000008
Line90.BorderColor=&H80000008
Line91.BorderColor=&H80000008
Line139.BorderColor=&H80000008
Line110.BorderColor=&H80000008
Line111.BorderColor=&H80000008
Line149.BorderColor=&H80000008
Line88.BorderColor=&H80000008
Line151.BorderColor=&H80000008
Line106.BorderColor=&H80000008
Line107.BorderColor=&H80000008
Line108.BorderColor=&H80000008
Line111.BorderColor=&H80000008
Line89.BorderColor=&H80000008
Line92.BorderColor=&H80000008
Line93.BorderColor=&H80000008
Line94.BorderColor=&H80000008
Line152.BorderColor=&H80000008
Line103.BorderColor=&H80000008
Line108.BorderColor=&H80000008
Line111.BorderColor=&H80000008
Line100.BorderColor=&H80000008
Line101.BorderColor=&H80000008
Line102.BorderColor=&H80000008
Line95.BorderColor=&H80000008
Line96.BorderColor=&H80000008
Line137.BorderColor=&H80000008
Line147.BorderColor=&H80000008
Line148.BorderColor=&H80000008
Line155.X1=120
Line155.X2=240
Line155.Y1=2400
Line155.Y2=2400
Timer1.Enabled=False
Timer2.Enabled=False
EndSub
PrivateSubCommand15_Click()
IfLabel10.BackColor=&HFFFF&Then
Label10.BackColor=&HC0&
Else
Label10.BackColor=&HFFFF&
EndIf
EndSub
PrivateSubCommand16_Click()
IfLabel18.BackColor=&HFFFF&Then
Label18.BackColor=&HC0&
Else
Label18.BackColor=&HFFFF&
EndIf
EndSub
PrivateSubCommand17_Click()
IfLabel24.BackColor=&HFFFF&Then
Label24.BackColor=&HC0&
Else
Label24.BackColor=&HFFFF&
EndIf
EndSub
PrivateSubCommand18_Click()
Timer1.Enabled=True
EndSub
PrivateSubCommand19_Click()
Timer1.Enabled=False
Timer2.Enabled=False
EndSub
PrivateSubCommand2_Click()
IfLabel8.BackColor=&HFFFF&Then
Label8.BackColor=&HC0&
Else
Label8.BackColor=&HFFFF&
EndIf
IfLabel9.BackColor=&HC0&AndLabel30.BackColor=&HC0&Then
Line99.BorderColor=&H8000000A
Line150.BorderColor=&H8000000A
Line90.BorderColor=&H8000000A
Line91.BorderColor=&H8000000A
Line92.BorderColor=&H8000000A
Line139.BorderColor=&H8000000A
Line110.BorderColor=&H8000000A
Line111.BorderColor=&H8000000A
EndIf
IfLabel8.BackColor=&HC0&AndLabel30.BackColor=&HC0&Then
Line88.BorderColor=&H8000000A
Line151.BorderColor=&H8000000A
Line106.BorderColor=&H8000000A
Line107.BorderColor=&H8000000A
Line108.BorderColor=&H8000000A
Line110.BorderColor=&H8000000A
Line111.BorderColor=&H8000000A
EndIf
EndSub
PrivateSubCommand20_Click()
Timer2.Enabled=True
EndSub
PrivateSubCommand3_Click()
IfLabel9.BackColor=&HFFFF&Then
Label9.BackColor=&HC0&
Else
Label9.BackColor=&HFFFF&
EndIf
IfLabel9.BackColor=&HC0&AndLabel30.BackColor=&HC0&Then
Line99.BorderColor=&H8000000A
Line150.BorderColor=&H8000000A
Line90.BorderColor=&H8000000A
Line91.BorderColor=&H8000000A
Line139.BorderColor=&H8000000A
Line110.BorderColor=&H8000000A
Line111.BorderColor=&H8000000A
Line149.BorderColor=&H8000000A
EndIf
EndSub
PrivateSubCommand4_Click()
IfLabel14.BackColor=&HFFFF&Then
Label14.BackColor