轩辕春秋文化论坛 » 步步为营 » 英杰传AI算法分析2026版


2026-9-10 01:11 阿尔法孝直
英杰传AI算法分析2026版

本来答应一些人,8月底或9月份就写好发出的,无奈赶上暑假结束开学(本人现在在高校负责一些事务),突然冒出来一堆事情导致天天加班,这个帖子也就一鸽再鸽。
也好,这两天我先写一个大致的框架,后面慢慢再填坑。
等这个帖子完结后,原帖《[url=https://www.xycq.org.cn/forum/thread-220902-1-1.html]英杰传移动型AI算法[/url]》大部分内容就可以不用再看了,因为原帖分析可能有疏漏。

本帖可以解释以下几个问题:
1、为什么会出现移动受限?移动范围算法有什么bug?你能随手举一两个移动受限的例子吗?
2、有的敌军行动会很诡异,为什么?
3、天荡山之战II(主将是夏侯徳)所有敌军的AI明明都是主动型的,靠后的骑兵却一动也不动,为什么?

[color=Silver][[i] 本帖最后由 阿尔法孝直 于 2026-9-19 23:49 编辑 [/i]][/color]

2026-9-10 01:12 阿尔法孝直
一、移动范围与移动受限

1、先举一个非常简单的例子:一个移动力为3的兵种(发石车/运输队/民众),周围全是平原,问他的移动范围怎么计算?
(1)设原地格子的编号为0,接着按照上右下左的顺序依次亮起,编号分别为1、2、3、4,这些是总移动力消耗为1的格子(图1-1、图1-2)。
(2)确定完消耗1的格子,现在确定消耗为2的格子。将编号为1~4的格子按照读书写字的顺序进行排列,即1、4、2、3,接着按照该的顺序分别亮起周围还未亮起的4格:
首先是1号格,按照上右下左的顺序依次亮起5、6、7格(图1-3);然后是4号格,依次亮起8、9号格;接着是2号格,依次亮起10、11号格(图1-4);最后是3号格,亮起周围的12号格(图1-5)。
(3)最后确定总消耗为3的格子。将总消耗为2的格子(5~12号)按照读书写字的顺序进行排列,即5、7、6、9、10、8、11、12,,接着按照该排列顺序分别亮起周围还未亮起的4格(亮起的顺序仍然是上右下左):
5:13~15(图1-6),
7:16,
6:17(图1-7),
9:18、19,
10:20、21,
8:22,
11:23,
12:24(图1-8)。
[attach]152714[/attach]
至此,移动范围的格子亮起的顺序全部确定。

2、现在加一点难度:图2-1的0号格子是一个发石车(移动力为3),灰色的格子是村庄,其余的格子都是平原,问移动范围怎么计算?
(1)先将0号格子向四周扩展,上方总消耗为2,右下左总消耗为1,如图2-2。在这一步中,有的格子的总消耗标记了1,有的格子标记了2。
(2)遍历刚刚总消耗最小的所有格子(即遍历所有总消耗为1的格子),按照读书写字的顺序进行上右下左扩展,将周围未标记总消耗的格子进行标记(图2-3)。在这一步中,有的格子的总消耗标记了2,有的格子标记了3。
(3)上一步有的标了2,有的标了3。此时,遍历所有总消耗为2(上一步的最小值)的格子,按照读书写字的顺序进行上右下左扩展,将周围未标记总消耗的格子进行标记(图2-4)。
(4)上一步标记总消耗的格子都是3,等于发石车移动力。至此,移动范围计算完成。
[attach]152724[/attach]

3、如图3-1,0号格子还是移动力为3的发石车,灰色格子是村庄,蓝色格子是敌人,其余格子都是平原,问移动范围怎么计算?
(1)先将0号格子向四周扩展,上方总消耗为2,右下左总消耗为1,如图3-2。在这一步中,有的格子的总消耗标记了1,有的格子标记了2。
(2)遍历刚刚总消耗最小且[color=Blue][b]四周没有敌人[/b][/color]的所有格子(即遍历所有总消耗为1的[u]白色[/u]格子,绿色格子因为周围有敌人所以失去了遍历的权利),按照读书写字的顺序进行上右下左扩展,将周围未标记总消耗的格子进行标记(图3-3)。
(3)上一步都标了2。此时,遍历所有总消耗为2的白色格子(绿色格子因为周围有敌人所以失去了遍历的权利),按照读书写字的顺序进行上右下左扩展,将周围未标记总消耗的格子进行标记(图3-4)。
(4)上一步标记总消耗的格子都是3,等于发石车移动力。至此,移动范围计算完成。
[attach]152725[/attach]

4、如图4-1,0号格子又双叒叕是移动力为3的发石车,灰色格子是村庄,蓝色格子是敌人,其余格子都是平原,问移动范围怎么计算?
(1)先将0号格子向四周扩展,在这一步中,有的格子的总消耗标记了1,有的格子标记了2(图4-2)。
(2)在刚刚标记的格子中,总消耗最小的是1。但是总消耗为1的所有格子都有敌人相邻,因此无法再向四周扩展。由于每一轮只扩展总消耗最小的格子,因此总消耗为2的格子被无情抛弃。
(3)在上一步中,没有扩展新的格子,因此移动范围计算完成,就是图4-3中所有带数字的格子。
没了?真的没了。在图4-3中,带*号的格子不在移动范围内,即便它们的总消耗为3。这就是[color=Red][b]移动受限的问题[/b][/color]。
[attach]152726[/attach]

5、能否举一个范围稍大一点的移动受限的例子?
如图5-1,0号格子是一个移动力为4的短兵,蓝色格子是敌人,灰色格子是村庄。
当总消耗为1的格子向四周扩展时,周围8格不是与敌人相邻的格子(绿色格),就是总消耗更高的格子,无法再向四周扩展(能向四周扩展的格子是上一轮扩展的总消耗最小且不与敌人相邻的格子),因此移动范围就是
图5-2中标有数字的格子,带*号的格子不在移动范围内,即便它们的总消耗为4。
[attach]152727[/attach]


总结:移动范围计算过程:
0、判断所在格是不是不可移动地形,如果是,移动范围的计算跳过所有步骤,直接结束。
1、将原地向四周扩展,并标记四周的总消耗移动力。但是要注意,不能扩展(也不能标记)有敌人的格子;
2、按照读书写字的顺序遍历上一步标记的所有[color=Red][b]总消耗移动力最小且不与敌人相邻的格子[/b][/color],向四周扩展,并标记四周的总消耗移动力。注意,不扩展/标记超出移动力的格子。
3、重复第2步,直到移动力消耗完毕,或者上一轮没有扩展出新的格子。

讲这个问题,主要是因为将这个问题讲清楚,才能理解后面的的问题,因为后面有一些计算也要用到这个算法。

[color=Silver][[i] 本帖最后由 阿尔法孝直 于 2026-9-19 23:37 编辑 [/i]][/color]

2026-9-10 01:13 阿尔法孝直
二、AI算法总流程图
[attach]152713[/attach]
[attach]152712[/attach]

[color=Silver][[i] 本帖最后由 阿尔法孝直 于 2026-9-10 01:29 编辑 [/i]][/color]

2026-9-10 01:13 阿尔法孝直
三、最近敌判定规则

2026-9-10 01:14 阿尔法孝直
四、可达性分析

2026-9-10 01:14 阿尔法孝直
五、最佳路线判断规则

2026-9-10 01:20 阿尔法孝直
六、实例

2026-9-11 19:19 漫漫苦短
飞了的鸽子居然马上回来了,最近估计大家事都挺多的,先从整体上学一下孝直的分析思路,期待最终填完坑的结果。我在这个帖子更新一下孝直更新的记录以及自己的学习心得体会吧。

写一下标题的注释:[list=1]
[*]关于移动受限,其实也就是ZOC-bug,表面上看,似乎情况非常多样难以用简单的思维描述,而且周瑜heyou这些前辈的分析,似乎又是通过不断加补丁来修正理论,导致目前为止并没有一个成熟简练的理论,我的个人理解,这个行动搜索过程其实不要简单地从二维的角度来看待,而是要降维从移动力也就是一维的角度来看待,这样二维的地图搜索转化为一维的移动力搜索,可能就也容易理解了。
[*]敌军行动会很诡异,我感觉可以分为几大类,一是定向攻击就不多举例了,二是罚站现象,很多都是因为最近敌所在地形的缘故,周瑜和muzhi的一些非练级极限过关打法中可以见到,三是会莫名奇妙往一些位置走,特别某些敌军喜欢钻森林、鹿寨、山地等高防御地形,比如下邳友军钻森林/鹿寨和平原反复横跳、广陵第二回合袁术陈纪钻森林、博望坡第二回合于禁钻森林,四是因位置价值导致的行动异常,刚刚临时想了一个口诀来区分这些情况,不想做事莫名其妙做了事,想做事放弃了,想做大事结果做了小事,想做事被安排去做另一件事。如果是已经懂了行动价值,其实前三类都好解释,那么就是位置价值还需要深入研究,位置价值中,部队因战力不足恢复坐标加50是大部分爱好者都知道的,以仇人或目标坐标为中心的价值加权也不难理解,接下来最难的就是在以路线中的某个行动点为中心的价值加权最难分析并形成理论,看看孝直要怎么解释这些现象。
[*]天荡山之战(准确来说两个天荡山的问题肯定都是一样的),这个实例具体的原理还是先不透露了,主要是真的能在一个段落中就把这个问题给讲清楚吗,需要花的篇幅以及解释的话语和图肯定少不了。另外我还研究了这个的延申情况,就是怎么样在不靠近骑兵的情况下就让他们[b]跟随敌军大部队一起行动[/b],而且理论上从第一、二回合都能通过走位实现,这个不知道有没有研究过。而且这个现象其实还有两个现象是有类似的。
一是ayuayu的研究[b][url=http://xycq.org.cn/forum/viewthread.php?tid=246950&page=4#pid3440485]一[/url][/b]、[b][url=http://xycq.org.cn/forum/viewthread.php?tid=205594&page=5#pid3440342]二[/url][/b],在江夏第二回合(怎么都是第二回合)荒地上的这个以(11,4)为目标的重骑兵为什么走距离远的左路而不是上路,虽然都清楚如果我军人墙将左路堵住就能让他走上路。
二是[b][url=http://xycq.org.cn/forum/viewthread.php?tid=254199&page=9#pid3466643]edmund_liyc的研究[/url][/b],[b][url=http://xycq.org.cn/forum/viewthread.php?tid=220902#pid4085524]clubjack的解释[/url][/b],在下邳开城门回合为什么劉備左边或右边站人就能武术家许汜不懂,劉備右边站人也能让弓兵不动,左边站人却会动。
如果能看懂clubjack的解释,相信在看孝直讲解天荡山之战的实例,并且联想江夏的这个重骑兵,就能明白为什么我要将三者称为类似的现象了。[/list]

9.10
一、移动范围与移动受限里的一张行动图和解释。
二、AI算法总流程图大图
9.11学习心得体会:
章节一:我当前确实其实也是像这样研究过其中的顺序,确实对研究[b]最近敌[/b]和[b]相等行动价值的优先顺序[/b]有所帮助,但后来构思了临界坐标的理解方法后,发现研究顺序也没那么重要了,看一下后续还有什么内容。
章节二:这个总图非常好,可能不少爱好者觉得这张图过于复杂,比教材里的内容还难理解,但是实际上程序的实际执行比这张图还复杂,这都是精简了不少内容才做出了的,但放心这不是数学题,数学题不会就是不会:hz1008:,如果有什么理解不了的地方,相信孝直周瑜heyou等众多同好都是可以做出一些解答的。总的来说,这张图里的加粗标色字,[b]最近敌[/b]、[b]可达[/b]、[b]最佳路线[/b]、[b]定向攻击[/b]这些词汇是理解这张图的关键!!

[color=Silver][[i] 本帖最后由 漫漫苦短 于 2026-9-19 19:30 编辑 [/i]][/color]

页: [1]
查看完整版本: 英杰传AI算法分析2026版


Powered by Discuz! Archiver 5.0.0  © 2001-2006 Comsenz Inc.