使用简单反射代理的流行 'vaccumCleaner' 玩具问题解决方案
popular 'vaccumCleaner' toy problem solution using simple reflex agent
我是 bscs 的学生,我正在学习 'Artificial Intelligence'。
这是一个简单的反射代理程序,它在 'Python' 上工作,但我在 p5.js (JavaScript) 上也尝试过同样的事情来制作 UI .
但是我遇到了这个错误,谁能告诉我为什么 this.currentRoom 没有得到 this.room1??
I'm adding error screenshot over here
或者您可以直接复制它并在在线编辑器上查看实际情况。
抱歉,如果我以不礼貌的方式提问,实际上这是我第一次在 Whosebug 上提问。
function setup(){
createCanvas(600,400);
vc = new VAgent();
twoRooms = new VEnvironment(vc);
twoRooms.executeStep(6);
}
function draw(){
background(0);
}
class Room{
constructor(location,status){
this.location=location;
this.status=status;
}
getAll(){
console.log(this.location);
console.log(this.status);
}
}
class VEnvironment{
contructor(agent){
this.agent=agent;
this.room1=new Room('a','Dirty');
this.room2=new Room('b','Dirty');
this.currentRoom=this.room1;
this.actionStatus='';
this.step=0;
}
executeStep(n){
for(var i=0;i<n;i++){
this.displayPerception();
this.agent.sense(this);
var res = this.agent.action();
if(res=='clean'){
this.currentRoom.status=='clean'
}else if(res=='Right'){
this.currentRoom=this.room2;
}else{
this.currentRoom=this.room1;
}
this.displayAction();
this.step++;
}
}
displayPerception(){
console.log('Agent is Present At Room '+this.currentRoom.location+' And The Status For Room Is '+this.currentRoom.status);
}
displayAction(){
console.log('Agent took at'+this.step+' And Action was ... '+this.currentRoom+'...');
}
}
class VAgent{
constructor(){
}
sense(currentEnv){
this.en=currentEnv;
}
action(){
if(this.en.currentRoom.status=='dirty'){
return 'Clean'
}else if(this.en.currentRoom.location=='a'){
return 'Left'
}else{
return 'Right'
}
}
}
当你有一段你不理解的复杂代码时,你能做的最好的事情就是将你的问题缩小到 simplified example program.
例如,您可以将问题隔离到以下代码中:
function setup() {
createCanvas(600, 400);
const myContainer = new Container();
myContainer.displayValue();
}
function draw() {
background(0);
}
class Value {
constructor() {
this.x = 42;
}
}
class Container {
contructor() {
this.value = new Value();
this.currentvalue = this.value;
console.log('constructor value: ' + this.currentValue);
}
displayValue() {
console.log('display value: ' + this.value.x);
}
}
此代码与您的代码表现出相同的问题,没有任何与您的问题无关的额外代码。
如果您 运行 此代码,您会注意到 constructor value
打印语句从未被触发。这是更仔细地查看构造函数的线索。
你的问题是一个拼写错误:你有 contructor
而不是 constructor
。
我是 bscs 的学生,我正在学习 'Artificial Intelligence'。
这是一个简单的反射代理程序,它在 'Python' 上工作,但我在 p5.js (JavaScript) 上也尝试过同样的事情来制作 UI .
但是我遇到了这个错误,谁能告诉我为什么 this.currentRoom 没有得到 this.room1??
I'm adding error screenshot over here
或者您可以直接复制它并在在线编辑器上查看实际情况。
抱歉,如果我以不礼貌的方式提问,实际上这是我第一次在 Whosebug 上提问。
function setup(){
createCanvas(600,400);
vc = new VAgent();
twoRooms = new VEnvironment(vc);
twoRooms.executeStep(6);
}
function draw(){
background(0);
}
class Room{
constructor(location,status){
this.location=location;
this.status=status;
}
getAll(){
console.log(this.location);
console.log(this.status);
}
}
class VEnvironment{
contructor(agent){
this.agent=agent;
this.room1=new Room('a','Dirty');
this.room2=new Room('b','Dirty');
this.currentRoom=this.room1;
this.actionStatus='';
this.step=0;
}
executeStep(n){
for(var i=0;i<n;i++){
this.displayPerception();
this.agent.sense(this);
var res = this.agent.action();
if(res=='clean'){
this.currentRoom.status=='clean'
}else if(res=='Right'){
this.currentRoom=this.room2;
}else{
this.currentRoom=this.room1;
}
this.displayAction();
this.step++;
}
}
displayPerception(){
console.log('Agent is Present At Room '+this.currentRoom.location+' And The Status For Room Is '+this.currentRoom.status);
}
displayAction(){
console.log('Agent took at'+this.step+' And Action was ... '+this.currentRoom+'...');
}
}
class VAgent{
constructor(){
}
sense(currentEnv){
this.en=currentEnv;
}
action(){
if(this.en.currentRoom.status=='dirty'){
return 'Clean'
}else if(this.en.currentRoom.location=='a'){
return 'Left'
}else{
return 'Right'
}
}
}
当你有一段你不理解的复杂代码时,你能做的最好的事情就是将你的问题缩小到 simplified example program.
例如,您可以将问题隔离到以下代码中:
function setup() {
createCanvas(600, 400);
const myContainer = new Container();
myContainer.displayValue();
}
function draw() {
background(0);
}
class Value {
constructor() {
this.x = 42;
}
}
class Container {
contructor() {
this.value = new Value();
this.currentvalue = this.value;
console.log('constructor value: ' + this.currentValue);
}
displayValue() {
console.log('display value: ' + this.value.x);
}
}
此代码与您的代码表现出相同的问题,没有任何与您的问题无关的额外代码。
如果您 运行 此代码,您会注意到 constructor value
打印语句从未被触发。这是更仔细地查看构造函数的线索。
你的问题是一个拼写错误:你有 contructor
而不是 constructor
。