[Avida-SVN] r2374 - in development: documentation source/actions source/main source/utils/make_actions_html

barrick at myxo.css.msu.edu barrick at myxo.css.msu.edu
Mon Feb 25 07:19:18 PST 2008


Author: barrick
Date: 2008-02-25 10:19:18 -0500 (Mon, 25 Feb 2008)
New Revision: 2374

Modified:
   development/documentation/actions.html
   development/source/actions/EnvironmentActions.cc
   development/source/main/cEnvironment.cc
   development/source/main/cEnvironment.h
   development/source/main/cPopulation.cc
   development/source/main/cReactionProcess.h
   development/source/main/cStats.cc
   development/source/main/cTaskLib.h
   development/source/main/nReaction.h
   development/source/utils/make_actions_html/actions_source_info
Log:
Fixed NewTrial and CompeteOrganisms so that NewTrial doesn't need to be called in the case of only one trial per competition, and so that gestation times are correct for speculative execution when there are multiple trials.

Added SetReactionTask and ZeroResources actions for setting up rewarded "task paths" that can change during a run.





Modified: development/documentation/actions.html
===================================================================
--- development/documentation/actions.html	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/documentation/actions.html	2008-02-25 15:19:18 UTC (rev 2374)
@@ -9,7 +9,7 @@
 
 <div class="revision">
 Revised 2006-09-03 DMB
-<br>Generated Mon Feb 18 16:33:15 2008 by make_actions_html</div>
+<br>Generated Mon Feb 25 09:53:04 2008 by make_actions_html</div>
 
 <p>
 <a href="index.html">Return to the Index</a> &nbsp;|&nbsp;
@@ -106,8 +106,10 @@
       <a href="#Exit">Exit</a><br>
       <a href="#exit_if_ave_lineage_label_larger">exit_if_ave_lineage_label_larger</a><br>
       <a href="#exit_if_ave_lineage_label_smaller">exit_if_ave_lineage_label_smaller</a><br>
+      <a href="#ExitAveGeneration">ExitAveGeneration</a><br>
       <a href="#ExitAveLineageLabelGreater">ExitAveLineageLabelGreater</a><br>
       <a href="#ExitAveLineageLabelLess">ExitAveLineageLabelLess</a><br>
+      <a href="#ExitElapsedTime">ExitElapsedTime</a><br>
       <a href="#FullLandscape">FullLandscape</a><br>
       <a href="#genetic_distance_pop_dump">genetic_distance_pop_dump</a><br>
       <a href="#HillClimb">HillClimb</a><br>
@@ -129,6 +131,7 @@
       <a href="#InjectResource">InjectResource</a><br>
       <a href="#InjectScaledResource">InjectScaledResource</a><br>
       <a href="#InjectSequence">InjectSequence</a><br>
+      <a href="#InjectSequenceWDivMutRate">InjectSequenceWDivMutRate</a><br>
       <a href="#InsertionLandscape">InsertionLandscape</a><br>
       <a href="#join_grid_col">join_grid_col</a><br>
       <a href="#join_grid_row">join_grid_row</a><br>
@@ -194,11 +197,13 @@
       <a href="#PrintCCladeRelativeFitnessHistogram">PrintCCladeRelativeFitnessHistogram</a><br>
       <a href="#PrintCompetitionData">PrintCompetitionData</a><br>
       <a href="#PrintCountData">PrintCountData</a><br>
+      <a href="#PrintCurrentReactionData">PrintCurrentReactionData</a><br>
       <a href="#PrintData">PrintData</a><br>
       <a href="#PrintDebug">PrintDebug</a><br>
       <a href="#PrintDemeAllStats">PrintDemeAllStats</a><br>
       <a href="#PrintDemeAverageData">PrintDemeAverageData</a><br>
       <a href="#PrintDemeDonorStats">PrintDemeDonorStats</a><br>
+      <a href="#PrintDemeReplicationData">PrintDemeReplicationData</a><br>
       <a href="#PrintDemeResourceStats">PrintDemeResourceStats</a><br>
       <a href="#PrintDemeSpacialEnergyStats">PrintDemeSpacialEnergyStats</a><br>
       <a href="#PrintDemeSpacialSleepStats">PrintDemeSpacialSleepStats</a><br>
@@ -215,6 +220,7 @@
       <a href="#PrintGenotypeAbundanceHistogram">PrintGenotypeAbundanceHistogram</a><br>
       <a href="#PrintGenotypeMap">PrintGenotypeMap</a><br>
       <a href="#PrintGenotypes">PrintGenotypes</a><br>
+      <a href="#PrintGermlineData">PrintGermlineData</a><br>
       <a href="#PrintInstructionAbundanceHistogram">PrintInstructionAbundanceHistogram</a><br>
       <a href="#PrintInstructionData">PrintInstructionData</a><br>
     <td valign="top">
@@ -267,8 +273,8 @@
       <a href="#set_reaction_value_mult">set_reaction_value_mult</a><br>
       <a href="#set_resource">set_resource</a><br>
       <a href="#SetCellResource">SetCellResource</a><br>
-      <a href="#SetEnvironmentInputMask">SetEnvironmentInputMask</a><br>
       <a href="#SetEnvironmentInputs">SetEnvironmentInputs</a><br>
+      <a href="#SetEnvironmentRandomMask">SetEnvironmentRandomMask</a><br>
       <a href="#SetMutProb">SetMutProb</a><br>
       <a href="#SetNumInstBefore0Energy">SetNumInstBefore0Energy</a><br>
       <a href="#SetOptimizeMinMax">SetOptimizeMinMax</a><br>
@@ -276,6 +282,7 @@
       <a href="#SetReactionInst">SetReactionInst</a><br>
       <a href="#SetReactionMaxTaskCount">SetReactionMaxTaskCount</a><br>
       <a href="#SetReactionMinTaskCount">SetReactionMinTaskCount</a><br>
+      <a href="#SetReactionTask">SetReactionTask</a><br>
       <a href="#SetReactionValue">SetReactionValue</a><br>
       <a href="#SetReactionValueMult">SetReactionValueMult</a><br>
       <a href="#SetResource">SetResource</a><br>
@@ -289,6 +296,7 @@
       <a href="#sever_grid_row">sever_grid_row</a><br>
       <a href="#SeverGridCol">SeverGridCol</a><br>
       <a href="#SeverGridRow">SeverGridRow</a><br>
+      <a href="#StopFastForward">StopFastForward</a><br>
       <a href="#swap_cells">swap_cells</a><br>
       <a href="#SwapCells">SwapCells</a><br>
       <a href="#task_snapshot">task_snapshot</a><br>
@@ -299,6 +307,7 @@
       <a href="#VERBOSE">VERBOSE</a><br>
       <a href="#zero_muts">zero_muts</a><br>
       <a href="#ZeroMuts">ZeroMuts</a><br>
+      <a href="#ZeroResources">ZeroResources</a><br>
   </tr>
 </table>
 <p>&nbsp;</p>
@@ -342,6 +351,14 @@
   </p>
 </li>
 <li><p>
+  <strong><a name="ExitAveGeneration">ExitAveGeneration</a></strong>
+  <i>&lt;double generation&gt;</i>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
   <strong><a name="ExitAveLineageLabelGreater">ExitAveLineageLabelGreater</a></strong>
   <i>&lt;double threshold&gt;</i>
   </p>
@@ -361,6 +378,22 @@
 
   </p>
 </li>
+<li><p>
+  <strong><a name="ExitElapsedTime">ExitElapsedTime</a></strong>
+  <i>&lt;int elapsed time [seconds]&gt;</i>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
+  <strong><a name="StopFastForward">StopFastForward</a></strong>
+  <i>none</i>
+  </p>
+  <p>
+  
+  </p>
+</li>
 </UL>
 <p>&nbsp;</p>
 <h2><a name="EnvironmentActions">Environment Actions</a></h2>
@@ -470,14 +503,6 @@
   </p>
 </li>
 <li><p>
-  <strong><a name="SetEnvironmentInputMask">SetEnvironmentInputMask</a></strong>
-  <i>&lt;int mask&gt; &lt;int value&gt; </i>
-  </p>
-  <p>
-  
-  </p>
-</li>
-<li><p>
   <strong><a name="SetEnvironmentInputs">SetEnvironmentInputs</a></strong>
   <i>&lt;int input_1&gt; &lt;int input_2&gt; &lt;int input_3&gt; </i>
   </p>
@@ -489,6 +514,14 @@
   </p>
 </li>
 <li><p>
+  <strong><a name="SetEnvironmentRandomMask">SetEnvironmentRandomMask</a></strong>
+  <i>&lt;int mask&gt;</i>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
   <strong><a name="SetNumInstBefore0Energy">SetNumInstBefore0Energy</a></strong>
   <i>&lt;int new_value&gt;</i>
   </p>
@@ -547,6 +580,17 @@
   </p>
 </li>
 <li><p>
+  <strong><a name="SetReactionTask">SetReactionTask</a></strong>
+  <i>&lt;string reaction_name&gt; &lt;string task_name&gt;</i>
+  </p>
+  <p>
+    Set the task required to trigger a reaction to <span class="cmdarg">task_name</span>.
+  <span class="cmdarg">reaction_name</span> and <span class="cmdarg">task_name</span> must already 
+  exist in the environment file.
+
+  </p>
+</li>
+<li><p>
   <strong><a name="SetReactionValue">SetReactionValue</a></strong>
   <i>&lt;string reaction_name&gt; &lt;double value&gt;</i>
   </p>
@@ -627,6 +671,15 @@
   
   </p>
 </li>
+<li><p>
+  <strong><a name="ZeroResources">ZeroResources</a></strong>
+  <i>none</i>
+  </p>
+  <p>
+    Set all resurce levels to zero.
+
+  </p>
+</li>
 </UL>
 <p>&nbsp;</p>
 <h2><a name="LandscapeActions">Landscape Analysis Actions</a></h2>
@@ -1025,6 +1078,14 @@
   </p>
 </li>
 <li><p>
+  <strong><a name="InjectSequenceWDivMutRate">InjectSequenceWDivMutRate</a></strong>
+  <i>&lt;string sequence&gt; [int cell_start=0] [int cell_end=-1] [double div_mut_rate=0] [double merit=-1] [int lineage_label=0] [double neutral_metric=0]</i>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
   <strong><a name="join_grid_col">join_grid_col</a></strong>
   <i>[int col_id=-1] [int min_row=0] [int max_row=-1]</i>
   </p>
@@ -1812,6 +1873,13 @@
   </p>
 </li>
 <li><p>
+  <strong><a name="PrintCurrentReactionData">PrintCurrentReactionData</a></strong>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
   <strong><a name="PrintData">PrintData</a></strong>
   <i>&lt;cString fname&gt; &lt;cString format&gt;</i>
   </p>
@@ -1858,6 +1926,13 @@
   </p>
 </li>
 <li><p>
+  <strong><a name="PrintDemeReplicationData">PrintDemeReplicationData</a></strong>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
   <strong><a name="PrintDemeResourceStats">PrintDemeResourceStats</a></strong>
   <i>No Arguments</i>
   </p>
@@ -2031,6 +2106,13 @@
   </p>
 </li>
 <li><p>
+  <strong><a name="PrintGermlineData">PrintGermlineData</a></strong>
+  </p>
+  <p>
+  
+  </p>
+</li>
+<li><p>
   <strong><a name="PrintInstructionAbundanceHistogram">PrintInstructionAbundanceHistogram</a></strong>
   <i>[string fname="instruction_histogram.dat"]</i>
   </p>

Modified: development/source/actions/EnvironmentActions.cc
===================================================================
--- development/source/actions/EnvironmentActions.cc	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/source/actions/EnvironmentActions.cc	2008-02-25 15:19:18 UTC (rev 2374)
@@ -334,6 +334,29 @@
   }
 };
 
+class cActionSetReactionTask : public cAction
+{
+private:
+  cString m_name;
+  cString m_task;
+  
+public:
+  cActionSetReactionTask(cWorld* world, const cString& args) : cAction(world, args), m_name(""), m_task("")
+  {
+    cString largs(args);
+    if (largs.GetSize()) m_name = largs.PopWord();
+    if (largs.GetSize()) m_task = largs.PopWord();
+  }
+  
+  static const cString GetDescription() { return "Arguments: <string reaction_name> <string task_name>"; }
+  
+  void Process(cAvidaContext& ctx)
+  {
+    bool success = m_world->GetEnvironment().SetReactionTask(m_name, m_task);
+    if (!success) m_world->GetDriver().RaiseFatalException(-2,"SetReactionTask action failed");
+  }
+};
+
 class cActionSetResourceInflow : public cAction
 {
 private:
@@ -723,6 +746,7 @@
   action_lib->Register<cActionSetReactionInst>("SetReactionInst");
   action_lib->Register<cActionSetReactionMinTaskCount>("SetReactionMinTaskCount");
   action_lib->Register<cActionSetReactionMaxTaskCount>("SetReactionMaxTaskCount");
+  action_lib->Register<cActionSetReactionTask>("SetReactionTask");
 
   action_lib->Register<cActionSetResourceInflow>("SetResourceInflow");
   action_lib->Register<cActionSetResourceOutflow>("SetResourceOutflow");

Modified: development/source/main/cEnvironment.cc
===================================================================
--- development/source/main/cEnvironment.cc	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/source/main/cEnvironment.cc	2008-02-25 15:19:18 UTC (rev 2374)
@@ -162,6 +162,7 @@
       else if (var_value=="lin") new_process->SetType(nReaction::PROCTYPE_LIN);
       else if (var_value=="energy") new_process->SetType(nReaction::PROCTYPE_ENERGY);
       else if (var_value=="enzyme") new_process->SetType(nReaction::PROCTYPE_ENZYME);
+      else if (var_value=="exp") new_process->SetType(nReaction::PROCTYPE_EXP);
       else {
         cerr << "Unknown reaction process type '" << var_value
         << "' found in '" << reaction->GetName() << "'." << endl;
@@ -1035,14 +1036,20 @@
         result.AddEnergy(bonus);
         break;
       case nReaction::PROCTYPE_ENZYME: //@JEB
-        {
-	  const int res_id = in_resource->GetID();
-          assert(cur_process->GetMaxFraction() != 0);
-          assert(resource_count[res_id] != 0);
-          double reward = cur_process->GetValue() * resource_count[res_id] / (resource_count[res_id] + cur_process->GetMaxFraction());
-          result.AddBonus( reward , reaction_id);
-        }
+        const int res_id = in_resource->GetID();
+        assert(cur_process->GetMaxFraction() != 0);
+        assert(resource_count[res_id] != 0);
+        double reward = cur_process->GetValue() * resource_count[res_id] / (resource_count[res_id] + cur_process->GetMaxFraction());
+        result.AddBonus( reward , reaction_id);
         break;
+      case nReaction::PROCTYPE_EXP: //@JEB
+        // Cumulative rewards are Value * integral (exp (-MaxFraction * TaskCount))
+        // Evaluate to get stepwise amount to add per task executed.
+        assert(task_count >= 1);
+        const double decay = cur_process->GetMaxFraction();
+        const double value = cur_process->GetValue();
+        result.AddBonus( value * (1.0 / decay) * ( exp((task_count-1) * decay) - exp(task_count * decay)), reaction_id );
+      break;
           
       default:
         assert(false);  // Should not get here!
@@ -1159,6 +1166,49 @@
   return found_reaction->SetMaxTaskCount( max_count );
 }
 
+bool cEnvironment::SetReactionTask(const cString& name, const cString& task)
+{
+  cReaction* found_reaction = reaction_lib.GetReaction(name);
+  if (found_reaction == NULL) return false;
+
+  for(int i=0; i<m_tasklib.GetSize(); i++)
+  {
+    if (m_tasklib.GetTask(i).GetName() == task) 
+    {
+      found_reaction->SetTask( m_tasklib.GetTaskReference(i) ); 
+      return true;
+    }
+  }
+  
+  // If we didn't find the task, then we need to make a new one
+  // @JEB currently, this messes up stat tracking to add a task
+  // in the middle of a run.
+/*  
+  // Finish loading in this reaction.
+  cString trigger_info = task;
+	cString trigger = trigger_info.Pop(':');
+  
+  // Load the task trigger
+  cEnvReqs envreqs;
+  tList<cString> errors;
+  
+  cTaskEntry* cur_task = m_tasklib.AddTask(trigger, trigger_info, envreqs, &errors);
+  if (cur_task == NULL || errors.GetSize() > 0) {
+    cString* err_str;
+    while ((err_str = errors.Pop()) != NULL) {
+      cerr << *err_str << endl;
+      delete err_str;
+    }
+    return false;
+  }
+  
+  found_reaction->SetTask(cur_task);      // Attack task to reaction.  
+  return true;
+*/
+
+  return false;
+}
+
 bool cEnvironment::SetResourceInflow(const cString& name, double _inflow )
 {
   cResource* found_resource = resource_lib.GetResource(name);

Modified: development/source/main/cEnvironment.h
===================================================================
--- development/source/main/cEnvironment.h	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/source/main/cEnvironment.h	2008-02-25 15:19:18 UTC (rev 2374)
@@ -163,6 +163,7 @@
   bool SetReactionInst(const cString& name, cString inst_name);
   bool SetReactionMinTaskCount(const cString& name, int min_count);
   bool SetReactionMaxTaskCount(const cString& name, int max_count);
+  bool SetReactionTask(const cString& name, const cString& task);
   bool SetResourceInflow(const cString& name, double _inflow );
   bool SetResourceOutflow(const cString& name, double _outflow );
   

Modified: development/source/main/cPopulation.cc
===================================================================
--- development/source/main/cPopulation.cc	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/source/main/cPopulation.cc	2008-02-25 15:19:18 UTC (rev 2374)
@@ -3488,17 +3488,23 @@
 {
   for (int i=0; i< GetSize(); i++)
   {
-    if (GetCell(i).IsOccupied())
+    cPopulationCell& cell = GetCell(i);
+    if (cell.IsOccupied())
     {
-      cPopulationCell& cell = GetCell(i);
-      
-      // Correct gestation time for speculative execution
       cPhenotype & p =  cell.GetOrganism()->GetPhenotype();
-      p.SetTrialTimeUsed(p.GetTrialTimeUsed() - cell.GetSpeculativeState());
-      p.SetTimeUsed(p.GetTimeUsed() - cell.GetSpeculativeState());
 
-      cell.GetOrganism()->NewTrial();
-      cell.GetOrganism()->GetHardware().Reset();
+      // Don't continue if the time used was zero
+      if (p.GetTrialTimeUsed() != 0)
+      {
+        // Correct gestation time for speculative execution
+        p.SetTrialTimeUsed(p.GetTrialTimeUsed() - cell.GetSpeculativeState());
+        p.SetTimeUsed(p.GetTimeUsed() - cell.GetSpeculativeState());
+
+        cell.GetOrganism()->NewTrial();
+        cell.GetOrganism()->GetHardware().Reset();
+        
+        cell.SetSpeculativeState(0);
+      }
     }
   }
   
@@ -3519,7 +3525,8 @@
 
 void cPopulation::CompeteOrganisms(int competition_type, int parents_survive)
 {
-  if (m_world->GetVerbosity() > VERBOSE_SILENT) cout << "==Compete Organisms==" << endl;
+  NewTrial();
+
   double total_fitness = 0;
   int num_cells = GetSize();
   tArray<double> org_fitness(num_cells); 
@@ -3543,6 +3550,8 @@
     if (GetCell(i).IsOccupied())
     { 
       cPhenotype& p = GetCell(i).GetOrganism()->GetPhenotype();
+      // We trigger a lot of asserts if the copied size is zero... 
+      p.SetLinesCopied(p.GetGenomeLength());
       
       if ( (num_trials != -1) && (num_trials != p.GetTrialFitnesses().GetSize()) )
       {
@@ -3554,6 +3563,12 @@
       num_trials = p.GetTrialFitnesses().GetSize();
     }
   }
+  
+  //If there weren't any trials then end here (but call new trial so things are set up for the next iteration)
+  if (num_trials == 0) return;
+  
+  if (m_world->GetVerbosity() > VERBOSE_SILENT) cout << "==Compete Organisms==" << endl;
+
   tArray<double> min_trial_fitnesses(num_trials);
   tArray<double> max_trial_fitnesses(num_trials);
   tArray<double> avg_trial_fitnesses(num_trials);
@@ -3586,9 +3601,12 @@
   
   if (m_world->GetVerbosity() > VERBOSE_SILENT)
   {
-    for (int t=0; t < min_trial_fitnesses.GetSize(); t++) 
+    if (min_trial_fitnesses.GetSize() > 1)
     {
-      cout << "Trial #" << t << " Min Fitness = " << min_trial_fitnesses[t] << ", Avg fitness = " << avg_trial_fitnesses[t] << " Max Fitness = " << max_trial_fitnesses[t] << endl;
+      for (int t=0; t < min_trial_fitnesses.GetSize(); t++) 
+      {
+        cout << "Trial #" << t << " Min Fitness = " << min_trial_fitnesses[t] << ", Avg fitness = " << avg_trial_fitnesses[t] << " Max Fitness = " << max_trial_fitnesses[t] << endl;
+      }
     }
   }
   
@@ -3784,4 +3802,5 @@
   m_world->GetStats().SetCompetitionFitness(average_fitness);
   m_world->GetStats().SetCompetitionOrgsReplicated(different_orgs_copied);
   
+  NewTrial();
 }

Modified: development/source/main/cReactionProcess.h
===================================================================
--- development/source/main/cReactionProcess.h	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/source/main/cReactionProcess.h	2008-02-25 15:19:18 UTC (rev 2374)
@@ -50,7 +50,7 @@
   double max_number;     // Max quantity of resource usable.
   double min_number;     // Minimum quantity of resource needed (otherwise 0)
   double max_fraction;   // Max fraction of avaiable resources useable.
-  cResource* product;   // Output resource.
+  cResource* product;    // Output resource.
   double conversion;     // Conversion factor.
   bool lethal;		 // Lethality of reaction
   bool sterilize; //! Whether performance of this reaction sterilizes the organism.

Modified: development/source/main/cStats.cc
===================================================================
--- development/source/main/cStats.cc	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/source/main/cStats.cc	2008-02-25 15:19:18 UTC (rev 2374)
@@ -1141,8 +1141,12 @@
   df.Write( avg_competition_fitness, "overall competition fitness" );
   df.Write( num_orgs_replicated, "number of organisms copied" );
 
-  for( int i=0; i < avg_trial_fitnesses.GetSize(); i++ ){
-    df.Write(avg_trial_fitnesses[i], cStringUtil::Stringf("trial.%d fitness", i));
+  // Only print trial info if there were multiple trials.
+  if (avg_trial_fitnesses.GetSize() > 1)
+  {
+    for( int i=0; i < avg_trial_fitnesses.GetSize(); i++ ){
+      df.Write(avg_trial_fitnesses[i], cStringUtil::Stringf("trial.%d fitness", i));
+    }
   }
   df.Endl();
 }

Modified: development/source/main/cTaskLib.h
===================================================================
--- development/source/main/cTaskLib.h	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/source/main/cTaskLib.h	2008-02-25 15:19:18 UTC (rev 2374)
@@ -79,7 +79,8 @@
 
   cTaskEntry* AddTask(const cString& name, const cString& info, cEnvReqs& envreqs, tList<cString>* errors);
   const cTaskEntry& GetTask(int id) const { return *(task_array[id]); }
-  
+  cTaskEntry * GetTaskReference(int id) { return task_array[id]; }
+
   void SetupTests(cTaskContext& ctx) const;
   inline double TestOutput(cTaskContext& ctx) const { return (this->*(ctx.GetTaskEntry()->GetTestFun()))(ctx); }
 

Modified: development/source/main/nReaction.h
===================================================================
--- development/source/main/nReaction.h	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/source/main/nReaction.h	2008-02-25 15:19:18 UTC (rev 2374)
@@ -32,7 +32,8 @@
     PROCTYPE_POW,
     PROCTYPE_LIN,
     PROCTYPE_ENERGY,
-    PROCTYPE_ENZYME
+    PROCTYPE_ENZYME,
+    PROCTYPE_EXP
   };
 }
 

Modified: development/source/utils/make_actions_html/actions_source_info
===================================================================
--- development/source/utils/make_actions_html/actions_source_info	2008-02-25 10:01:29 UTC (rev 2373)
+++ development/source/utils/make_actions_html/actions_source_info	2008-02-25 15:19:18 UTC (rev 2374)
@@ -376,6 +376,10 @@
   Set the max task count required to trigger a reaction to <span class="cmdarg">task_count</span>.
   <span class="cmdarg">reaction_name</span> must already 
   exist in the environment file.
+=== Action SetReactionTask ===
+  Set the task required to trigger a reaction to <span class="cmdarg">task_name</span>.
+  <span class="cmdarg">reaction_name</span> and <span class="cmdarg">task_name</span> must already 
+  exist in the environment file.
 === Action SetReactionValueMult ===
   Multiply the reaction value by the <span class="cmdarg">value</span>.
   <span class="cmdarg">reaction_name</span> must already 
@@ -386,6 +390,8 @@
   <span class="cmdarg">reaction_name</span> must already
   exist in the environment file.
   <span class="cmdarg">inst</span> must be in the instruction set. 
+=== Action ZeroResources ===
+  Set all resurce levels to zero.
 === head ===
 <html>
 <!-- This HTML was generated by the make_actions_html routine please modify --->




More information about the Avida-cvs mailing list