ಎಐ ನಲ್ಲಿ ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳಲು ಒಂದು ಸಮಗ್ರ ಮಾರ್ಗದರ್ಶಿ. ಇದರಲ್ಲಿ ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಗಳು, ಘಟಕಗಳು, ಗೇಮಿಂಗ್, ರೋಬೋಟಿಕ್ಸ್ ಹಾಗೂ ಇತರ ಕ್ಷೇತ್ರಗಳಲ್ಲಿನ ಪ್ರಾಯೋಗಿಕ ಅನ್ವಯಗಳ ಕುರಿತು ವಿವರಿಸಲಾಗಿದೆ.
ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆ: ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳ ಬಗ್ಗೆ ಒಂದು ಆಳವಾದ ನೋಟ
ಕೃತಕ ಬುದ್ಧಿಮತ್ತೆಯ ವಿಸ್ತಾರವಾದ ಮತ್ತು ವಿಕಸಿಸುತ್ತಿರುವ ಜಗತ್ತಿನಲ್ಲಿ, ಡೆವಲಪರ್ಗಳು ಶಕ್ತಿಶಾಲಿ, ವಿಸ್ತರಿಸಬಲ್ಲ ಮತ್ತು ಅರ್ಥಗರ್ಭಿತ ಸಾಧನಗಳನ್ನು ನಿರಂತರವಾಗಿ ಹುಡುಕುತ್ತಿರುತ್ತಾರೆ. ನಮ್ಮ ನೆಚ್ಚಿನ ವಿಡಿಯೋ ಗೇಮ್ಗಳಲ್ಲಿನ ನಾನ್-ಪ್ಲೇಯರ್ ಕ್ಯಾರೆಕ್ಟರ್ಗಳಿಂದ (NPCs) ಹಿಡಿದು, ಗೋದಾಮುಗಳಲ್ಲಿ ಪ್ಯಾಕೇಜ್ಗಳನ್ನು ವಿಂಗಡಿಸುವ ಸ್ವಾಯತ್ತ ರೋಬೋಟ್ಗಳವರೆಗೆ, ನಂಬಲರ್ಹ ಮತ್ತು ಪರಿಣಾಮಕಾರಿ ಎಐ ವರ್ತನೆಯನ್ನು ರಚಿಸುವುದು ಒಂದು ಬೃಹತ್ ಕಾರ್ಯವಾಗಿದೆ. ಇದಕ್ಕಾಗಿ ಹಲವು ತಂತ್ರಗಳಿದ್ದರೂ, ಒಂದು ತಂತ್ರವು ತನ್ನ ಸರಳತೆ ಮತ್ತು ನಮ್ಯತೆಯಿಂದಾಗಿ ಪ್ರಬಲವಾಗಿ ಹೊರಹೊಮ್ಮಿದೆ: ಅದೇ ಬಿಹೇವಿಯರ್ ಟ್ರೀ (BT).
ನೀವು ಎಂದಾದರೂ ಒಂದು ಆಟದಲ್ಲಿ ಶತ್ರುವು ಬುದ್ಧಿವಂತಿಕೆಯಿಂದ ಅಡಗಿಕೊಳ್ಳುವುದನ್ನು, ತನ್ನ ಮಿತ್ರರೊಂದಿಗೆ ಸಮನ್ವಯ ಸಾಧಿಸುವುದನ್ನು ಮತ್ತು ಪರಿಸ್ಥಿತಿಗೆ ತಕ್ಕಂತೆ ತನ್ನ ತಂತ್ರಗಳನ್ನು ಬದಲಾಯಿಸುವುದನ್ನು ನೋಡಿ ಬೆರಗಾಗಿದ್ದರೆ, ನೀವು ಬಿಹೇವಿಯರ್ ಟ್ರೀಯ ಕಾರ್ಯವೈಖರಿಯನ್ನು ನೋಡಿದ್ದೀರಿ ಎಂದೇ ಅರ್ಥ. ಈ ಲೇಖನವು ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳ ಬಗ್ಗೆ ಸಮಗ್ರವಾದ ಪರಿಶೋಧನೆಯನ್ನು ಒದಗಿಸುತ್ತದೆ. ಇದು ಮೂಲಭೂತ ಪರಿಕಲ್ಪನೆಗಳಿಂದ ಹಿಡಿದು ಮುಂದುವರಿದ ಅನ್ವಯಗಳವರೆಗೆ, ಜಾಗತಿಕ ಮಟ್ಟದ ಡೆವಲಪರ್ಗಳು, ವಿನ್ಯಾಸಕರು ಮತ್ತು ಎಐ ಉತ್ಸಾಹಿಗಳಿಗಾಗಿ ವಿನ್ಯಾಸಗೊಳಿಸಲಾಗಿದೆ.
ಸರಳ ವ್ಯವಸ್ಥೆಗಳಲ್ಲಿನ ಸಮಸ್ಯೆ: ನಮಗೆ ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳು ಏಕೆ ಬೇಕು?
ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳ ನಾವೀನ್ಯತೆಯನ್ನು ಶ್ಲಾಘಿಸಲು, ಅದರ ಹಿಂದಿನ ತಂತ್ರಜ್ಞಾನಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಸಹಾಯಕ. ಹಲವು ವರ್ಷಗಳ ಕಾಲ, ಸರಳ ಎಐ ಗಾಗಿ ಫೈನೈಟ್ ಸ್ಟೇಟ್ ಮಷಿನ್ (FSM) ಒಂದು ಪ್ರಮುಖ ಪರಿಹಾರವಾಗಿತ್ತು.
ಒಂದು FSM, ಕೆಲವು ಸ್ಟೇಟ್ಗಳನ್ನು (ಉದಾ. ಗಸ್ತು ತಿರುಗುವುದು, ಬೆನ್ನಟ್ಟುವುದು, ದಾಳಿ ಮಾಡುವುದು) ಮತ್ತು ಅವುಗಳ ನಡುವಿನ ಪರಿವರ್ತನೆಗಳನ್ನು (ಉದಾ. "ಶತ್ರು ಕಾಣಿಸಿದರೆ", ಗಸ್ತು ತಿರುಗುವುದರಿಂದ ಬೆನ್ನಟ್ಟುವುದಕ್ಕೆ ಪರಿವರ್ತನೆ) ಒಳಗೊಂಡಿರುತ್ತದೆ. ಕೆಲವು ನಿರ್ದಿಷ್ಟ ವರ್ತನೆಗಳನ್ನು ಹೊಂದಿರುವ ಸರಳ ಎಐಗೆ FSMಗಳು ಚೆನ್ನಾಗಿ ಕೆಲಸ ಮಾಡುತ್ತವೆ. ಆದರೆ, ಸಂಕೀರ್ಣತೆ ಹೆಚ್ಚಾದಂತೆ, ಅವುಗಳನ್ನು ನಿರ್ವಹಿಸುವುದು ಕಷ್ಟವಾಗುತ್ತದೆ.
- ವಿಸ್ತರಣೆಯ ಸಮಸ್ಯೆಗಳು: "ಅಡಗಿಕೊಳ್ಳು" ಎಂಬ ಹೊಸ ಸ್ಟೇಟ್ ಅನ್ನು ಸೇರಿಸಲು, ಅಸ್ತಿತ್ವದಲ್ಲಿರುವ ಪ್ರತಿಯೊಂದು ಸ್ಟೇಟ್ನಿಂದಲೂ ಪರಿವರ್ತನೆಗಳನ್ನು ರಚಿಸಬೇಕಾಗಬಹುದು. ಇದು ಡೆವಲಪರ್ಗಳು "ಸ್ಪಗೆಟಿ ಕೋಡ್" ಎಂದು ಕರೆಯುವ ಸ್ಥಿತಿಗೆ ಕಾರಣವಾಗುತ್ತದೆ—ಇದು ಡೀಬಗ್ ಮಾಡಲು ಮತ್ತು ವಿಸ್ತರಿಸಲು ಕಷ್ಟಕರವಾದ ಸಂಪರ್ಕಗಳ ಜಟಿಲ ಜಾಲವಾಗಿದೆ.
- ಮಾಡ್ಯುಲಾರಿಟಿಯ ಕೊರತೆ: ವರ್ತನೆಗಳು ಸ್ಟೇಟ್ಗಳಿಗೆ ಬಿಗಿಯಾಗಿ ಜೋಡಿಸಲ್ಪಟ್ಟಿರುತ್ತವೆ. "ammo ಹುಡುಕು" ಎಂಬ ತರ್ಕವನ್ನು ಬೇರೆ ಬೇರೆ ಸನ್ನಿವೇಶಗಳಲ್ಲಿ ಮರುಬಳಕೆ ಮಾಡುವುದು ಕೋಡ್ ಮತ್ತು ತರ್ಕವನ್ನು ನಕಲು ಮಾಡದೆ ಕಷ್ಟವಾಗುತ್ತದೆ.
- ಕಟ್ಟುನಿಟ್ಟಿನ ಸ್ವಭಾವ: ಒಂದು FSM ಯಾವಾಗಲೂ ಒಂದೇ ಒಂದು ಸ್ಟೇಟ್ನಲ್ಲಿರುತ್ತದೆ. ಇದು ಸೂಕ್ಷ್ಮ ಅಥವಾ ಬಹು-ಪದರದ ವರ್ತನೆಗಳನ್ನು ರೂಪಿಸಲು ಕಷ್ಟಕರವಾಗಿಸುತ್ತದೆ.
ಈ ಸಮಸ್ಯೆಗಳನ್ನು ಪರಿಹರಿಸಲು ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳನ್ನು ಅಭಿವೃದ್ಧಿಪಡಿಸಲಾಯಿತು. ಇದು ಸಂಕೀರ್ಣ ಎಐ ಏಜೆಂಟ್ಗಳನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸಲು ಹೆಚ್ಚು ರಚನಾತ್ಮಕ, ಮಾಡ್ಯುಲರ್ ಮತ್ತು ವಿಸ್ತರಿಸಬಲ್ಲ ವಿಧಾನವನ್ನು ನೀಡುತ್ತದೆ.
ಬಿಹೇವಿಯರ್ ಟ್ರೀ ಎಂದರೇನು? ಎಐಗೆ ಒಂದು ಶ್ರೇಣೀಕೃತ ವಿಧಾನ
ಮೂಲಭೂತವಾಗಿ, ಬಿಹೇವಿಯರ್ ಟ್ರೀ ಎನ್ನುವುದು ಒಂದು ಎಐ ಏಜೆಂಟ್ಗಾಗಿ ನಿರ್ಧಾರ ತೆಗೆದುಕೊಳ್ಳುವ ಪ್ರಕ್ರಿಯೆಯನ್ನು ನಿಯಂತ್ರಿಸುವ ನೋಡ್ಗಳ ಶ್ರೇಣೀಕೃತ ಟ್ರೀ ಆಗಿದೆ. ಇದನ್ನು ಒಂದು ಕಂಪನಿಯ ಸಾಂಸ್ಥಿಕ ಚಾರ್ಟ್ನಂತೆ ಯೋಚಿಸಿ. ಮೇಲ್ಭಾಗದಲ್ಲಿರುವ ಸಿಇಒ (ರೂಟ್ ನೋಡ್) ಪ್ರತಿಯೊಂದು ಕೆಲಸವನ್ನೂ ಮಾಡುವುದಿಲ್ಲ; ಬದಲಾಗಿ, ಅವರು ಮ್ಯಾನೇಜರ್ಗಳಿಗೆ (ಕಾಂಪೋಸಿಟ್ ನೋಡ್ಗಳು) ಕಾರ್ಯಗಳನ್ನು ವಹಿಸುತ್ತಾರೆ, ಅವರು ತಮ್ಮ ಅಧೀನದಲ್ಲಿರುವ ನಿರ್ದಿಷ್ಟ ಕೆಲಸಗಳನ್ನು ಮಾಡುವ ಉದ್ಯೋಗಿಗಳಿಗೆ (ಲೀಫ್ ನೋಡ್ಗಳು) ವಹಿಸುತ್ತಾರೆ.
ಈ ಟ್ರೀ ಅನ್ನು ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ, ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರತಿ ಫ್ರೇಮ್ ಅಥವಾ ಅಪ್ಡೇಟ್ ಸೈಕಲ್ನಲ್ಲಿ ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾಗುತ್ತದೆ. ಈ ಪ್ರಕ್ರಿಯೆಯನ್ನು "ಟಿಕ್" ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ. ಟಿಕ್ ಸಿಗ್ನಲ್ ಟ್ರೀಯ ಕೆಳಗೆ ಪ್ರಸಾರವಾಗುತ್ತದೆ, ಮತ್ತು ನಿಯಮಗಳ ಆಧಾರದ ಮೇಲೆ ನಿರ್ದಿಷ್ಟ ಮಾರ್ಗದಲ್ಲಿರುವ ನೋಡ್ಗಳನ್ನು ಸಕ್ರಿಯಗೊಳಿಸುತ್ತದೆ. ಪ್ರತಿಯೊಂದು ನೋಡ್, ಪೂರ್ಣಗೊಂಡ ನಂತರ, ತನ್ನ ಪೋಷಕ ನೋಡ್ಗೆ ಒಂದು ಸ್ಟೇಟಸ್ ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ:
- SUCCESS (ಯಶಸ್ವಿ): ನೋಡ್ ಪ್ರತಿನಿಧಿಸುವ ಕಾರ್ಯವು ಯಶಸ್ವಿಯಾಗಿ ಪೂರ್ಣಗೊಂಡಿದೆ.
- FAILURE (ವಿಫಲ): ಕಾರ್ಯವನ್ನು ಪೂರ್ಣಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಲಿಲ್ಲ.
- RUNNING (ಚಾಲನೆಯಲ್ಲಿದೆ): ಕಾರ್ಯವು ಪ್ರಗತಿಯಲ್ಲಿದೆ ಮತ್ತು ಪೂರ್ಣಗೊಳ್ಳಲು ಹೆಚ್ಚಿನ ಸಮಯ ಬೇಕಾಗುತ್ತದೆ (ಉದಾ. ಒಂದು ಸ್ಥಳಕ್ಕೆ ನಡೆಯುವುದು).
ಪೋಷಕ ನೋಡ್ ಈ ಸ್ಟೇಟಸ್ಗಳನ್ನು ಬಳಸಿಕೊಂಡು ತನ್ನ ಯಾವ ಮಗುವನ್ನು ಮುಂದೆ ಟಿಕ್ ಮಾಡಬೇಕೆಂದು ನಿರ್ಧರಿಸುತ್ತದೆ. ಈ ನಿರಂತರ, ಮೇಲಿನಿಂದ ಕೆಳಗಿನ ಮರು-ಮೌಲ್ಯಮಾಪನವು ಬಿಟಿಗಳನ್ನು ಪ್ರಪಂಚದಲ್ಲಿ ಬದಲಾಗುತ್ತಿರುವ ಪರಿಸ್ಥಿತಿಗಳಿಗೆ ಅತ್ಯಂತ ವೇಗವಾಗಿ ಪ್ರತಿಕ್ರಿಯಿಸುವಂತೆ ಮಾಡುತ್ತದೆ.
ಬಿಹೇವಿಯರ್ ಟ್ರೀಯ ಪ್ರಮುಖ ಘಟಕಗಳು
ಪ್ರತಿಯೊಂದು ಬಿಹೇವಿಯರ್ ಟ್ರೀಯು ಕೆಲವು ಮೂಲಭೂತ ರೀತಿಯ ನೋಡ್ಗಳಿಂದ ನಿರ್ಮಿಸಲ್ಪಟ್ಟಿದೆ. ಈ ಬಿಲ್ಡಿಂಗ್ ಬ್ಲಾಕ್ಗಳನ್ನು ಅರ್ಥಮಾಡಿಕೊಳ್ಳುವುದು ಈ ವ್ಯವಸ್ಥೆಯನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವ ಕೀಲಿಯಾಗಿದೆ.
1. ಲೀಫ್ ನೋಡ್ಗಳು: ಕ್ರಿಯೆಗಳು ಮತ್ತು ಷರತ್ತುಗಳು
ಲೀಫ್ ನೋಡ್ಗಳು ಟ್ರೀಯ ಕೊನೆಯ ಬಿಂದುಗಳಾಗಿವೆ—ಇವು ಕಾರ್ಯಗಳನ್ನು ನಿರ್ವಹಿಸುವ ಅಥವಾ ಷರತ್ತುಗಳನ್ನು ಪರಿಶೀಲಿಸುವ ನಿಜವಾದ ಕೆಲಸಗಾರರು. ಇವಕ್ಕೆ ಯಾವುದೇ ಮಕ್ಕಳ ನೋಡ್ಗಳಿರುವುದಿಲ್ಲ.
- ಆಕ್ಷನ್ ನೋಡ್ಗಳು (Action Nodes): ಈ ನೋಡ್ಗಳು ಆಟದ ಜಗತ್ತಿನಲ್ಲಿ ಒಂದು ಕ್ರಿಯೆಯನ್ನು ನಿರ್ವಹಿಸುತ್ತವೆ. ಕ್ರಿಯೆಯು ತಕ್ಷಣವೇ ಮುಗಿಯುವುದಾದರೆ (ಉದಾ. ಶಸ್ತ್ರವನ್ನು ಹಾರಿಸುವುದು), ಅದು ತಕ್ಷಣ `SUCCESS` ಅನ್ನು ಹಿಂತಿರುಗಿಸಬಹುದು. ಇದಕ್ಕೆ ಸಮಯ ಹಿಡಿಯುವುದಾದರೆ (ಉದಾ. ಒಂದು ಬಿಂದುವಿಗೆ ಚಲಿಸುವುದು), ಅದು ಮುಗಿಯುವವರೆಗೆ ಪ್ರತಿ ಟಿಕ್ನಲ್ಲೂ `RUNNING` ಎಂದು ಹಿಂತಿರುಗಿಸುತ್ತದೆ, ಮತ್ತು ಪೂರ್ಣಗೊಂಡಾಗ `SUCCESS` ಎಂದು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗಳು: `MoveToEnemy()`, `PlayAnimation("Attack")`, `ReloadWeapon()`.
- ಕಂಡೀಶನ್ ನೋಡ್ಗಳು (Condition Nodes): ಇವು ಜಗತ್ತಿನ ಸ್ಥಿತಿಯನ್ನು ಬದಲಾಯಿಸದೆ ಪರಿಶೀಲಿಸುವ ವಿಶೇಷ ರೀತಿಯ ಲೀಫ್ ನೋಡ್ಗಳಾಗಿವೆ. ಇವು ಟ್ರೀಯಲ್ಲಿ ದ್ವಾರಗಳಂತೆ ಕಾರ್ಯನಿರ್ವಹಿಸುತ್ತವೆ, ಷರತ್ತು ನಿಜವಾಗಿದ್ದರೆ `SUCCESS` ಮತ್ತು ಸುಳ್ಳಾಗಿದ್ದರೆ `FAILURE` ಎಂದು ಹಿಂತಿರುಗಿಸುತ್ತವೆ. ಉದಾಹರಣೆಗಳು: `IsHealthLow?`, `IsEnemyInLineOfSight?`, `HasAmmunition?`.
2. ಕಾಂಪೋಸಿಟ್ ನೋಡ್ಗಳು: ನಿಯಂತ್ರಣದ ಹರಿವು
ಕಾಂಪೋಸಿಟ್ ನೋಡ್ಗಳು ಟ್ರೀಯ ಮ್ಯಾನೇಜರ್ಗಳಾಗಿವೆ. ಇವು ಒಂದು ಅಥವಾ ಹೆಚ್ಚಿನ ಮಕ್ಕಳ ನೋಡ್ಗಳನ್ನು ಹೊಂದಿರುತ್ತವೆ ಮತ್ತು ಯಾವ ಮಗುವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬೇಕೆಂದು ನಿರ್ಧರಿಸಲು ನಿರ್ದಿಷ್ಟ ನಿಯಮಗಳನ್ನು ಬಳಸುತ್ತವೆ. ಇವು ಎಐನ ತರ್ಕ ಮತ್ತು ಆದ್ಯತೆಗಳನ್ನು ವ್ಯಾಖ್ಯಾನಿಸುತ್ತವೆ.
-
ಸೀಕ್ವೆನ್ಸ್ ನೋಡ್ (Sequence Node): ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಬಾಣದ ಗುರುತಿನಿಂದ (→) ಅಥವಾ "AND" ಎಂದು ಗುರುತಿಸಲಾಗುತ್ತದೆ. ಸೀಕ್ವೆನ್ಸ್ ತನ್ನ ಮಕ್ಕಳನ್ನು ಎಡದಿಂದ ಬಲಕ್ಕೆ ಕ್ರಮವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಅದರ ಮಕ್ಕಳಲ್ಲಿ ಒಂದು ವಿಫಲವಾದ ತಕ್ಷಣ, ಅದು ನಿಂತು `FAILURE` ಎಂದು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಎಲ್ಲಾ ಮಕ್ಕಳು ಯಶಸ್ವಿಯಾದರೆ, ಸೀಕ್ವೆನ್ಸ್ ತಾನೇ `SUCCESS` ಎಂದು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಇದನ್ನು ಕ್ರಮವಾಗಿ ನಿರ್ವಹಿಸಬೇಕಾದ ಕಾರ್ಯಗಳ ಸರಣಿಯನ್ನು ರಚಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ.
ಉದಾಹರಣೆ: ಒಂದು `ರೀಲೋಡ್` ಸೀಕ್ವೆನ್ಸ್ ಹೀಗಿರಬಹುದು: ಸೀಕ್ವೆನ್ಸ್( `HasAmmoInInventory?`, `PlayReloadAnimation()`, `UpdateAmmoCount()` ). ಏಜೆಂಟ್ನ ಇನ್ವೆಂಟರಿಯಲ್ಲಿ ammo ಇಲ್ಲದಿದ್ದರೆ, ಮೊದಲ ಮಗು ವಿಫಲವಾಗುತ್ತದೆ, ಮತ್ತು ಇಡೀ ಸೀಕ್ವೆನ್ಸ್ ತಕ್ಷಣವೇ ರದ್ದುಗೊಳ್ಳುತ್ತದೆ.
-
ಸೆಲೆಕ್ಟರ್ ನೋಡ್ (ಅಥವಾ ಫಾಲ್ಬ್ಯಾಕ್ ನೋಡ್): ಇದನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಪ್ರಶ್ನಾರ್ಥಕ ಚಿಹ್ನೆಯಿಂದ (?) ಅಥವಾ "OR" ಎಂದು ಗುರುತಿಸಲಾಗುತ್ತದೆ. ಸೆಲೆಕ್ಟರ್ ಕೂಡ ತನ್ನ ಮಕ್ಕಳನ್ನು ಕ್ರಮವಾಗಿ, ಎಡದಿಂದ ಬಲಕ್ಕೆ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಆದರೆ, ಅದರ ಮಕ್ಕಳಲ್ಲಿ ಒಂದು ಯಶಸ್ವಿಯಾದ ತಕ್ಷಣ ಅದು ನಿಂತು `SUCCESS` ಎಂದು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಎಲ್ಲಾ ಮಕ್ಕಳು ವಿಫಲವಾದರೆ, ಸೆಲೆಕ್ಟರ್ ತಾನೇ `FAILURE` ಎಂದು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಇದನ್ನು ಫಾಲ್ಬ್ಯಾಕ್ ವರ್ತನೆಗಳನ್ನು ರಚಿಸಲು ಅಥವಾ ಸಾಧ್ಯತೆಗಳ ಪಟ್ಟಿಯಿಂದ ಒಂದು ಕ್ರಿಯೆಯನ್ನು ಆಯ್ಕೆ ಮಾಡಲು ಬಳಸಲಾಗುತ್ತದೆ.
ಉದಾಹರಣೆ: ಒಂದು `ಕದನ` ಸೆಲೆಕ್ಟರ್ ಹೀಗಿರಬಹುದು: ಸೆಲೆಕ್ಟರ್( `PerformMeleeAttack()`, `PerformRangedAttack()`, `Flee()` ). ಎಐ ಮೊದಲು ಕೈ-ಕೈ ಕಾದಾಟಕ್ಕೆ ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಅದು ಸಾಧ್ಯವಾಗದಿದ್ದರೆ (ಉದಾ. ಗುರಿ ತುಂಬಾ ದೂರವಿದ್ದರೆ), ಅದು ವಿಫಲವಾಗುತ್ತದೆ, ಮತ್ತು ಸೆಲೆಕ್ಟರ್ ಮುಂದಿನ ಮಗುವಿಗೆ ಹೋಗುತ್ತದೆ: ದೂರದ ದಾಳಿ. ಅದೂ ವಿಫಲವಾದರೆ (ಉದಾ. ammo ಇಲ್ಲದಿದ್ದರೆ), ಅದು ಕೊನೆಯ ಆಯ್ಕೆಗೆ ಹೋಗುತ್ತದೆ: ಪಲಾಯನ.
-
ಪ್ಯಾರಲಲ್ ನೋಡ್ (Parallel Node): ಈ ನೋಡ್ ತನ್ನ ಎಲ್ಲಾ ಮಕ್ಕಳನ್ನು ಏಕಕಾಲದಲ್ಲಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಅದರ ಯಶಸ್ಸು ಅಥವಾ ವೈಫಲ್ಯವು ನಿರ್ದಿಷ್ಟಪಡಿಸಿದ ನೀತಿಯನ್ನು ಅವಲಂಬಿಸಿರುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಒಂದು ಮಗು ಯಶಸ್ವಿಯಾದ ತಕ್ಷಣ ಅದು `SUCCESS` ಎಂದು ಹಿಂತಿರುಗಿಸಬಹುದು, ಅಥವಾ ಎಲ್ಲಾ ಮಕ್ಕಳು ಯಶಸ್ವಿಯಾಗುವವರೆಗೆ ಕಾಯಬಹುದು. ಇದು ಒಂದು ಮುಖ್ಯ ಕಾರ್ಯವನ್ನು ನಡೆಸುತ್ತಿರುವಾಗ, ಏಕಕಾಲದಲ್ಲಿ ಒಂದು ದ್ವಿತೀಯ, ಮೇಲ್ವಿಚಾರಣಾ ಕಾರ್ಯವನ್ನು ನಡೆಸಲು ಉಪಯುಕ್ತವಾಗಿದೆ.
ಉದಾಹರಣೆ: ಒಂದು `ಗಸ್ತು` ಪ್ಯಾರಲಲ್ ಹೀಗಿರಬಹುದು: ಪ್ಯಾರಲಲ್( `MoveAlongPatrolPath()`, `LookForEnemies()` ). ಎಐ ತನ್ನ ಗಸ್ತು ದಾರಿಯಲ್ಲಿ ನಡೆಯುವಾಗ ನಿರಂತರವಾಗಿ ಪರಿಸರವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡುತ್ತದೆ.
3. ಡೆಕೋರೇಟರ್ ನೋಡ್ಗಳು: ಮಾರ್ಪಾಡು ಮಾಡುವವರು
ಡೆಕೋರೇಟರ್ ನೋಡ್ಗಳು ಕೇವಲ ಒಂದೇ ಮಗುವನ್ನು ಹೊಂದಿರುತ್ತವೆ ಮತ್ತು ಆ ಮಗುವಿನ ವರ್ತನೆ ಅಥವಾ ಫಲಿತಾಂಶವನ್ನು ಮಾರ್ಪಡಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಇವು ಟ್ರೀಯನ್ನು ಗೊಂದಲಮಯವಾಗಿಸದೆ ನಿಯಂತ್ರಣ ಮತ್ತು ತರ್ಕದ ಒಂದು ಶಕ್ತಿಶಾಲಿ ಪದರವನ್ನು ಸೇರಿಸುತ್ತವೆ.
- ಇನ್ವರ್ಟರ್ (Inverter): ತನ್ನ ಮಗುವಿನ ಫಲಿತಾಂಶವನ್ನು ತಿರುಗುಮುರುಗು ಮಾಡುತ್ತದೆ. `SUCCESS` `FAILURE` ಆಗುತ್ತದೆ, ಮತ್ತು `FAILURE` `SUCCESS` ಆಗುತ್ತದೆ. `RUNNING` ಅನ್ನು ಸಾಮಾನ್ಯವಾಗಿ ಹಾಗೆಯೇ ರವಾನಿಸಲಾಗುತ್ತದೆ. ಇದು "if not" ತರ್ಕವನ್ನು ರಚಿಸಲು ಪರಿಪೂರ್ಣವಾಗಿದೆ.
ಉದಾಹರಣೆ: ಇನ್ವರ್ಟರ್( `IsEnemyVisible?` ) ಎಂಬುದು ಶತ್ರುವು ಕಾಣಿಸದಿದ್ದಾಗ ಮಾತ್ರ ಯಶಸ್ವಿಯಾಗುವ ಒಂದು ಷರತ್ತನ್ನು ರಚಿಸುತ್ತದೆ.
- ರಿಪೀಟರ್ (Repeater): ತನ್ನ ಮಗುವನ್ನು ನಿರ್ದಿಷ್ಟ ಸಂಖ್ಯೆಯ ಬಾರಿ ಅಥವಾ ಮಗು ವಿಫಲವಾಗುವವರೆಗೆ ಅನಿರ್ದಿಷ್ಟವಾಗಿ ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ.
- ಸಕ್ಸೀಡರ್ / ಫೈಲರ್ (Succeeder / Failer): ತನ್ನ ಮಗು ಏನು ಹಿಂತಿರುಗಿಸಿದರೂ, ಅನುಕ್ರಮವಾಗಿ ಯಾವಾಗಲೂ `SUCCESS` ಅಥವಾ `FAILURE` ಅನ್ನು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಇದು ಟ್ರೀಯ ಒಂದು ಶಾಖೆಯನ್ನು ಐಚ್ಛಿಕವಾಗಿಸಲು ಉಪಯುಕ್ತವಾಗಿದೆ.
- ಲಿಮಿಟರ್ / ಕೂಲ್ಡೌನ್ (Limiter / Cooldown): ತನ್ನ ಮಗುವನ್ನು ಎಷ್ಟು ಬಾರಿ ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು ಎಂಬುದನ್ನು ನಿರ್ಬಂಧಿಸುತ್ತದೆ. ಉದಾಹರಣೆಗೆ, ಒಂದು `GrenadeThrow` ಕ್ರಿಯೆಯನ್ನು ಪ್ರತಿ 10 ಸೆಕೆಂಡುಗಳಿಗೆ ಒಮ್ಮೆ ಮಾತ್ರ ನಿರ್ವಹಿಸಬಹುದೆಂದು ಖಚಿತಪಡಿಸಿಕೊಳ್ಳಲು ಲಿಮಿಟರ್ನಿಂದ ಅಲಂಕರಿಸಬಹುದು.
ಎಲ್ಲವನ್ನೂ ಒಟ್ಟಿಗೆ ಸೇರಿಸುವುದು: ಒಂದು ಪ್ರಾಯೋಗಿಕ ಉದಾಹರಣೆ
ಒಂದು ಫಸ್ಟ್-ಪರ್ಸನ್ ಶೂಟರ್ ಆಟದಲ್ಲಿ ಸರಳ ಶತ್ರು ಸೈನಿಕನ ಎಐಗಾಗಿ ಒಂದು ಬಿಹೇವಿಯರ್ ಟ್ರೀಯನ್ನು ವಿನ್ಯಾಸಗೊಳಿಸೋಣ. ಅಪೇಕ್ಷಿತ ವರ್ತನೆ ಹೀಗಿದೆ: ಸೈನಿಕನ ಮೊದಲ ಆದ್ಯತೆ ಆಟಗಾರನು ಕಾಣಿಸಿದರೆ ದಾಳಿ ಮಾಡುವುದು. ಆಟಗಾರನು ಕಾಣಿಸದಿದ್ದರೆ, ಸೈನಿಕನು ಗೊತ್ತುಪಡಿಸಿದ ಪ್ರದೇಶದಲ್ಲಿ ಗಸ್ತು ತಿರುಗಬೇಕು. ಯುದ್ಧದ ಸಮಯದಲ್ಲಿ ಸೈನಿಕನ ಆರೋಗ್ಯ ಕಡಿಮೆಯಾದರೆ, ಅವನು ಅಡಗಿಕೊಳ್ಳಲು ಜಾಗ ಹುಡುಕಬೇಕು.
ಈ ತರ್ಕವನ್ನು ನಾವು ಬಿಹೇವಿಯರ್ ಟ್ರೀಯಲ್ಲಿ ಈ ಕೆಳಗಿನಂತೆ ರಚಿಸಬಹುದು (ಮೇಲಿನಿಂದ ಕೆಳಕ್ಕೆ ಓದಿ, ಇಂಡೆಂಟೇಶನ್ ಶ್ರೇಣಿಯನ್ನು ತೋರಿಸುತ್ತದೆ):
ರೂಟ್ (ಸೆಲೆಕ್ಟರ್) |-- ಕಡಿಮೆ ಆರೋಗ್ಯದಲ್ಲಿ ಪಾರು (ಸೀಕ್ವೆನ್ಸ್) | |-- ಆರೋಗ್ಯ ಕಡಿಮೆ ಇದೆಯೇ? (ಕಂಡೀಶನ್) | |-- ಅಡಗಿಕೊಳ್ಳುವ ಸ್ಥಳ ಹುಡುಕು (ಆಕ್ಷನ್) -> ಚಲಿಸುವಾಗ RUNNING, ನಂತರ SUCCESS ಹಿಂತಿರುಗಿಸುತ್ತದೆ | `-- ಅಡಗಿಕೊ (ಆಕ್ಷನ್) | |-- ಆಟಗಾರನೊಂದಿಗೆ ಕಾದಾಟ (ಸೀಕ್ವೆನ್ಸ್) | |-- ಆಟಗಾರ ಕಾಣಿಸುತ್ತಿದ್ದಾನೆಯೇ? (ಕಂಡೀಶನ್) | |-- ಶಸ್ತ್ರ ಸಿದ್ಧವಿದೆಯೇ? (ಕಂಡೀಶನ್) | |-- ಕದನ ತರ್ಕ (ಸೆಲೆಕ್ಟರ್) | | |-- ಆಟಗಾರನ ಮೇಲೆ ಗುಂಡು ಹಾರಿಸು (ಸೀಕ್ವೆನ್ಸ್) | | | |-- ಆಟಗಾರನು ದೃಷ್ಟಿ ವ್ಯಾಪ್ತಿಯಲ್ಲಿದ್ದಾನೆಯೇ? (ಕಂಡೀಶನ್) | | | `-- ಗುಂಡು ಹಾರಿಸು (ಆಕ್ಷನ್) | | `-- ದಾಳಿ ಮಾಡುವ ಸ್ಥಾನಕ್ಕೆ ಚಲಿಸು (ಸೀಕ್ವೆನ್ಸ್) | | |-- ಇನ್ವರ್ಟರ್(ಆಟಗಾರನು ದೃಷ್ಟಿ ವ್ಯಾಪ್ತಿಯಲ್ಲಿದ್ದಾನೆಯೇ?) (ಡೆಕೋರೇಟರ್ + ಕಂಡೀಶನ್) | | `-- ಆಟಗಾರನ ಕಡೆಗೆ ಚಲಿಸು (ಆಕ್ಷನ್) | `-- ಗಸ್ತು (ಸೀಕ್ವೆನ್ಸ್) |-- ಮುಂದಿನ ಗಸ್ತು ಪಾಯಿಂಟ್ ಪಡೆಯಿರಿ (ಆಕ್ಷನ್) `-- ಪಾಯಿಂಟ್ಗೆ ಚಲಿಸು (ಆಕ್ಷನ್)
ಪ್ರತಿ "ಟಿಕ್"ನಲ್ಲಿ ಇದು ಹೇಗೆ ಕೆಲಸ ಮಾಡುತ್ತದೆ:
- ರೂಟ್ ಸೆಲೆಕ್ಟರ್ ಪ್ರಾರಂಭವಾಗುತ್ತದೆ. ಅದು ತನ್ನ ಮೊದಲ ಮಗು, `ಕಡಿಮೆ ಆರೋಗ್ಯದಲ್ಲಿ ಪಾರು` ಸೀಕ್ವೆನ್ಸ್ ಅನ್ನು ಪ್ರಯತ್ನಿಸುತ್ತದೆ.
- `ಕಡಿಮೆ ಆರೋಗ್ಯದಲ್ಲಿ ಪಾರು` ಸೀಕ್ವೆನ್ಸ್ ಮೊದಲು `ಆರೋಗ್ಯ ಕಡಿಮೆ ಇದೆಯೇ?` ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಆರೋಗ್ಯ ಕಡಿಮೆ ಇಲ್ಲದಿದ್ದರೆ, ಈ ಷರತ್ತು `FAILURE` ಎಂದು ಹಿಂತಿರುಗಿಸುತ್ತದೆ. ಸಂಪೂರ್ಣ ಸೀಕ್ವೆನ್ಸ್ ವಿಫಲವಾಗುತ್ತದೆ, ಮತ್ತು ನಿಯಂತ್ರಣವು ರೂಟ್ಗೆ ಹಿಂತಿರುಗುತ್ತದೆ.
- ರೂಟ್ ಸೆಲೆಕ್ಟರ್, ತನ್ನ ಮೊದಲ ಮಗು ವಿಫಲವಾದುದನ್ನು ನೋಡಿ, ತನ್ನ ಎರಡನೇ ಮಗುವಿಗೆ ಹೋಗುತ್ತದೆ: `ಆಟಗಾರನೊಂದಿಗೆ ಕಾದಾಟ`.
- `ಆಟಗಾರನೊಂದಿಗೆ ಕಾದಾಟ` ಸೀಕ್ವೆನ್ಸ್ `ಆಟಗಾರ ಕಾಣಿಸುತ್ತಿದ್ದಾನೆಯೇ?` ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಇಲ್ಲದಿದ್ದರೆ, ಅದು ವಿಫಲವಾಗುತ್ತದೆ, ಮತ್ತು ರೂಟ್ `ಗಸ್ತು` ಸೀಕ್ವೆನ್ಸ್ಗೆ ಹೋಗುತ್ತದೆ, ಇದರಿಂದ ಸೈನಿಕನು ಶಾಂತಿಯುತವಾಗಿ ಗಸ್ತು ತಿರುಗುತ್ತಾನೆ.
- ಆದರೆ, `ಆಟಗಾರ ಕಾಣಿಸುತ್ತಿದ್ದಾನೆಯೇ?` ಯಶಸ್ವಿಯಾದರೆ, ಸೀಕ್ವೆನ್ಸ್ ಮುಂದುವರಿಯುತ್ತದೆ. ಅದು `ಶಸ್ತ್ರ ಸಿದ್ಧವಿದೆಯೇ?` ಎಂದು ಪರಿಶೀಲಿಸುತ್ತದೆ. ಅದು ಯಶಸ್ವಿಯಾದರೆ, ಅದು `ಕದನ ತರ್ಕ` ಸೆಲೆಕ್ಟರ್ಗೆ ಮುಂದುವರಿಯುತ್ತದೆ. ಈ ಸೆಲೆಕ್ಟರ್ ಮೊದಲು `ಆಟಗಾರನ ಮೇಲೆ ಗುಂಡು ಹಾರಿಸು` ಅನ್ನು ಪ್ರಯತ್ನಿಸುತ್ತದೆ. ಆಟಗಾರನು ದೃಷ್ಟಿ ವ್ಯಾಪ್ತಿಯಲ್ಲಿದ್ದರೆ, `ಗುಂಡು ಹಾರಿಸು` ಕ್ರಿಯೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲಾಗುತ್ತದೆ.
- ಯುದ್ಧದ ಸಮಯದಲ್ಲಿ ಸೈನಿಕನ ಆರೋಗ್ಯ ಕಡಿಮೆಯಾದರೆ, ಮುಂದಿನ ಟಿಕ್ನಲ್ಲಿ ಮೊದಲ ಷರತ್ತು (`ಆರೋಗ್ಯ ಕಡಿಮೆ ಇದೆಯೇ?`) ಯಶಸ್ವಿಯಾಗುತ್ತದೆ. ಇದು `ಕಡಿಮೆ ಆರೋಗ್ಯದಲ್ಲಿ ಪಾರು` ಸೀಕ್ವೆನ್ಸ್ ಅನ್ನು ಚಲಾಯಿಸಲು ಕಾರಣವಾಗುತ್ತದೆ, ಇದರಿಂದ ಸೈನಿಕನು ಅಡಗಿಕೊಳ್ಳಲು ಜಾಗ ಹುಡುಕುತ್ತಾನೆ. ರೂಟ್ ಒಂದು ಸೆಲೆಕ್ಟರ್ ಆಗಿರುವುದರಿಂದ ಮತ್ತು ಅದರ ಮೊದಲ ಮಗು ಈಗ ಯಶಸ್ವಿಯಾಗುತ್ತಿರುವುದರಿಂದ (ಅಥವಾ ಚಾಲನೆಯಲ್ಲಿರುವುದರಿಂದ), ಅದು `ಆಟಗಾರನೊಂದಿಗೆ ಕಾದಾಟ` ಅಥವಾ `ಗಸ್ತು` ಶಾಖೆಗಳನ್ನು ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದೇ ಇಲ್ಲ. ಆದ್ಯತೆಗಳನ್ನು ಹೀಗೆ ಸಹಜವಾಗಿ ನಿರ್ವಹಿಸಲಾಗುತ್ತದೆ.
ಈ ರಚನೆಯು ಸ್ವಚ್ಛವಾಗಿದೆ, ಓದಲು ಸುಲಭವಾಗಿದೆ, ಮತ್ತು ಮುಖ್ಯವಾಗಿ, ವಿಸ್ತರಿಸಲು ಸುಲಭವಾಗಿದೆ. ಗ್ರೆನೇಡ್ ಎಸೆಯುವ ವರ್ತನೆಯನ್ನು ಸೇರಿಸಬೇಕೆ? ನೀವು `ಕದನ ತರ್ಕ` ಸೆಲೆಕ್ಟರ್ಗೆ ಗುಂಡು ಹಾರಿಸುವುದಕ್ಕಿಂತ ಹೆಚ್ಚಿನ ಆದ್ಯತೆಯೊಂದಿಗೆ ಮತ್ತೊಂದು ಸೀಕ್ವೆನ್ಸ್ ಅನ್ನು ಸೇರಿಸಬಹುದು, ಅದರ ಸ್ವಂತ ಷರತ್ತುಗಳೊಂದಿಗೆ (ಉದಾ. `ಆಟಗಾರನು ಅಡಗಿದ್ದಾನೆಯೇ?`, `ಗ್ರೆನೇಡ್ ಇದೆಯೇ?`).
ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳು vs. ಫೈನೈಟ್ ಸ್ಟೇಟ್ ಮಷೀನ್ಗಳು: ಸಂಕೀರ್ಣತೆಗೆ ಸ್ಪಷ್ಟ ವಿಜೇತ
ಹೋಲಿಕೆಯನ್ನು ಔಪಚಾರಿಕಗೊಳಿಸೋಣ:
ವೈಶಿಷ್ಟ್ಯ | ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳು (BTs) | ಫೈನೈಟ್ ಸ್ಟೇಟ್ ಮಷೀನ್ಗಳು (FSMs) |
---|---|---|
ಮಾಡ್ಯುಲಾರಿಟಿ | ಅತ್ಯಂತ ಹೆಚ್ಚು. ಸಬ್-ಟ್ರೀಗಳನ್ನು (ಉದಾ. "ಹೆಲ್ತ್ ಪ್ಯಾಕ್ ಹುಡುಕು" ಸೀಕ್ವೆನ್ಸ್) ಒಮ್ಮೆ ರಚಿಸಿ ಹಲವು ವಿಭಿನ್ನ ಎಐಗಳಲ್ಲಿ ಅಥವಾ ಒಂದೇ ಟ್ರೀಯ ವಿಭಿನ್ನ ಭಾಗಗಳಲ್ಲಿ ಮರುಬಳಕೆ ಮಾಡಬಹುದು. | ಕಡಿಮೆ. ತರ್ಕವು ಸ್ಟೇಟ್ಗಳು ಮತ್ತು ಪರಿವರ್ತನೆಗಳಲ್ಲಿ ಹುದುಗಿರುತ್ತದೆ. ವರ್ತನೆಯನ್ನು ಮರುಬಳಸುವುದೆಂದರೆ ಸ್ಟೇಟ್ಗಳು ಮತ್ತು ಅವುಗಳ ಸಂಪರ್ಕಗಳನ್ನು ನಕಲು ಮಾಡುವುದು. |
ವಿಸ್ತರಣೀಯತೆ | ಅತ್ಯುತ್ತಮ. ಹೊಸ ವರ್ತನೆಗಳನ್ನು ಸೇರಿಸುವುದು ಟ್ರೀಗೆ ಹೊಸ ಶಾಖೆಯನ್ನು ಸೇರಿಸಿದಂತೆಯೇ ಸರಳ. ಉಳಿದ ತರ್ಕದ ಮೇಲೆ ಅದರ ಪ್ರಭಾವ ಸ್ಥಳೀಯವಾಗಿರುತ್ತದೆ. | ಕಳಪೆ. ಸ್ಟೇಟ್ಗಳನ್ನು ಸೇರಿಸಿದಂತೆ, ಸಂಭಾವ್ಯ ಪರಿವರ್ತನೆಗಳ ಸಂಖ್ಯೆಯು ಘಾತೀಯವಾಗಿ ಬೆಳೆಯಬಹುದು, ಇದು "ಸ್ಟೇಟ್ ಸ್ಫೋಟ" ಕ್ಕೆ ಕಾರಣವಾಗುತ್ತದೆ. |
ಪ್ರತಿಕ್ರಿಯಾತ್ಮಕತೆ | ಸಹಜವಾಗಿ ಪ್ರತಿಕ್ರಿಯಾತ್ಮಕ. ಟ್ರೀಯನ್ನು ಪ್ರತಿ ಟಿಕ್ನಲ್ಲಿ ಮೂಲದಿಂದ ಮರು-ಮೌಲ್ಯಮಾಪನ ಮಾಡಲಾಗುತ್ತದೆ, ಇದು ವ್ಯಾಖ್ಯಾನಿಸಲಾದ ಆದ್ಯತೆಗಳ ಆಧಾರದ ಮೇಲೆ ಜಗತ್ತಿನ ಬದಲಾವಣೆಗಳಿಗೆ ತಕ್ಷಣದ ಪ್ರತಿಕ್ರಿಯೆಗೆ ಅನುವು ಮಾಡಿಕೊಡುತ್ತದೆ. | ಕಡಿಮೆ ಪ್ರತಿಕ್ರಿಯಾತ್ಮಕ. ಒಂದು ಏಜೆಂಟ್ ತನ್ನ ಪ್ರಸ್ತುತ ಸ್ಟೇಟ್ನಲ್ಲಿ "ಸಿಲುಕಿಕೊಂಡಿರುತ್ತದೆ", ನಿರ್ದಿಷ್ಟ, ಪೂರ್ವ-ನಿರ್ಧರಿತ ಪರಿವರ್ತನೆಯು ಪ್ರಚೋದಿಸುವವರೆಗೆ. ಅದು ತನ್ನ ಒಟ್ಟಾರೆ ಗುರಿಯನ್ನು ನಿರಂತರವಾಗಿ ಮರು-ಮೌಲ್ಯಮಾಪನ ಮಾಡುವುದಿಲ್ಲ. |
ಓದುವಿಕೆ | ಹೆಚ್ಚು, ವಿಶೇಷವಾಗಿ ದೃಶ್ಯ ಸಂಪಾದಕರೊಂದಿಗೆ. ಶ್ರೇಣೀಕೃತ ರಚನೆಯು ಆದ್ಯತೆಗಳು ಮತ್ತು ತರ್ಕದ ಹರಿವನ್ನು ಸ್ಪಷ್ಟವಾಗಿ ತೋರಿಸುತ್ತದೆ, ಇದು ಗೇಮ್ ವಿನ್ಯಾಸಕರಂತಹ ಪ್ರೋಗ್ರಾಮರ್-ಅಲ್ಲದವರಿಗೂ ಅರ್ಥವಾಗುವಂತೆ ಮಾಡುತ್ತದೆ. | ಸಂಕೀರ್ಣತೆ ಹೆಚ್ಚಾದಂತೆ ಕಡಿಮೆಯಾಗುತ್ತದೆ. ಒಂದು ಸಂಕೀರ್ಣ FSM ನ ದೃಶ್ಯ ಗ್ರಾಫ್ ಸ್ಪಗೆಟಿಯ ತಟ್ಟೆಯಂತೆ ಕಾಣಿಸಬಹುದು. |
ಗೇಮಿಂಗ್ ಆಚೆಗಿನ ಅನ್ವಯಗಳು: ರೋಬೋಟಿಕ್ಸ್ ಮತ್ತು ಸಿಮ್ಯುಲೇಶನ್
ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳು ಗೇಮಿಂಗ್ ಉದ್ಯಮದಲ್ಲಿ ಖ್ಯಾತಿ ಗಳಿಸಿದ್ದರೂ, ಅವುಗಳ ಉಪಯುಕ್ತತೆ ಅದಕ್ಕೂ ಮೀರಿದೆ. ಸ್ವಾಯತ್ತ, ಕಾರ್ಯ-ಆಧಾರಿತ ನಿರ್ಧಾರ ತೆಗೆದುಕೊಳ್ಳುವ ಅಗತ್ಯವಿರುವ ಯಾವುದೇ ವ್ಯವಸ್ಥೆಯು ಬಿಟಿಗಳಿಗೆ ಪ್ರಮುಖ ಅಭ್ಯರ್ಥಿಯಾಗಿದೆ.
- ರೋಬೋಟಿಕ್ಸ್: ಗೋದಾಮಿನ ರೋಬೋಟ್ನ ಇಡೀ ದಿನದ ಕೆಲಸವನ್ನು ಬಿಟಿಯೊಂದಿಗೆ ಮಾದರಿ ಮಾಡಬಹುದು. ರೂಟ್ ನೋಡ್ `ಆರ್ಡರ್ ಪೂರೈಸು` ಅಥವಾ `ಬ್ಯಾಟರಿ ರೀಚಾರ್ಜ್ ಮಾಡು` ಎಂಬುದಕ್ಕಾಗಿ ಒಂದು ಸೆಲೆಕ್ಟರ್ ಆಗಿರಬಹುದು. `ಆರ್ಡರ್ ಪೂರೈಸು` ಸೀಕ್ವೆನ್ಸ್ `ಶೆಲ್ಫ್ಗೆ ಹೋಗು`, `ವಸ್ತುವನ್ನು ಗುರುತಿಸು`, `ವಸ್ತುವನ್ನು ಎತ್ತು` ಮತ್ತು `ಶಿಪ್ಪಿಂಗ್ಗೆ ತಲುಪಿಸು` ಮುಂತಾದ ಮಕ್ಕಳನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ. `ಬ್ಯಾಟರಿ ಕಡಿಮೆ ಇದೆಯೇ?` ಎಂಬಂತಹ ಷರತ್ತುಗಳು ಉನ್ನತ ಮಟ್ಟದ ಪರಿವರ್ತನೆಗಳನ್ನು ನಿಯಂತ್ರಿಸುತ್ತವೆ.
- ಸ್ವಾಯತ್ತ ವ್ಯವಸ್ಥೆಗಳು: ಮಾನವರಹಿತ ವೈಮಾನಿಕ ವಾಹನಗಳು (UAVs) ಅಥವಾ ಅನ್ವೇಷಣಾ ಕಾರ್ಯಾಚರಣೆಗಳಲ್ಲಿನ ರೋವರ್ಗಳು ಸಂಕೀರ್ಣ ಮಿಷನ್ ಯೋಜನೆಗಳನ್ನು ನಿರ್ವಹಿಸಲು ಬಿಟಿಗಳನ್ನು ಬಳಸಬಹುದು. ಒಂದು ಸೀಕ್ವೆನ್ಸ್ `ಟೇಕ್ಆಫ್`, `ವೇಪಾಯಿಂಟ್ಗೆ ಹಾರು`, `ಪ್ರದೇಶವನ್ನು ಸ್ಕ್ಯಾನ್ ಮಾಡು` ಮತ್ತು `ಬೇಸ್ಗೆ ಹಿಂತಿರುಗು` ಒಳಗೊಂಡಿರಬಹುದು. `ಅಡಚಣೆ ಪತ್ತೆಯಾಗಿದೆ` ಅಥವಾ `GPS ಕಳೆದುಹೋಗಿದೆ` ಮುಂತಾದ ತುರ್ತು ಪರಿಸ್ಥಿತಿಗಳನ್ನು ನಿಭಾಯಿಸಲು ಒಂದು ಸೆಲೆಕ್ಟರ್ ಸಹಾಯ ಮಾಡಬಹುದು.
- ಸಿಮ್ಯುಲೇಶನ್ ಮತ್ತು ತರಬೇತಿ: ಮಿಲಿಟರಿ ಅಥವಾ ಕೈಗಾರಿಕಾ ಸಿಮ್ಯುಲೇಟರ್ಗಳಲ್ಲಿ, ವಾಸ್ತವಿಕ ಮತ್ತು ಸವಾಲಿನ ತರಬೇತಿ ಪರಿಸರವನ್ನು ರಚಿಸಲು ಬಿಟಿಗಳು ಸಿಮ್ಯುಲೇಟೆಡ್ ಘಟಕಗಳ (ಜನರು, ವಾಹನಗಳು) ವರ್ತನೆಯನ್ನು ಚಾಲನೆ ಮಾಡಬಹುದು.
ಸವಾಲುಗಳು ಮತ್ತು ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು
ಅವುಗಳ ಶಕ್ತಿಯ ಹೊರತಾಗಿಯೂ, ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳು ಸವಾಲುಗಳಿಲ್ಲದೆ ಇಲ್ಲ.
- ಡೀಬಗ್ ಮಾಡುವುದು: ಒಂದು ದೊಡ್ಡ ಟ್ರೀಯಲ್ಲಿ ಎಐ ಒಂದು ನಿರ್ದಿಷ್ಟ ನಿರ್ಧಾರವನ್ನು ಏಕೆ ಮಾಡಿತು ಎಂಬುದನ್ನು ಪತ್ತೆಹಚ್ಚುವುದು ಕಷ್ಟಕರವಾಗಿರುತ್ತದೆ. ಟ್ರೀ ಕಾರ್ಯಗತಗೊಳ್ಳುವಾಗ ಪ್ರತಿ ನೋಡ್ನ ಲೈವ್ ಸ್ಥಿತಿಯನ್ನು (`SUCCESS`, `FAILURE`, `RUNNING`) ತೋರಿಸುವ ದೃಶ್ಯ ಡೀಬಗ್ ಮಾಡುವ ಸಾಧನಗಳು ಸಂಕೀರ್ಣ ಯೋಜನೆಗಳಿಗೆ ಬಹುತೇಕ ಅವಶ್ಯಕ.
- ಡೇಟಾ ಸಂವಹನ: ನೋಡ್ಗಳು ಮಾಹಿತಿಯನ್ನು ಹೇಗೆ ಹಂಚಿಕೊಳ್ಳುತ್ತವೆ? ಸಾಮಾನ್ಯ ಪರಿಹಾರವೆಂದರೆ ಬ್ಲ್ಯಾಕ್ಬೋರ್ಡ್ ಎಂಬ ಹಂಚಿಕೆಯ ಡೇಟಾ ಸಂದರ್ಭ. `IsEnemyVisible?` ಷರತ್ತು ಆಟಗಾರನ ಸ್ಥಳವನ್ನು ಬ್ಲ್ಯಾಕ್ಬೋರ್ಡ್ನಿಂದ ಓದಬಹುದು, ಆದರೆ `DetectEnemy` ಕ್ರಿಯೆಯು ಸ್ಥಳವನ್ನು ಅದಕ್ಕೆ ಬರೆಯುತ್ತದೆ.
- ಕಾರ್ಯಕ್ಷಮತೆ: ಪ್ರತಿ ಫ್ರೇಮ್ನಲ್ಲಿ ಬಹಳ ದೊಡ್ಡ, ಆಳವಾದ ಟ್ರೀಯನ್ನು ಟಿಕ್ ಮಾಡುವುದು ಗಣಕೀಯವಾಗಿ ದುಬಾರಿಯಾಗಬಹುದು. ಈವೆಂಟ್-ಚಾಲಿತ ಬಿಟಿಗಳಂತಹ ಆಪ್ಟಿಮೈಸೇಶನ್ಗಳು (ಸಂಬಂಧಿತ ಘಟನೆ ಸಂಭವಿಸಿದಾಗ ಮಾತ್ರ ಟ್ರೀ ಚಲಿಸುತ್ತದೆ) ಇದನ್ನು ತಗ್ಗಿಸಬಹುದು, ಆದರೆ ಇದು ಸಂಕೀರ್ಣತೆಯನ್ನು ಹೆಚ್ಚಿಸುತ್ತದೆ.
ಉತ್ತಮ ಅಭ್ಯಾಸಗಳು:
- ಆಳವನ್ನು ಕಡಿಮೆ ಇಡಿ: ಆಳವಾದ ಟ್ರೀಗಳಿಗಿಂತ ಅಗಲವಾದ ಟ್ರೀಗಳಿಗೆ ಆದ್ಯತೆ ನೀಡಿ. ಆಳವಾಗಿ ಗೂಡುಕಟ್ಟಿದ ತರ್ಕವನ್ನು ಅನುಸರಿಸುವುದು ಕಷ್ಟ.
- ಮಾಡ್ಯುಲಾರಿಟಿಯನ್ನು ಅಪ್ಪಿಕೊಳ್ಳಿ: ನ್ಯಾವಿಗೇಷನ್ ಅಥವಾ ಇನ್ವೆಂಟರಿ ನಿರ್ವಹಣೆಯಂತಹ ಸಾಮಾನ್ಯ ಕಾರ್ಯಗಳಿಗಾಗಿ ಸಣ್ಣ, ಮರುಬಳಕೆ ಮಾಡಬಹುದಾದ ಸಬ್-ಟ್ರೀಗಳನ್ನು ನಿರ್ಮಿಸಿ.
- ಬ್ಲ್ಯಾಕ್ಬೋರ್ಡ್ ಬಳಸಿ: ಎಲ್ಲಾ ಸ್ಥಿತಿ ಮಾಹಿತಿಗಾಗಿ ಬ್ಲ್ಯಾಕ್ಬೋರ್ಡ್ ಬಳಸುವ ಮೂಲಕ ನಿಮ್ಮ ಟ್ರೀಯ ತರ್ಕವನ್ನು ಏಜೆಂಟ್ನ ಡೇಟಾದಿಂದ ಪ್ರತ್ಯೇಕಿಸಿ.
- ದೃಶ್ಯ ಸಂಪಾದಕಗಳನ್ನು ಬಳಸಿ: ಅನ್ರಿಯಲ್ ಎಂಜಿನ್ನಲ್ಲಿರುವ ಉಪಕರಣ ಅಥವಾ ಯೂನಿಟಿಗಾಗಿ ಬಿಹೇವಿಯರ್ ಡಿಸೈನರ್ನಂತಹ ಆಸ್ತಿಗಳು ಅಮೂಲ್ಯವಾಗಿವೆ. ಅವು ತ್ವರಿತ ಮಾದರಿ ತಯಾರಿಕೆ, ಸುಲಭ ದೃಶ್ಯೀಕರಣ ಮತ್ತು ಪ್ರೋಗ್ರಾಮರ್ಗಳು ಮತ್ತು ವಿನ್ಯಾಸಕರ ನಡುವೆ ಉತ್ತಮ ಸಹಯೋಗಕ್ಕೆ ಅವಕಾಶ ನೀಡುತ್ತವೆ.
ಭವಿಷ್ಯ: ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳು ಮತ್ತು ಮಷೀನ್ ಲರ್ನಿಂಗ್
ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳು ಆಧುನಿಕ ಮಷೀನ್ ಲರ್ನಿಂಗ್ (ML) ತಂತ್ರಗಳೊಂದಿಗೆ ಸ್ಪರ್ಧೆಯಲ್ಲಿಲ್ಲ; ಅವು ಪೂರಕವಾಗಿವೆ. ಹೈಬ್ರಿಡ್ ವಿಧಾನವು ಹೆಚ್ಚಾಗಿ ಅತ್ಯಂತ ಶಕ್ತಿಶಾಲಿ ಪರಿಹಾರವಾಗಿರುತ್ತದೆ.
- ಲೀಫ್ ನೋಡ್ಗಳಿಗೆ ML: ಒಂದು ಬಿಟಿಯು ಉನ್ನತ ಮಟ್ಟದ ತಂತ್ರವನ್ನು ನಿರ್ವಹಿಸಬಹುದು (ಉದಾ. `ದಾಳಿ ಮಾಡಲು ನಿರ್ಧರಿಸು` ಅಥವಾ `ರಕ್ಷಿಸಲು ನಿರ್ಧರಿಸು`), ಆದರೆ ತರಬೇತಿ ಪಡೆದ ನ್ಯೂರಲ್ ನೆಟ್ವರ್ಕ್ ಕೆಳಮಟ್ಟದ ಕ್ರಿಯೆಯನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಬಹುದು (ಉದಾ. ನಿಖರವಾದ, ಮಾನವ-ಸದೃಶ ಗುರಿಗಾಗಿ ML ಬಳಸುವ `AimAndShoot` ಆಕ್ಷನ್ ನೋಡ್).
- ಪ್ಯಾರಾಮೀಟರ್ ಟ್ಯೂನಿಂಗ್ಗೆ ML: ವಿಶೇಷ ಸಾಮರ್ಥ್ಯಕ್ಕಾಗಿ ಕೂಲ್ಡೌನ್ ಸಮಯ ಅಥವಾ ಹಿಮ್ಮೆಟ್ಟಲು ಆರೋಗ್ಯದ ಮಿತಿಯಂತಹ ಬಿಟಿಯೊಳಗಿನ ಪ್ಯಾರಾಮೀಟರ್ಗಳನ್ನು ಉತ್ತಮಗೊಳಿಸಲು ರೀಇನ್ಫೋರ್ಸ್ಮೆಂಟ್ ಲರ್ನಿಂಗ್ ಅನ್ನು ಬಳಸಬಹುದು.
ಈ ಹೈಬ್ರಿಡ್ ಮಾದರಿಯು ಬಿಹೇವಿಯರ್ ಟ್ರೀಯ ಊಹಿಸಬಹುದಾದ, ನಿಯಂತ್ರಿಸಬಹುದಾದ ಮತ್ತು ವಿನ್ಯಾಸಕ-ಸ್ನೇಹಿ ರಚನೆಯನ್ನು ಮಷೀನ್ ಲರ್ನಿಂಗ್ನ ಸೂಕ್ಷ್ಮ, ಹೊಂದಿಕೊಳ್ಳುವ ಶಕ್ತಿಯೊಂದಿಗೆ ಸಂಯೋಜಿಸುತ್ತದೆ.
ತೀರ್ಮಾನ: ಆಧುನಿಕ ಎಐಗೆ ಒಂದು ಅತ್ಯಗತ್ಯ ಸಾಧನ
ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳು ಫೈನೈಟ್ ಸ್ಟೇಟ್ ಮಷೀನ್ಗಳ ಕಟ್ಟುನಿಟ್ಟಿನ ಪರಿಧಿಗಳಿಂದ ಒಂದು ಮಹತ್ವದ ಹೆಜ್ಜೆಯನ್ನು ಪ್ರತಿನಿಧಿಸುತ್ತವೆ. ನಿರ್ಧಾರ ತೆಗೆದುಕೊಳ್ಳಲು ಮಾಡ್ಯುಲರ್, ವಿಸ್ತರಿಸಬಲ್ಲ ಮತ್ತು ಹೆಚ್ಚು ಓದಬಲ್ಲ ಚೌಕಟ್ಟನ್ನು ಒದಗಿಸುವ ಮೂಲಕ, ಅವು ಆಧುನಿಕ ತಂತ್ರಜ್ಞಾನದಲ್ಲಿ ಕಂಡುಬರುವ ಕೆಲವು ಅತ್ಯಂತ ಸಂಕೀರ್ಣ ಮತ್ತು ನಂಬಲರ್ಹ ಎಐ ವರ್ತನೆಗಳನ್ನು ರಚಿಸಲು ಡೆವಲಪರ್ಗಳು ಮತ್ತು ವಿನ್ಯಾಸಕರಿಗೆ ಅಧಿಕಾರ ನೀಡಿವೆ. ಬ್ಲಾಕ್ಬಸ್ಟರ್ ಆಟದ ಕುತಂತ್ರದ ಶತ್ರುಗಳಿಂದ ಹಿಡಿದು, ಭವಿಷ್ಯದ ಕಾರ್ಖಾನೆಯಲ್ಲಿನ ದಕ್ಷ ರೋಬೋಟ್ಗಳವರೆಗೆ, ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳು ಸರಳ ಕೋಡ್ ಅನ್ನು ಬುದ್ಧಿವಂತ ಕ್ರಿಯೆಯಾಗಿ ಪರಿವರ್ತಿಸುವ ತಾರ್ಕಿಕ ಬೆನ್ನೆಲುಬನ್ನು ಒದಗಿಸುತ್ತವೆ.
ನೀವು ಅನುಭವಿ ಎಐ ಪ್ರೋಗ್ರಾಮರ್, ಗೇಮ್ ವಿನ್ಯಾಸಕ ಅಥವಾ ರೋಬೋಟಿಕ್ಸ್ ಇಂಜಿನಿಯರ್ ಆಗಿರಲಿ, ಬಿಹೇವಿಯರ್ ಟ್ರೀಗಳನ್ನು ಕರಗತ ಮಾಡಿಕೊಳ್ಳುವುದು ಒಂದು ಮೂಲಭೂತ ಕೌಶಲ್ಯದಲ್ಲಿನ ಹೂಡಿಕೆಯಾಗಿದೆ. ಇದು ಸರಳ ತರ್ಕ ಮತ್ತು ಸಂಕೀರ್ಣ ಬುದ್ಧಿಮತ್ತೆಯ ನಡುವಿನ ಅಂತರವನ್ನು ಕಡಿಮೆ ಮಾಡುವ ಸಾಧನವಾಗಿದೆ, ಮತ್ತು ಸ್ವಾಯತ್ತ ವ್ಯವಸ್ಥೆಗಳ ಜಗತ್ತಿನಲ್ಲಿ ಅದರ ಪ್ರಾಮುಖ್ಯತೆಯು ಬೆಳೆಯುತ್ತಲೇ ಇರುತ್ತದೆ.