an adaptive behavior language

adaptive sequential behavior ChooseDirection() {
  success_condition {
    (SelfWME x > 1950.0  x < 2050.0  
             y > -950.0  y < -850.0)
  reward { 
    100 if { (SelfWME x > 1950.0  x < 2050.0  
                      y > -950.0  y < -850.0) }  
    -10 if { (BumpWME) }
      0 if { (true) } 
  state { { (SelfWME  x :: rawX  y :: rawY) }
          myXLoc = (int)Math.floor((rawX-1050)/100);
          myYLoc = (int)Math.floor((rawY+2550)/100);
          return (myXLoc, myYLoc); }
  // Behavior steps
  subgoal WalkNorth();
  subgoal WalkSouth();
  subgoal WalkEast();
  subgoal WalkWest();      
One of the promises of machine learning is that it allows designers to specify problems in broad strokes while allowing a machine do further parameter fine-tuning. This is useful in a number of situations. Typically, one thinks of building a system or agent for some specific task and then providing it some kind of feedback, allowing it to learn. In this case, the agent is the point of the exercise; however, what if we decided to embed this notion within a programming language itself? That is, what if we chose to build or extend a programming language so that has learning as a primitive operator? What does this mean for building adaptive and interactive agents? What implications does such an idea have for a compiler? How does this affect the programmer in organizing and thinking about problems or debugging code?

In this work, we extend ABL (A Behavior Language, pronounced able). ABL is based on the Oz Project believable agent language Hap. It is a reactive planning language, and an ABL agent consists of a library of behaviors with reactive annotations. Each behavior consists of a set of steps to be executed either sequentially or in parallel. The agent dynamically selects behaviors to accomplish goals. One approach to dealing with such a problem would be to build a learning system "on top of ABL". Instead, our approach is to integrate learning directly into ABL by adding a new type of behavior to the language: a learned behavior.