如何计算这个数字而不是枚举所有排列,然后创建集合以切断所有重复?
len(set(itertools.permutations('aaabbb')))
20
len(set(itertools.permutations('aabb')))
6
Run Code Online (Sandbox Code Playgroud) 我想在窗口或面板中创建 3 个部分。所有 3 个部分都应该有可能由用户调整大小,并在用户更改主窗口大小时自动调整大小。它类似于将 3 个面板添加到垂直框大小器中,但用户可以调整所有三个部分的大小。我最多可以将 2 个面板添加到 wxSplitterWindow。
我使用 C++、wxWidgets 和 wxFormBuilder。
我想问一下在棋盘游戏中使用标准的反向传播神经网络和TD学习方法是否有意义?
我的方法看起来像:
对于每个存储的游戏位置(从终端1开始并移动到起始位置),计算估计的位置值和期望的位置值,例如
boards_values[i]['desired_value'] = boards_values[i]['estimated_value'] + 0.4 * ( boards_values[i+1]['estimated_value'] - boards_values[i]['estimated_value'] )
Run Code Online (Sandbox Code Playgroud)使用标准反向传播算法,从整个游戏结束列车创建网络训练模式,每个训练模式具有1个时期的小学习率.
NN.train([pattern], iterations=1, N=0.001, M=0.000001)
Run Code Online (Sandbox Code Playgroud)我在我的tic tac toe游戏中尝试了上述的一些组合(不是从一个例子学习,而是学习30-40个模式,降低/提高学习速度等等),而且从未训练过理想的玩家(它永远不会丢失与随机相比).NN代理对抗随机播放器的最好例子之一是:
(第一场比赛:胜利,平局,输球),(第二场比赛:胜利,平局,输球),(总和:胜利,平局,输球)
(191,34,275),(159,102,239),( 350,136,514) - 新网
(427,21,52),(312,16,172),(739,37,224) - 经过+ 50k比赛
输入是18个神经元格式:
每个电路板单元组(1,0)表示x,(0,0)表示空单元,(0,1)表示o.输出是在-1,1范围内的一个单位赢/输概率估计.
Tic tac toe仅测试沙盒,当我成功完成它时,我将转向更复杂的纸牌游戏("失落的城市").
artificial-intelligence reinforcement-learning neural-network