wormtql / genshin_artifact

莫娜占卜铺 | 原神 | 圣遗物搭配 | 圣遗物潜力。多方向圣遗物自动搭配,多方向圣遗物潜力与评分, Genshin Impact artifacts assessment, artifacts auto combination, artifacts statistics, artifacts potential, and more.
https://www.mona-uranai.com/
MIT License
1.2k stars 112 forks source link

为什么计算一个角色要34分钟? #44

Closed hjyssg closed 3 years ago

hjyssg commented 3 years ago

算胡桃的潜力,UI显示要34分钟? 为什么这么久 很好奇

wormtql commented 3 years ago

这上面显示的是所有仓库里的没禁用的圣遗物在一起算的情况下的大概时间。 事实上,算的时候可以选定只算20级圣遗物,一般正常人20级圣遗物100个左右,还是比较快的。 但是算法是枚举,圣遗物一多必然会按n^5的复杂度增加计算时间

hjyssg commented 3 years ago

懂你意思了,哈哈哈。 那你这个计算考虑套装吗? 代码是哪几个文件,我想学习参观一下。

wormtql commented 3 years ago

比较明确的套装buff是会考虑的,例如魔女2件套15%火伤;

比较复杂且不明确(动态)的效果在大多数目标函数里不会考虑,例如魔女4件套效果, 但是某些目标函数会考虑,例如迪卢克的目标函数会考虑魔女4的叠加效果(通过近似地整合那些buff),因为很多角色适合的配装就那么几套,输出方式也比较单一,所以具体目标函数可能会考虑一些常见配装的动态buff。

目标函数的代码在src/assets/target_functions 计算的代码在src/algorithms/attribute_target/compute_artifacts.js 顺带一提,代码写的比较烂,也没什么注释,还望见谅:smile:

hjyssg commented 3 years ago

image

JS里面 (!0) 为true。 改完瞬间变成一秒结束计算

hjyssg commented 3 years ago

genshin_artifact-main\src\algorithms\attribute_target\create_filter_function.js

 let helper = artifact => {
        if (!artifact.level && artifact.level !== 0) {
            return true;
        }
        return artifact.level >= config.min && artifact.level <= config.max;
    }

老哥 你能自己改一下还是我PR给你?

wormtql commented 3 years ago

我自己改一下吧,感谢大佬找帮我找了bug