121 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| global.TOP='/home/sbosse/proj/jam/js';
 | |
| require(TOP+'/top/module')([process.cwd(),TOP]);
 | |
| var Io = Require('com/io');
 | |
| var Aios = Require('jam/aios');
 | |
| var Comp = Require('com/compat');
 | |
| 
 | |
| var node_ac = function (x,y) {
 | |
|   //var self=this;
 | |
|   // Data State
 | |
|   this.pos={x:x,y:y};
 | |
| 
 | |
|   this.x;
 | |
|   // Activities
 | |
|   this.init = function () {
 | |
|     this.x=0;
 | |
|   };
 | |
|   this.end = function () {
 | |
|     log('finalize');
 | |
|     kill();
 | |
|   };
 | |
|   this.act1 = function () {
 | |
|     log('act1');
 | |
|   };
 | |
|   this.act2 = function () {
 | |
|     //log('act2 '+this.x);
 | |
|     this.x++;
 | |
|     //sleep(1000);
 | |
|   };
 | |
|   this.act3 = function () {
 | |
|     //log('act3');
 | |
|   };
 | |
|   this.on = {
 | |
|     error : function (e) {
 | |
|       log('Caught exception '+e);
 | |
|     },
 | |
|     exit : function () {
 | |
|       log('Terminating.');
 | |
|     }
 | |
|   };
 | |
|   // Transition network
 | |
|   this.trans = {
 | |
|     init: function () {
 | |
|       return 'act1'; 
 | |
|     },
 | |
|     act1: function () {
 | |
|       if (this.pos.x==3 && this.pos.y==3) return 'act2';
 | |
|       else return 'end'; 
 | |
|     },
 | |
|     act2: function () {
 | |
|       if (this.x<1000) return 'act3';
 | |
|       else return 'end';
 | |
|     },
 | |
|     act3: function () {
 | |
|       return 'act2';
 | |
|     },
 | |
|     end: function () {
 | |
|     
 | |
|     }
 | |
|   }
 | |
|   // Control State
 | |
|   this.next='init';
 | |
| }
 | |
| 
 | |
| var world_ac = function () {
 | |
|   this.init = function () {
 | |
|     log('World: Starting node agents ['+
 | |
|          this.options.x+','+this.options.y+'] ..');
 | |
|     for (var j=0;j<this.options.y;j++) {
 | |
|       for (var i=0; i<this.options.x;i++) {
 | |
|         this.simu.createOn(i,j,'node',[i,j]);
 | |
|       }
 | |
|     }
 | |
|   };
 | |
|   this.sleep = function () {
 | |
|     sleep(10,'steps');
 | |
|   };
 | |
|   this.update = function () {
 | |
|   };
 | |
|   this.end = function () {
 | |
|     log('finalize');
 | |
|     kill();
 | |
|   };
 | |
|   this.on = {
 | |
|     error : function (e) {
 | |
|       log('WORLD: Caught exception '+e);
 | |
|     },
 | |
|     exit : function () {
 | |
|       log('WORLD: Terminating.');
 | |
|     }
 | |
|   };
 | |
|   // Transition network
 | |
|   this.trans = {
 | |
|     init: function () {
 | |
|       return 'sleep'; 
 | |
|     },
 | |
|     sleep: function () {
 | |
|       return 'update';
 | |
|     },
 | |
|     update: function () {
 | |
|       return 'sleep';
 | |
|     },
 | |
|     end: function () {
 | |
|     
 | |
|     }
 | |
|   }
 | |
|   // Control State
 | |
|   this.next='init';
 | |
|  
 | |
| }
 | |
| var Simu = Aios.Simu.Simu({
 | |
|   id:'My Agent World',
 | |
|   x:10, y:10,
 | |
|   showfun:true,   // show functions in tree viewer
 | |
|   nodebar:true,   // node box with additional marking bar
 | |
|   classes:{node:node_ac,world:world_ac},  // all known agent classes
 | |
|   connections:{
 | |
|     random:1.0  // Monte-Carlo Simualtion of node placement: Prob. for a link
 | |
|   }
 | |
| });
 | |
| Simu.start();
 |