Вы находитесь на странице: 1из 6

OMET 2006 195

໮ AGENT ⧚䆎੠ᡔᴃ೼㞾ࡼ䙓⺄‫އ‬ㄪ㋏㒳Ёⱘᑨ⫼ⷨお

ᴼ⼲࣪ 1,2ˈᮑᳱ‫ ع‬1ˈ߬ᅛᅣ 1ˈ㚵ࢸট 1


˄1.Ϟ⍋⍋џ໻ᄺଚ㠍ᄺ䰶ˈϞ⍋ 200135˗2.䲚㕢໻ᄺ㟾⍋ᄺ䰶ˈॺ䮼 361021˅

ᨬ㽕˖㠍㠊䙓⺄‫އ‬ㄪⷨおᰃ೑‫ݙ‬໪㟾⍋ᄺᴃ⬠݇⊼ⱘࠡ⊓䇒乬ПϔDŽᴀ᭛ᇚ↣㠬㠍㠊ᅮНЎϔϾ Agentˈᦤߎњҹ
Ѧ߽੠㓧㾷ᭈԧ⺄ᩲॅ䰽ሔ䴶ЎⳂᷛⱘ໮ Agent 䙓⺄‫އ‬ㄪ㋏㒳ˈ㒭ߎњ෎Ѣ Visual C++Ё㉏Ḛᶊⱘ⏋ড়ൟ Agent ⱘ
ԧ㋏㒧ᵘঞ݊Ꮘ⾥ᮃ㣗ᓣ(BNF)ᦣ䗄ˈᑊᇍ໮ Agent 㠍㠊䙓⺄‫އ‬ㄪ㋏㒳Ꮉ԰ᴎࠊ䖯㸠њ䯤䗄ˈ᳔ৢᣛߎњϟϔℹⱘ
ⷨお‫ݙ‬ᆍDŽ෎Ѣ໮ Agent 㒘㒛ⱘ䯂乬∖㾷ᮍᓣৃҹ䰡Ԣ໮㠍䙓⺄䯂乬ⱘ∖㾷䲒ᑺˈ䗮䖛㠍㠊䯈ⱘ䗮ֵϢড়԰ǃण
ଚᕫߎѦ߽៪᳝߽Ѣܼሔⱘ䙓⺄‫އ‬ㄪˈ䖭ᰃᇍ㾷‫އ‬໮㠍䙓⺄䯂乬ⱘϔ⾡ᮄⱘᇱ䆩ˈৠᯊгᓔᢧњ Agent ⧚䆎ᮄⱘ
ᑨ⫼乚ඳDŽ

݇䬂䆡˖໮ Agent˗㞾ࡼ䙓⺄‫އ‬ㄪ˗㉏Ḛᶊ˗Ꮘ⾥ᮃ㣗ᓣ˗Ꮉ԰ᴎࠊ˗

Study on Decision-Making System for Vessel Automatic


Anti-collision with Multi-Agent System Technology
Yang Shen-hua 1,2, Shi Chao-jian 1, Liu Yu-hong 1, Hu Qinyou1
1) Merchant Marine College, Shanghai Maritime University, Shanghai 200135
2) Navigation Institute, Jimei University, Xiamen 361021

Abstract: The research on decision-making system for vessel automatic anti-collision is one of the advanced problems and
broadly concerned by the specialists and scholars in maritime society. By defining each vessel as an Agent, this paper
presents a decision-making system for vessel automatic anti-collision based on the theory and technology of multi-agent
system. The hybrid architecture of agent and its descriptions of Backus Normal Form based on the Class Framework of
Visual C++ are illustrated. The decision-making mechanism of the System is analyzed and some points for future research
are also discussed. The problem-solving method using multi-agent organization can reduce the difficulty of solving the
problem of multi-vessel collision avoidance. Rational decisions of global benefits for vessel collision avoidance can be
reached by communication, cooperation and negotiation among vessels. The method was a new attempt to address the
problem of multi-vessel collision avoidance, as well as to exploit a new application field for the theory of multi-agent
system.

Keywords: multi-agent; decision-making for automatic anti-collision; class framework; backus normal form; working
mechanism;

1. ᓩ㿔

ḍ᥂೑໪䌘᭭㒳䅵[1]ˈ↣ᑈ༅џⱘ㠍㠊㑺 200 㠬ˈᘏৼԡ᭄Ў 120 ϛৼˈऴϪ⬠㠍䯳ⱘ 0.4%Ꮊেˈ


䖭ⳌᔧѢ↣ 15 ໽༅џϔ㠬 5 ϛৼ㑻ⱘ㠍㠊ˈ݊Ё㠍㠊⺄ᩲџᬙህऴࠄᇚ䖥ϔञ˄43ˁ˅DŽ೑䰙⍋џ㒘
㒛ⱘ䇗ᶹⷨお䖯ϔℹ㸼ᯢ[2]ˈ᳝ 80ˁҹϞⱘ⍋џᰃ⬅ѢҎЎ಴㋴᠔䗴៤ⱘDŽ಴ℸˈབԩҢᡔᴃϞᦤ催㠍
㠊ⱘ㞾ࡼ࣪⿟ᑺˈ೼‫އ‬ㄪ੠᪡԰Ϟ‫ޣ‬ᇥҎⱘখϢˈ䗤ℹᅲ⦄㠍㠊䙓⺄ⱘ㞾ࡼ࣪ˈᰃ㾷‫އ‬ҎЎ಴㋴䯂乬ⱘ
ᖙ㽕ࡲ⊩੠᳝ᬜ䗨ᕘDŽҢϞϾϪ㑾 50 ᑈҷҹᴹˈ೑‫ݙ‬໪ᄺ㗙Ңᅮ䞣ߚᵤ[3]ࠄᅮᗻߚᵤ[4]‫ࠄݡ‬ᅮ䞣Ϣᅮᗻ
Ⳍ㒧ড়[5]ˈҢϧᆊ㋏㒳[6-7]ࠄ⼲㒣㔥㒰[8-9]ǃҎᎹᱎ㛑[10-12]ǃ‫އ‬ㄪᬃᣕ㋏㒳[13-14]ㄝ໮Ͼᮍ䴶ᇍ㠍㠊㞾ࡼ䙓⺄
䖯㸠њᑓ⊯㗠⏅ܹⱘⷨおˈᑊ䖤⫼њ৘⾡ᮄᗱᛇ੠ᮄᮍ⊩ˈгপᕫњϔᅮⱘ៤㒽ˈԚᯊ㟇Ҟ᮹ˈ᠔᳝ⱘ
ⷨおᇮ໘Ѣᅲ偠ᅸⷨお䰊↉ˈⷨお៤ᵰҙ⍝ঞ㠍㠊䙓⺄‫އ‬ㄪϢ᥻ࠊⱘᶤѯ乚ඳˈ䖬≵᳝ᔶ៤ϔϾ㋏㒳
ⱘǃᅲ⫼ⱘ㠍㠊䙓⺄ᱎ㛑‫އ‬ㄪϢ᥻ࠊ㋏㒳DŽお݊ॳ಴Џ㽕ᰃ಴Ў㠍㠊䙓⺄䖛⿟ᰃϔϾकߚ໡ᴖⱘ‫އ‬ㄪ䯂
乬ˈᅗ≵᳝ᕜᔎⱘ⧚䆎῵ൟˈᑊফࠄ䙓⺄㾘߭ǃѸ䗮⦃๗ǃ㠍㠊᪡㒉ᗻ㛑੠偒偊ਬᖗ⧚ㄝ໮⾡಴㋴ⱘᕅ
ડˈ㗠Ϩ৘಴㋴೼‫އ‬ㄪ䖛⿟Ё᠔䍋ⱘ԰⫼੠ഄԡг৘ϡⳌৠˈ᠔ҹ㞾ࡼ䙓⺄‫އ‬ㄪ㋏㒳ⱘᓎ῵ᰃϔ乍໡ᴖ
ⱘ㋏㒳Ꮉ⿟ˈབԩᓎゟϔϾ⾥ᄺǃড়⧚ⱘ㋏㒳㒧ᵘᑊ‫ߚܙ‬ԧ⦄ߎ“㠍ˉҎˉ⦃๗” ড়ϔⱘᗱᛇϔⳈᰃҎӀ
ⷨおⱘ䞡⚍੠䲒⚍DŽ

෎䞥乍Ⳃ˖催ㄝᄺ᷵म຿ᄺ⾥⚍ϧ乍⾥ⷨ෎䞥˄20050254001˅˗Ϟ⍋Ꮦ䞡⚍ᄺ⾥ᓎ䆒乍Ⳃ˄T0603˅˗䲚㕢໻ᄺ⾥ⷨ෎䞥䌘ࡽ乍
Ⳃ˄ZB2006003˅DŽ

OMET 2006 195


196 OMET 2006
2. ໮ Agent ⧚䆎ঞ݊೼㞾ࡼ䙓⺄Ёⱘᑨ⫼

Agent ⱘὖᗉߎ⦄Ѣ 20 Ϫ㑾 70 ᑈҷⱘҎᎹᱎ㛑乚ඳЁˈ80 ᑈҷৢᳳᠡ៤䭓䍋ᴹDŽMIT 䕃ӊⷨおᇣ


㒘ⱘ Pattie Maes 䅸ЎˈĀAgent ᰃϔ㉏ጠܹ໡ᴖǃࡼᗕ⦃๗Ёⱘ䅵ㅫ㋏㒳ˈᅗৃҹᛳⶹǃ԰⫼Ѣ⦃๗ˈ
ᑊϨᏠᳯ䗮䖛ࡼ԰ⱘᠻ㸠ᅲ⦄ϔᅮⱘⳂᷛ៪ӏࡵDŽā [15-16]
໮ Agent ㋏㒳ᰃᣛϔѯ㞾Џⱘ Agent 䗮䖛ण԰ᅠ៤ᶤѯӏࡵ៪ᅲ⦄ᶤѯⳂᷛⱘ䅵ㅫ㋏㒳ˈᅗջ䞡ⷨ
おབԩण䇗ϔ㒘 Agent ⱘ㸠Ўˈेⷨお䖭㒘 Agent Ўњ㘨ড়䞛প㸠ࡼ៪∖㾷䯂乬ᯊˈབԩण䇗৘㞾ⱘⶹ
䆚ǃⳂᷛǃㄪ⬹੠䅵ߦㄝ[17]DŽ໮ Agent ㋏㒳ᰃߚᏗᓣҎᎹᱎ㛑ⱘϔϾᮄⱘⷨお乚ඳˈ೼ᑊ㸠䅵ㅫ੠ߚᏗ
ᓣ໘⧚ᡔᴃЁপᕫњ䕗໻ⱘ䖯ሩDŽ໮ Agent ㋏㒳ⱘⷨおग़৆᳔ᮽৃҹ䗑⒃ࠄ 1977 ᑈᦤߎⱘ Actors ῵ൟ
[18]
ˈ᥹ⴔᰃ Smith ᦤߎⱘড়ৠ㔥ण䆂[19]DŽⳂࠡˈ໮ Agent ㋏㒳Џ㽕ⷨお໮ Agent ⧚䆎ǃ䗮ֵ੠ѸѦᡔ
ᴃˈԧ㋏㒧ᵘ੠㒘㒛ᔶᓣˈ䴶৥ Agent ⱘ⿟ᑣ䆒䅵ᮍ⊩੠䇁㿔ˈҹঞ໮ Agent 䯈ⱘण䇗ǃण԰੠णଚㄝ
[16]
DŽAgent ℷҢᅲ偠ᅸ䍄৥ҎӀⱘ⦄ᅲ⫳⌏ˈ݊ᑨ⫼乚ඳҢᎹϮࠄଚϮकߚᑓ䯨ˈ㗠Ϩℷ೼ҹ᚞Ҏⱘ䗳
ᑺ㒻㓁ᠽሩDŽ෎Ѣ Agent ⱘᓎ῵ӓⳳᮍ⊩Ꮖ㒣ᑓ⊯ഄᑨ⫼ࠄ৘乚ඳˈབ㒣⌢ǃ‫ݯ‬џǃ⼒ӮǃᎹϮㄝDŽ
೼㠍㠊㟾㸠䖭ḋϔϾᓔᬒᓣࡼᗕ⦃๗Ёˈ↣㠬㠍㠊ᰃৃҹ⣀ゟ᪡㒉ᑊ‫݋‬᳝ᱎ㛑ᗻ੠⧚ᗻⱘ㸠ࡼЏ
ԧˈᅗӀ‫݋‬᳝ϡᅠܼⱘֵᙃ੠䯂乬∖㾷㛑࡯ˈ㛑໳乘⌟Ҫ㠍ⱘࡼᗕˈ㗠݊㞾䑿ⱘডᑨ੠ࡼ԰জৃҹᇍҪ
㠍ѻ⫳ᕅડˈܼሔ᥻ࠊ೼㠍㠊䙓⺄䖛⿟Ё᠔䍋ⱘ԰⫼ϡᯢᰒDŽ䖭ѯ⡍⚍कߚ䗖ড়䞛⫼໮ Agent ㋏㒳∖㾷
䯂乬ˈ໮㠬㠍㠊䗮䖛ҪӀⱘѸѦᗻᵘ៤њϔϾ໮ Agent ⼒ӮDŽ಴ℸˈ䡈ѢᇍߚᏗᓣ㠍㠊䙓⺄‫އ‬ㄪ㋏㒳ⱘ
䳔∖ˈᨦᓗӴ㒳ⱘҹ߽ᏅЎⳂⱘⱘ‫އ‬ㄪ㋏㒳ᓔথᗱᛇˈᴀ᭛ᦤߎњҹѦ߽੠㓧㾷ᭈԧ⺄ᩲॅ䰽ሔ䴶ЎⳂ
ᷛⱘ໮ Agent 㠍㠊䙓⺄‫އ‬ㄪ㋏㒳, ᇚ↣㠬㠍㠊ᅮНЎϔϾ⧚ᗻ Agentˈ‫ߚܙ‬ԧ⦄њ㠍㠊೼䙓⺄䖛⿟Ёⱘ⣀
ゟ㞾⊏ᗻ੠㠍㠊䯈䖯㸠ֵᙃѸѦ੠䙓䅽ড়԰ⱘ㛑࡯ˈ೼ϔᅮ⿟ᑺϞᅲ⦄њ“㠍ˉҎˉ⦃๗”ড়ϔⱘᗱᛇˈ
Ң㗠䰡Ԣњ໮㠍䙓⺄‫އ‬ㄪⱘ䲒ᑺDŽ

3. 㠍㠊 Agent ⱘᅲ⦄ߚᵤ

ḍ᥂ Agent ⱘԧ㋏㒧ᵘˈৃҹᇚ݊ߚЎ䅸ⶹൟ Agentǃডᑨൟ Agent ঞ⏋ড়ൟ Agent ϝ⾡DŽ೼෎Ѣ


໮ Agent ⱘ㠍㠊䙓⺄‫އ‬ㄪ㋏㒳Ёˈ䞛⫼њ෎Ѣ VC++㉏Ḛᶊⱘ⏋ড়ൟ AgentDŽ

3.1 ෎Ѣ㉏Ḛᶊⱘ⏋ড়ൟ Agent

෎Ѣ VC++㉏Ḛᶊⱘ㠍㠊 Agent ῵ൟབ೒


1ˈ⬅⍜ᙃⲥ਀Ϣ㓧‫ކ‬ǃ⍜ᙃᕾ⦃ǃ⍜ᙃথ
䗕ǃ㉏Ḛᶊಯ⾡ࡳ㛑䚼ӊঞ߱ྟ࣪῵ഫ㒘
៤DŽ߱ྟ࣪῵ഫ䋳䋷ܼሔব䞣੠ᇍ䈵ⱘໄ
ᯢǃᅮН੠߱ྟ࣪DŽ
⍜ᙃⲥ਀῵ഫϢ⍜ᙃᕾ⦃ᰃᑊথᠻ㸠
ⱘˈҢ㗠Փ⍜ᙃⲥ਀῵ഫৃҹᯊࠏЏࡼⲥ਀
থ৥ Agent ⱘ৘⾡⍜ᙃDŽ⍜ᙃᕾ⦃ᰃ⬅ϸϾ
῵ഫⱘᕾ⦃ᠻ㸠ᴹᅲ⦄ⱘ˖ϔϾᰃ⍜ᙃ䆚߿
῵ഫˈ݊ࡳ㛑ᰃҢ⍜ᙃ䯳߫Ёপߎ⍜ᙃˈᑊ
䆚߿⍜ᙃ㉏ൟ˗঺ϔϾᰃ⍜ᙃ໘⧚῵ഫˈḍ
᥂ Agent ⱘ㸠Ў㾘߭ᴹ໘⧚ϡৠ㉏ൟⱘ⍜
ᙃˈᑊᅲ⦄⍜ᙃࠄ㉏Ёᮍ⊩ⱘ᯴ᇘˈᰃ㉏/ᇍ
䈵Ϣ݊Ҫ㠍㠊 Agent 㘨㋏ⱘḹṕDŽ
ᔧ Agent 䖤㸠䖛⿟Ёˈ䳔㽕৥݊Ҫ Agent
ᦤߎ䇋∖៪㗙䳔㽕݇Ѣ݊Ҫ Agent ⱘֵᙃ
ᯊˈḍ᥂䇋∖ⱘֵᙃᣝ✻䗮䆃ण䆂㒘៤䳔㽕
থ䗕ⱘ⍜ᙃ‫ݙ‬ᆍˈᑊ▔⌏⍜ᙃথ䗕῵ഫˈ⬅
݊䋳䋷ᇚ⍜ᙃথ㒭Ⳃᷛ AgentDŽ⍜ᙃⲥ਀ǃ⍜ ೒ 1 ෎Ѣ VC++㉏Ḛᶊⱘ⏋ড়ൟ㠍㠊 Agent ῵ൟ
ᙃᕾ⦃ঞ⍜ᙃথ䗕ϝϾ῵ഫᅲ⦄њ Agent Ϣ
݊Ҫ Agent ៪໪䚼⦃๗П䯈ⱘ䗮䆃ࡳ㛑DŽ
㉏Ḛᶊᰃ㒘៤ Agent ⱘ䞡㽕䚼ߚDŽҢᔶᓣϞ䇈ˈ㉏Ḛᶊᰃϔ㋏߫‫݋‬᳝݇㘨ᗻⱘ㉏ⱘ䲚ড়DŽ೼ Agent
῵ൟЁˈ⍜ᙃᰃᇚ Agent ⱘҹϞಯϾࡳ㛑㒘ӊ㘨㋏䍋ᴹⱘḹṕDŽ⍜ᙃⲥ਀῵ഫᅲ⦄њᇍ໪䚼⦃๗ⱘЏࡼ

196
OMET 2006 197
ᛳⶹ˗⍜ᙃᕾ⦃߭䋳䋷ᇍ᠔ᛳⶹⱘ⍜ᙃⱘ䇁Н䇁⊩䖯㸠ߚᵤ˗㗠⍜ᙃⱘ᳔㒜ડᑨϢ໘⧚߭ᰃ㉏Ḛᶊˈ಴
ℸ㉏Ḛᶊᰃ Agent ⱘḌᖗˈԧ⦄њ Agent ⱘ⢊ᗕ੠㛑࡯˗
খ✻ Shoham ᦤߎⱘ݇Ѣ Agent ⱘ BDI ῵ൟ[20]ˈᴀ᭛೼㉏ḚᶊЁ䆒㕂њᖗᗕ㉏ˈ⫼Ѣ㸼⼎㠍㠊
Agent ⱘֵᗉ੠ᡓ䇎ᖗ⧚ˈ݊Ё Agent ⱘֵᗉࣙᣀᴀ㠍ֵᙃǃⳂᷛ㠍ֵᙃ੠⦃๗ֵᙃˈབ㸼 1˗ᡓ䇎ᖗ
⧚߭䆒㕂њ⺄ᩲॅ䰽ᑺ䆘Ӌ῵ൟǃНࡵ䙓䅽ᐙᑺᡓফᑺ䆘Ӌ῵ൟ੠णࡽ䙓䅽ᐙᑺᡓফᑺ῵ൟ˗೼㉏Ḛᶊ
Ё䖬䆒㕂њᑨ⫼㉏ঞⳌ݇ⱘ⫼᠋᥹ষ㉏ㄝˈ⫼Ѣᅲ⦄ Agent ⱘᅲ䰙ࡳ㛑ˈࣙᣀ᥼⧚䅵ㅫ㛑࡯ǃᄺд㛑
࡯ǃᇍ৘⾡⍜ᙃⱘ໘⧚㛑࡯ㄝᮍ䴶ˈ಴ℸ Agent ‫݋‬᳝њ䅸ⶹൟ Agent ⱘ⡍⚍˗ЎњՓ Agent ৃҹᇍㅔऩ
ⱘᚙ‫᥹Ⳉމ‬԰ߎডᑨˈ೼㉏ḚᶊЁ䆒㕂њ㸠Ў㾘߭㉏ˈ⬅lj೑䰙⍋Ϟ䙓⺄㾘߭NJǃ㟾⍋ϧᆊ㒣偠੠㡃ད
㠍㡎ᵘ៤ⶹ䆚ᑧˈҹ Agent ᥹ᬊࠄⱘᔧࠡ⍜ᙃ੠ᔧࠡᖗᗕ԰Ўᴵӊˈ೼ᶤѯᚙ‫މ‬ϟৃҹḍ᥂ⶹ䆚ᑧⳈ᥹
‫އ‬ᅮ㸠Ўˈ䖭Փᕫ Agent জ‫݋‬᳝њডᑨൟ Agent ⱘ⡍⚍DŽ಴ℸˈ䖭ḋ䆒䅵ߎⱘ Agent ‫݋‬᳝⏋ড়ൟⱘ㒧
ᵘDŽ
㸼 1 㠍㠊 Agent ֵᗉⱘᵘ៤‫ݙ‬ᆍ
ֵᙃߚ㉏ ֵᙃৡ⿄ ֵᙃ㦋প䗨ᕘ
䴭ᗕ 㠍ৡǃ㉏ൟǃ㠍䭓ǃ㠍ᆑǃᥦ∈䞣ǃৗ∈ǃ䋻⠽ǃ
Ҏᴎ⬠䴶ᔩܹ
ֵᙃ 䅵ߦ㟾㒓ㄝҹঞᮟಲǃ‫ذ‬㠍ǃ‫צ‬䔺ㄝ᪡㒉খ᭄
ᴀ㠍ֵᙃ
ࡼᗕ
㠍ԡǃ㟾৥ǃ㠍䗳ǃ䕀佪㾦䗳ᑺㄝ GPSǃLOG ㄝ
ֵᙃ
䴭ᗕ 㠍ৡǃ㉏ൟǃ㠍䭓ǃ㠍ᆑǃᥦ∈䞣ǃৗ∈ǃ䋻⠽ǃ
AIS 䗮ֵ
ֵᙃ 䅵ߦ㟾㒓ㄝҹঞᮟಲǃ‫ذ‬㠍ǃ‫צ‬䔺ㄝ᪡㒉খ᭄
Ⳃᷛ㠍 ࡼᗕ AIS 䗮ֵ
ᮍԡǃ䎱⾏ǃ㟾৥ǃ㟾䗳ǃ㠍佪৥ǃ㟾㸠⢊ᗕㄝ
ֵᙃ ֵᙃ RADAR
ⳌѦ԰ Ⳍᇍ㟾৥ǃⳌᇍ㟾䗳ǃDCPAǃTCPAǃ㠋㾦ǃӮ䘛
᥼ㅫ੠߸ᮁ
⫼ֵᙃ ᗕ࢓ǃ䙓䅽䰊↉ǃ⺄ᩲॅ䰽ᑺㄝ
ഄ⧚ ∈⏅ǃㄝ⏅㒓ǃᑩ䋼ǃ⌙Ⓗǃ≝㠍ǃቯ⻕ǃኌ㒓ǃ
ECDIS
⦃๗ ࡽ㟾䆒໛ǃ㟾䘧ǃ䫮ഄǃ৘⾡⍋ऎ⬠䰤ㄝ
⦃๗ֵᙃ
∈᭛
╂∤ǃ⍋⌕ǃ⍋⌾ǃ亢ǃ㛑㾕ᑺǃ䰡䲼ǃ䰡䲾ㄝ ⇨䈵䆄ᔩҾ
⇨䈵

3.2 ⏋ড়ൟ㠍㠊 Agent ⱘ BNF 㸼⼎

Ўњ᳈⏙Ἦഄ㸼⼎⏋ড়ൟ㠍㠊 Agent ⱘ䆒䅵ᰃབԩᅠ៤ⱘҹঞ݊ᰃབԩᎹ԰ⱘˈϟ䴶㒭ߎ⏋ড়ൟ


Agent ⱘᏈ⾥ᮃ㣗ᓣ˄BNF˖Backus Normal Form˅ᦣ䗄DŽ
<ShipAgentProgram>˖˖= Agent<AgentName>
<ClassFrameWork>
<Initialization>
<MessageDetect>
<MessageLoop>
<MessageSend>
↣Ͼ㠍㠊 Agent 䛑᳝ϔϾଃϔⱘᷛ䆚< AgentName >,ᑊ⬅Ѩ䚼ߚ㒘៤˖㉏Ḛᶊ
˄<ClassFrameWork>˅ǃ߱ྟ࣪䚼ߚ˄<Initialization>˅ǃ⍜ᙃⲥ਀˄<MessageDetect>˅ǃ⍜ᙃᕾ⦃
˄<MessageLoop>˅ǃ⍜ᙃথ䗕˄<MessageSend>˅DŽ݊Ёˈ㉏Ḛᶊⱘ BNF ᦣ䗄བϟ˖
<ClassFrameWork>˖˖= <ApplicationClass>
<InterfaceClass>
<MentalStateClass>
<BehaviorRuleClass>
೼㉏ḚᶊЁˈ᥹ষ㉏䚼ߚ˄<InterfaceClass>˅䞛⫼ Visual C++ᦤկⱘ೒ᔶ⫼᠋᥹ষ㉏Ḛᶊˈᅲ⦄ᇍ
ᑨ⫼㉏䚼ߚ˄<ApplicationClass>˅᠔ᦤկⱘᮍ⊩ⱘ䇗⫼DŽԚᰃˈ݊Ҫ㠍㠊 Agent 䗮䖛⍜ᙃᇍᴀ㠍 Aent
ᑨ⫼㉏Ёᮍ⊩ⱘ䇗⫼䳔㽕ᕫࠄᖗᗕ㉏੠㸠Ў㾘߭㉏ⱘ‫ܕ‬䆌ˈϟ䴶㒭ߎᖗᗕ㉏੠㸠Ў㾘߭㉏ⱘ BNF 䇈
ᯢDŽ
<MentalStateClass>˖˖= Class MentalState
{
Private:
Beliefs
Commitments

OMET 2006 197


198 OMET 2006
Public:
MentalState()
{
Beliefs˖= <Fact>ˆ
Commitments˖= <Commit>ˆ
}
ModifyBeliefs(<Fact>ˆ)
ModifyCommitments(add(<Commit!ˆ), del(<Commit>ˆ))
}
ᖗᗕ㉏‫݋‬ֵ᳝ᗉᑧ˄Beliefs˅ǃᡓ䇎ᑧ˄Commitments˅ϸϾሲᗻDŽֵᗉᑧ⬅ Agent 䅸Ўᰃⳳⱘџ
ᅲ˄<Fact>˅㒘៤˗ᡓ䇎ᑧ⬅ᡓ䇎˄<Commit>˅㒘៤DŽᇍѢ Agent ⱘֵᗉᑧ੠ᡓ䇎ᑧЁⱘ‫ݙ‬ᆍৃҹ䗮䖛
䇗⫼䆹㉏Ёⱘ ModifyBeliefs ੠ ModifyCommitments ᮍ⊩ᴹׂᬍDŽ
<Fact>˖˖= (<Predicate><arg>ˆ)
<Predicate>˖˖= <alphanumberic-string>
<arg>˖˖= <alphanumberic-string>|<Variable>
<Commit>˖˖= ˄<Agentname><Action>ˆ˅
<Action>˖˖= (Do<PrivateAction>)|(Message_Type<Agentname><Info>ˆ)
|(IF<Mentalcond><Action>)
< PrivateAction >˖˖= < alphanumberic-string >|< alphanumberic-string >(<Parameter>ˆ)
<Parameter>˖˖= <Typename><Epr>| <Typename><Var>
<Agentname>˖˖= ? < alphanumberic-string >|<Variable>
<Variable>˖˖= < alphanumberic-string >|?!< alphanumberic-string >
݊ЁˈAgent ⡍᳝ব䞣˄<Variable>˅ҹ᳝ࠡ㓔Ā?āĀ?!āⱘᄫ↡᭄ᄫІᴹᷛ䆚DŽĀ?ā㸼⼎ᄬ೼䞣
䆡ˈĀ?!ā㸼⼎ܼ⿄䞣䆡DŽ䖭⾡ব䞣ৃҹ᳓ҷ Agent ৡǃџᅲ䇁হ੠ࡼ԰䇁হDŽ㗠<Epr>੠<Var>߭ᰃᷛ
‫ ⱘޚ‬C++㸼䖒ᓣ੠ব䞣DŽ
< BehaviorRuleClass >˖˖= Class BehaviorRule
{
Private:
ActionRules;
Public:
BehaviorRule()
{
ActionRules˖˖= < ActionRule >ˆ
}
GetNextRule()
ModifyActionRules(add(< ActionRule >ˆ),
del(< ActionRule >ˆ))
}
< ActionRule >˖˖= (IF<Msgcond><Mentalcond>THEN<Action>)
<Msgcond>˖˖= (<Agentname> Message_Type<Info>ˆ)
<Info>˖˖= ˄<Fact>ˆ|<Action>ˆ˅
<Mentalcond>˖˖= <Mentalconj>|(OR< Mentalconj >)
<Mentalconj>˖˖= <Mntlpattern>|(AND< Mntlpattern >ˆ)
<Mntlpattern>˖˖= (<Fact>)|((<Agentname>)<Action>)|(NOT<Mntlpattern>)
㸠Ў㾘߭㉏ҙ᳝ϔϾሲᗻüüࡼ԰㾘߭ᑧ˄ActionRules˅DŽᮍ⊩ GetNextRule ⫼ᴹপߎ㾘߭ᑧЁⱘ
ϔᴵ㾘߭ˈModifyActionRules ৃҹᇍ㾘߭䖯㸠⏏ࡴǃߴ䰸ǃׂᬍㄝ᪡԰DŽ㸠Ў㾘߭㉏Ϣ⍜ᙃᕾ⦃
˄<MessageLoop>˅‫݋‬᳝Ⳉ᥹ⱘ㘨㋏DŽAgent ᇍѢ↣ᴵᴹ㞾݊Ҫ Agent ⱘ⍜ᙃ䛑㽕ḍ᥂݊㸠Ў㾘߭䖯㸠
߸ᮁҹ‫އ‬ᅮᑨ䆹ᠻ㸠ҔМࡼ԰DŽMessage_Type 㸼⼎ Agent П䯈ⱘ䗮䆃ॳ䇁㉏ൟˈ<Info>㸼⼎䗮䆃ⱘ‫ݙ‬
ᆍDŽ

3.3 䗮䆃ⱘᅲ⦄

㠍㠊㞾ࡼ䆚߿㋏㒳˄Automatic Identification Systemˈㅔ⿄ AIS˅ˈᰃϔ⾡ᮄൟⱘࡽ㟾䆒໛DŽᅗᰃϔ


Ͼᑓ᪁ᓣⱘᑨㄨ఼㋏㒳ˈ㛑໳೼ VHF87B ੠ 88B ϸϾ乥䘧Ϟ৥ኌϞ㠍㠊ㅵ⧚䚼䮼੠݊Ҫ㺙᳝ AIS 䆒໛
ⱘ㠍㠊থ䗕৘㉏ֵᙃˈৠᯊ AIS ৃᅲᯊ㦋পᴀ㠍਼ೈ 50̚60 ⍋䞠‫Ⳃݙ‬ᷛ㠍ⱘ৘㉏ֵᙃDŽ಴ℸ㠍㠊

198
OMET 2006 199
Agent П䯈ⱘ䗮䆃䞛⫼෎Ѣ AIS ⱘ⚍ᇍ⚍Ⳉ᥹䗮䆃ᮍᓣDŽᔧথ䗕ᮍ⫳៤њ‫݋‬ԧ䗮䆃‫ݙ‬ᆍৢˈᣝ✻䗮䆃ण
䆂ᇚ‫ݙ‬ᆍ㒘㺙៤ヺড় AIS ⷁ᭄ֵ᥂Ḑᓣⱘ᭄᥂ࣙˈ✊ৢ䗮䖛 AIS ҹⷁֵⱘᔶᓣথ䗕㒭Ⳃᷛ AgentDŽЎњ
ᅲ⦄ Agent П䯈ⱘ䗮䆃ˈ↣Ͼ Agent 䛑䳔㽕‫݋‬᳝⍜ᙃ᥹ᬊ㓧‫ކ‬ऎˈᴹᄬᬒ⬅ AIS ᥹ᬊࠄⱘⷁֵ⍜ᙃDŽ೼
ᴀ᭛Ё᥹ᬊ⍜ᙃ㓧‫ކ‬ऎⱘᅲ⦄ᰃ䞛⫼݇㋏᭄᥂ᑧЁⱘ᭄᥂㸼ᔶᓣˈे↣Ͼ Agent ᇍᑨϔϾ᭄᥂ᑧ㸼ˈ㸼
Ёⱘ䆄ᔩ㸼⼎䆹 Agent 䖛এঞᔧࠡ᥹ᬊࠄⱘ⍜ᙃDŽAgent ᇍѢ᥹ᬊ⍜ᙃⱘ໘⧚䞛⫼䕂䆶ⱘᮍ⊩ˈेϡᮁ
Ẕ㋶᭄݊᥂㸼Ёᰃ৺᳝ᮄⱘ䆄ᔩ㹿䗑ࡴˈབᵰ᳝ˈ䇏প䆹ᴵ䆄ᔩˈᑊᣝ✻䗮ֵण䆂㾷䞞䗮䆃‫ݙ‬ᆍˈᑊḍ
᥂㾷䞞ⱘ㒧ᵰᠻ㸠ϡৠⱘ໘⧚䖛⿟ˈ᳝ᯊ䖬䳔㽕ᇚ໘⧚㒧ᵰҹ⍜ᙃⱘᔶᓣ䖨ಲ㒭⍜ᙃথ䗕ᮍDŽ䖭⾡䗮䆃
ᮍᓣ‫݋‬᳝Џࡼথ䗕੠㹿ࡼ᥹ᬊⱘ⡍⚍DŽ
㠍㠊 Agent Ϣ਼䖍⦃๗ⱘѸѦ߭⬅Ӵᛳ఼῵ഫ੠ᠻ㸠఼῵ഫᴹᅲ⦄DŽӴᛳ఼῵ഫ䗮䖛ֵᙃ㵡ড়ᡔᴃ
ᇚᴹ㞾㔫㒣ǃ䅵⿟ҾǃGPSǃ⌟⏅ҾǃRADARǃ⇨䈵䆄ᔩҾǃECDIS ㄝ䆒໛ⱘ৘⾡᭄᥂ҹᣛᅮⱘḐᓣ
ᄬܹᇍᑨⱘ᭄᥂ᑧ㸼ЁˈAgent 䞛⫼䕂䆶ⱘᮍᓣϡᮁẔ㋶᭄݊᥂㸼Ёᰃ৺᳝ᮄⱘ䆄ᔩ㹿䗑ࡴˈབᵰ᳝ˈ
߭᳈ᮄ㠍㠊 Agent ⱘֵᗉঞ݊ᇍ⦃๗ⱘᛳⶹDŽ㗠⬅㉏Ḛᶊ㒣䅵ㅫǃ᥼⧚ǃӬ࣪㗠ᕫࠄⱘ䙓䅽᪡㠍ᮍḜ߭
ҹ⍜ᙃⱘᮍᓣⳈ᥹偅ࡼᠻ㸠఼ᠻ㸠DŽ

4. ໮ Agent 㠍㠊䙓⺄‫އ‬ㄪ㋏㒳ⱘᎹ԰ᴎࠊ

ϟ䴶㒭ߎ෎Ѣ໮ Agent ⧚䆎੠ᡔᴃⱘ໮㠍䙓⺄‫އ‬ㄪ㋏㒳ⱘᎹ԰ᴎࠊ˖


˄1˅㋏㒳߱ྟ࣪˗
˄2˅ᴀ㠍 Agent 䗮䖛⍜ᙃⲥ਀੠⍜ᙃ໘⧚ˈ䇗⫼㉏ḚᶊЁⱘⳌᑨᮍ⊩ᅲᯊ᳈ᮄᴀ㠍ⱘֵᗉ੠ᡓ
䇎ˈϡᮁᛳⶹ਼䖍㟾㸠⦃๗੠㠍㠊ࡼᗕ˗
˄3˅߸ᮁᰃ৺ϢӮ䘛㠍㠊៪∈Ϟ∈ϟ䴭ᗕ⹡㟾⠽П䯈ᄬ೼⺄ᩲॅ䰽ˈབᵰ≵᳝߭䕀˄2˅˗བᵰᄬ
೼⺄ᩲॅ䰽ˈ߭䕀˄4˅˗
˄4˅䗮䖛䅵ㅫǃ᥼⧚ˈ㦋ᕫ䙓ᓔ᠔᳝∈Ϟ੠∈ϟ⠽ᷛⱘ᳔ӬᮍḜ˄᳔ӬᮍḜᰃҢᅝܼᗻ੠㒣⌢ᗻ
ϸϾ㾦ᑺᴹ㸵䞣ˈᴀ㠍ᑨ䆹䞛পⱘ㟾৥ǃ㟾䗳੠ᮍḜᅲᮑᯊ䯈˅˗
˄5˅Ẕ偠ℹ偸˄4˅ᦤߎⱘ᳔ӬᮍḜᰃ৺䍙ߎњᴀ㠍ⱘНࡵ䙓䅽ᐙᑺᖡ䅽ᑺˈབᵰ≵᳝߭䕀
˄8˅˗བᵰ䍙ߎњᴀ㠍ⱘНࡵ䙓䅽ᐙᑺᖡ䅽ᑺˈ߭䕀˄6˅˗
˄6˅ᴀ㠍 Agent থ䍋णଚˈ䇋∖Ӯ䘛㠍㠊 Agent ⱘᬃᣕˈҹ‫ޣ‬ᇥᴀ㠍䙓䅽ᐙᑺˈৠᯊֱ䱰᠔᳝㠍
㠊ⱘᅝܼDŽ
˄7˅Ӯ䘛㠍㠊 Agent П䯈ḍ᥂णଚㄪ⬹䖯㸠णଚˈᕫߎѦ߽៪᳝߽Ѣܼሔⱘ᳔Ӭ䙓⺄ᮍḜˈ⹂ᅮ
↣㠬㠍㠊 Agent ᑨ䆹ᠻ㸠ⱘ䙓⺄᥾ᮑ˗
˄8˅䗮䖛 AIS ৥᠔᳝Ӯ䘛㠍㠊䗮᡹ᴀ㠍ⱘ᪡㒉ᛣ೒ˈ೼ᅲᮑᯊ䯈ࠄᴹᯊᠻ㸠䆹ᮍḜ˗
˄9˅ᔧ䅽⏙᠔᳝ॅ䰽⠽ᷛৢˈᴀ㠍ᘶ໡ॳ㟾䗍ˈ✊ৢ䕀˄2˅DŽ

5. 㒧ᴳ䇁

䩜ᇍ㠍㠊䙓⺄‫އ‬ㄪ㋏㒳ᓎ῵䲒੠ߚᏗᓣ䙓⺄‫އ‬ㄪ㋏㒳ⱘ䳔∖ˈᴀ᭛ᦤߎњ䞛⫼໮ Agent 㒘㒛ⱘण䇗


੠णଚ῵ᓣᴹ㾷‫އ‬䙓⺄䯂乬DŽ䖭⾡ᓎ῵ᮍᓣⱘӬ⚍೼Ѣ˖ᇚ↣㠬㠍㠊ᅮНЎϔϾ Agentˈ‫ߚܙ‬ԧ⦄њ㠍
㠊೼䙓⺄䖛⿟Ёⱘ⣀ゟ㞾⊏ᗻ੠໮㠬㠍㠊䯈ৃҹ䖯㸠ֵᙃѸѦ੠䙓䅽णଚⱘড়԰㛑࡯ˈ೼ϔᅮ⿟ᑺϞᅲ
⦄њҎ㠍ড়ϔⱘᗱᛇDŽ෎Ѣ໮ Agent 㒘㒛ⱘ䯂乬∖㾷ৃҹ䰡Ԣ䙓⺄‫އ‬ㄪⱘ䲒ᑺˈԚ䳔㽕៥Ӏ䖯ϔℹⷨお
ⱘᎹ԰䖬ᕜ໮ˈབԩࠊᅮ㠍㠊 Agent П䯈ⱘणଚㄪ⬹Ϣᴎࠊˈབԩᇍ㠍㠊 Agent ⱘ⺄ᩲॅ䰽ᑺ䆘Ӌ῵
ൟǃНࡵ䙓䅽ᐙᑺᡓফᑺ䆘Ӌ῵ൟ੠णࡽ䙓䅽ᐙᑺᡓফᑺ䆘Ӌ῵ൟ䖯㸠ᓎ῵ҹঞ䗮䖛໻䞣ӓⳳ䆩偠偠䆕
Ⳍ݇ㅫ⊩ㄝ䛑ᰃ៥Ӏℷ೼ⷨおⱘ‫ݙ‬ᆍˈᇚ೼ҹৢⱘ᭛ゴЁ䖯ϔℹ䆎䗄DŽ

খ㗗᭛⤂˖

[1]H. Itoh, “Vessels”, In. T. Yukimachi (Eds), Human factors for human error prevention[C], Techno system, Tokyo, 2004.
[2]䚥ЁНˈਈ‫ܚ‬味. 㠍㠊䙓⺄‫އ‬ㄪ[M]. ໻䖲ˈ໻䖲⍋џ໻ᄺߎ⠜⼒ˈ2000.
[3]J. Kearon. Computer Programs for Collision Avoidance and Traffic Keeping[C]. Conference on Mathematical Aspects on Marine Traffic,
London: Academic Press, 1977.
[4]䍉ࢆᵒ, ㄝ. 㠍㠊偒偊ਬЏ㾖⺄ᩲॅ䰽ᑺⱘ⌟ᑺ[J]. ໻䖲⍋䖤ᄺ䰶ᄺ᡹, 1990, 16(1): 29-31.
[5]ᴢБ࿰ˈ䰜㘾䌉. 㠍㠊㞾ࡼ䙓⺄ᮍ⊩ⱘⷨお[J]. Ё೑㟾⍋, 1999(1)˖20-24.
[6]F. P. Coenen, et al. Knowledge-based collision avoidance[J]. The Journal of Navigation, 1980, 42(1): 107-116.

OMET 2006 199


200 OMET 2006
[7]Saburo TSURUTA, et al. Basic research on an expert system for navigation at sea(—collision avoidance expert system—)[J]. The Journal
of Japan Institute of Navigation, 1987, 77: 133-139.
[8]M. Inaish, et al. Basic research on a collision avoidance system using neural networks[C]. Proceedings IAIN91, 1991.
[9]Yuhong Liu, et al. A Fuzzy-Neural Inference Network for Ship Collision Avoidance[C]. 2005 IEEE The Third International Conference
on Machine Learning and Cybernetics ˄ICMLC2005˅˖4754-4759.
[10]R. S´ mierzchalski, Modeling of Ship Trajectory in Collision Situations by an Evolutionary Algorithm[J], IEEE Tranactions on
Evolutionary Computation,2000, 4(3): 227-241.
[11]䚥ЁН,ਈ‫ܚ‬味.㠍㠊䙓⺄ⱘ῵㊞‫އ‬ㄪ[J].໻䖲⍋џ໻ᄺᄺ᡹, 1996, 22(2): 5-8.
[12]ᑨ຿৯,ᮑᳱ‫ع‬,ᴼ⼲࣪. ෎Ѣ bayes ῵ൟⱘ䘫Ӵㅫ⊩೼䙓⺄㟾䏃䆒䅵Ёⱘᑨ⫼[C].ܼ೑म຿⫳ᄺᴃ䆎യ˄Ѹ䗮䖤䕧Ꮉ⿟ᄺ⾥˅䆎
᭛䲚. 2005: 67-72.
[13]Liu Yuhong. Structure Design of Intelligent Decision Support System for Navigation Collision Avoidance[C]. Proceedings of The Third
International Conference on Machine Learning and Cybernetics, 2004: 3997-4002.
[14]Shenhua YANG, Lina Li, Chaojian Shi. ECDIS Based Decision-Making System for Vessel Automatic Collision Avoidance on Restricted
Water Area[C]. Proceedings of WCICA 2006, Volume 9: 7118-7122.
[15]M. Wooldridge, et al. Intelligent Agents: Theory and Practice[J]. The KnowledgeEngineering Review, 1995, 10 (2): 115-152.
[16]ᴢ㣅. ໮ Agent ㋏㒳ঞ݊೼乘⌟Ϣᱎ㛑Ѹ䗮㋏㒳Ёⱘᑨ⫼[M]. Ϟ⍋˖ढϰ⧚Ꮉ໻ᄺߎ⠜⼒ˈ2004.
[17]ԩ♢⼹,䰜㥬㧠. Agent ੠໮ Agent ㋏㒳ⱘ䆒䅵Ϣᑨ⫼[M]. ℺∝˖℺∝໻ᄺߎ⠜⼒ˈ2001.
[18]C. J. Jenny. Process Partitioning in Distributed Systems[C]. Digest of Papers NTC’77, 1977: 1-10.
[19]R. G. Smith. The Contract Net Protocol: High-Level Communication and Control in a Distributed Problem Solver[C]. IEEE Transactions
on Computer, 1980, 29(12): 1104-1113.
[20]Y. Shoham. Agent-Oriented Programming[J]. Artificial Intelligence, 1993, (60): 51-92.

200

Вам также может понравиться