Simple Reflex and Model-Based Reflex Agents

Foundation Agent Types: Architecture and Implementation

Simple Reflex Agents
React directly to current percepts using condition-action rules. No memory of past states or planning for future actions.
Architecture Flow:
Sensors → Condition-Action Rules → Actuators

if condition_met(percept):
    execute_action(action)
  • Fast response time
  • Simple implementation
  • Predictable behavior
  • No learning capability
  • Cannot handle partial observability
class SimpleReflexAgent: def __init__(self, rules): self.rules = rules def act(self, percept): for condition, action in self.rules: if condition(percept): return action return None # Example: Thermostat rules = [ (lambda p: p['temp'] > 75, 'turn_on_ac'), (lambda p: p['temp'] < 65, 'turn_on_heat'), (lambda p: True, 'maintain') ] agent = SimpleReflexAgent(rules) action = agent.act({'temp': 78}) # → 'turn_on_ac'
Model-Based Reflex Agents
Maintain internal state and world model to handle partially observable environments and make better decisions.
Architecture Flow:
Sensors → State Update → World Model → Rules → Actuators

state = update_state(state, action, percept)
action = rule_match(state, rules)
  • Handles partial observability
  • Maintains context
  • Better decision making
  • More complex implementation
  • Still no planning
class ModelBasedReflexAgent: def __init__(self, rules, transition_model): self.rules = rules self.state = {} self.transition_model = transition_model self.last_action = None def update_state(self, percept): # Update internal state based on percept and last action self.state = self.transition_model( self.state, self.last_action, percept ) def act(self, percept): self.update_state(percept) for condition, action in self.rules: if condition(self.state): self.last_action = action return action return None # Example: Smart home system def transition_model(state, action, percept): return { 'room_occupied': percept.get('motion_detected', False), 'light_on': state.get('light_on', False), 'time_of_day': percept.get('time'), 'last_motion': percept.get('timestamp') if percept.get('motion_detected') else state.get('last_motion') }

Detailed Comparison

Aspect Simple Reflex Model-Based Reflex
Memory None Internal state tracking
Environment Fully observable only Partially observable
Complexity Very low Low to medium
Performance Fast, deterministic Moderate, more intelligent
Use Cases Simple automation, alerts Smart devices, monitoring

Real-World Implementation Examples

Simple Reflex: Alert Systems
Server monitoring that sends alerts when CPU usage exceeds threshold. No memory of previous states, just immediate response to current metrics.
Simple Reflex: Basic Chatbots
FAQ bots that match user input to predefined responses. No conversation context, each interaction is independent.
Model-Based: Smart Thermostats
Learning user patterns, occupancy detection, and weather integration. Maintains state about home conditions and user preferences.
Model-Based: Security Systems
Tracking movement patterns, maintaining zone states, and correlating multiple sensor inputs for intelligent threat detection.