食人族与传教士问题 Python – 人工智能算法

我正在尝试用 Python 解决食人族与传教士问题(有一些额外的条件,但主要思想是经典的)。

因此,在Graph类中,我初始化了状态(食人族的数量,传教士的数量,船上的可用座位,食物单位(如果食人族比传教士多,传教士可以喂食人族),等等)。

然后我有genereazaSuccesori方法,这个方法没有按预期工作,因为我做错了什么,我不知道是什么。所以这个方法应该为一个节点(参数nodCurent)生成后继节点。

从我在 Pycharm 中调试时看到的情况来看,主要问题是我的程序在执行第三个for循环之前不知何故退出了(我在那里添加到listaSuccesori),所以返回的数组是空的。

有谁知道我的代码哪里出错了?特别是为什么我的代码没有执行第三个for循环?

即使是一个完整实现了这个问题的 Python 示例链接也会对我有帮助(但必须是包含食物的那个,因为这里的情况会更复杂,基本版本相当简单)。

谢谢!

solver.py

...

input.txt

...

实际输出:

...

回答:

为了找出到底是什么阻止了您描述的那个for循环的执行,我在您提供的脚本的第126行插入了一个简单的print语句:

第124到127行的内容现在是(保持原有缩进):

...

我的输出是:

...

要使range(start, stop)非空,它必须满足条件start < stop

然而,我们观察到,无论是因为输入还是其他原因,范围确实是空的。因此,您的for循环执行了正好0次(用文字说:零次)。

Related Posts

Keras Dense层输入未被展平

这是我的测试代码: from keras import…

无法将分类变量输入随机森林

我有10个分类变量和3个数值变量。我在分割后直接将它们…

如何在Keras中对每个输出应用Sigmoid函数?

这是我代码的一部分。 model = Sequenti…

如何选择类概率的最佳阈值?

我的神经网络输出是一个用于多标签分类的预测类概率表: …

在Keras中使用深度学习得到不同的结果

我按照一个教程使用Keras中的深度神经网络进行文本分…

‘MatMul’操作的输入’b’类型为float32,与参数’a’的类型float64不匹配

我写了一个简单的TensorFlow代码,但不断遇到T…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注