Git Product home page Git Product logo

bcjh-metropolis's Introduction

基于模拟退火的爆炒江湖宴会计算器

在线运行

访问run.bcjh.xyz。参见此仓库

使用方法(本地安装包)

前往Releases · hjenryin/BCJH-Metropolis下载最新 bcjh.zip,解压后输入白菜菊花id即可使用。

配置厨具

使用 Microsoft Excel 打开 厨具样例.csv。可以看到,第一行是标题,下面是样例数据。

  • 如果你所有厨师都可以装厨具,请保留第一行,删掉其他内容,重命名为 toolEquipped.csv 保存在原地。
  • 如果你有多个账号,可以像样例一样用空行分隔,重命名为 toolEquipped.csv 保存在原地。
  • 如果你不希望任何初始带厨具,你可以什么都不做(只要 toolEquipped.csv 不存在就可以)。

请在对应的格子内输入数字,规律如下:

  • 技法-10% :填 *0.9技法+100 :填 100技法-100 :填 -100
  • 售价+10% ,则填 10售价-5% ,则填 -5

更改迭代次数

如有需要,可以更改 点此运行.bat 中49行的数字来设置迭代次数。

本地编译

如果在windows平台,需要使用MSBuild编译,并将 data/data.min.json 改为ANSI编码。如有条件,强烈建议这种本地运行(运行可加速、可多次重复)。 另外,诚挚希望有能力的朋友们帮忙实现在客户端运行!

  • ./config.hpp 中设置目标分数 TARGET_SCORE_APPROXIMATE,可以偏大但不要偏小。

  • ./data 下运行 python update.py -i xxxxxxxx是白菜菊花ID。

  • 编译、运行:

    • 在根目录新建 build 文件夹并 cd 至build
    • # linux
      cmake .. --config Release 
      make
      
      # windows (Visual Studio取决于安装的版本)
      cmake .. -G "Visual Studio 17 2022" --config Release
      msbuild /m
      
    • 使用 ./bcjh (linux) 或 ./bcjh.exe (windows) 运行。
  • 如果需要,在 data/toolEquipped.csv 配置已经戴上不愿碎掉的厨具。(配置方法参见此处

  • 最后在命令行就可以得到输出结果了!(注意顺序)(得到厨师-技法,表示对应新手池厨具)

Github云端编译(近期没有维护,可能又意想不到的结果)

  • 注册Github账号,fork此仓库。

  • 配置 config.hpp (参见此文)。

  • 将白菜菊花下载的个人数据(userData.txt)重命名为 userData.json并上传到 data/文件夹内。如果有规则更新,此时将会自动更新。

  • 上传完之后,前往Actions页面(如图所示)。这一步如果Actions里面没有东西,试着删掉文件重新上传一下。有些人确实出现了这个问题,但我也没有复现出来,都是正常的……说不定删掉重新弄一下就好了orz

    to_action pick_workflow result

  • 等待完成后即可查看得到的几个比较好的结果。(注:无法保证得到的是最优解。)(注意顺序)(得到厨师-技法(数值),如果数值是0就表示不用装厨具,否则就装新手池对应厨具。)

局限性

  • 已知的问题:

    • 无法得到最优解!只能得到一个比较好的解,有助于开阔思路。
    • 无法设置专精。
    • 无法选择菜品数量(默认拉满)。
  • 可能有一定门槛。(这可能有助于防止这类辅助工具的滥用导致分数膨胀?)(你问我为什么不用其他语言写?python一个晚上就写好了,结果因为有涉及json读写很多类型没法推断,jit用不了,算这个太慢了,所以就用c++写了)

工作原理

采用两层模拟退火来最大化总能量。第一层为三个厨师,其能量用第二层模拟退火来估计。也就是说,这套方法理论上也能算厨神(只要能够在非常快的时间内,算出一个厨神面板的得分),但是加上厨神的食材限制工作量有点大……以后再说吧。(希望以后的宴会不要有菜品限制)

如果你也想为此仓库添砖加瓦……

  • c++实现厨神算分
  • 以及任何你觉得有意义的事!

最后,欢迎大家提pr!有什么问题也可以在issue里面讨论!

这算是我写的第一个项目,本人本科在读,水平有限,写的不好的地方也请大佬们斧正!

bcjh-metropolis's People

Contributors

github-actions[bot] avatar haoyun0 avatar hjenryin avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

bcjh-metropolis's Issues

关于新增的模式问题

一个宴会模式,一个限时任务
宴会模式是厨神大赛还是?
另外,不管什么任务,都有可能出现限制要求,什么蔬菜有多少倍,肉类减分数之类的,这个可以实现吗?(基于没懂宴会模式的情况)
希望同步添加厨神大赛,限时任务,主支线等的计算,力求更新!大佬牛逼!

错误代码134

image
image
根据教程上传了文件,但是一直运行失败,也尝试过删除重新上传了,还是不行,请问大佬有什么方法解决吗QAQ

年兽第六关结果乱码

image,兄弟,上次年兽第五关的结果没乱码,我刚同步完代码,年兽第六关的结果出现乱码了,怎么解决呀。

宴会5出现bug

Chef: 宋书汐汐-炸(60)
Recipe 0: 乳鸽金丝燕窝球1: 香煎银鳕鱼2: 麻辣小鱼干
Chef: 姒露-切(0)
Recipe 0: 情人巧克力1: 雪糕刺客2: 老干妈蛋糕
Chef: 黑柏-炒(100)
Recipe 0: 蟠桃饭1: 牛肉火锅2: 灵芝空间

该方案饱食度有误

大佬求助

按照那个自动更新指示,没有看到循环箭头。然后ACTIONS里面有166个指令,绿√和红×都有。这个得怎么搞,谢谢大佬

小建议

0/6000
500/6000
1000/6000
1500/6000
2000/6000
2500/6000
3000/6000
3500/6000
4000/6000
4500/6000
5000/6000
5500/6000
大佬这一大串可以不让他输出么,个人感觉没啥用啊

Error code 127

和这个repo同步了之后重新上传userdata.json然后报错,已经试过好几次删了重新上传都不行

提一个建议,不是bug

建议将此自动计算放到日常任务中(周厨神大赛、限时任务,主线支线什么的),与白菜菊花作者对接,实时更新规则,加个设置,需要什么就开什么设置这种,方便我们日常完成任务什么的,彻底解放脑子,给僵尸一个新鲜的大脑!

关于厨具配置的问题

目前在toolEquipped.hpp中可以设置厨师的厨具装配情况,以及是否允许厨师更改厨具。
请问如何修改装备了如“霞姬霸捣药罐”这样的厨具?
给出的例子skill->ability.add(30);适用于全技法增加固定值的情况。但增加百分比的情况怎么办?有类似于multi()的函数么?

厨具制定功能是否存在问题

使用厨具定制功能后无法得到正确的计算结果 计算结果仅由未装配任何厨具计算得到.

我分别为以下厨师装配了以下厨具

厨师 厨具 效果
玄离 玉兔灯 烤技法+90
煮类料理售价+15%
姒露 铁萝锤 炸技法+90
切类料理售价+15%
墨雪 木萝锤 炸技法+60
切类料理售价+10%
砚月 长青笔筒 炸技法+80
咸类料理售价+30%
司姬 开心兔餐盘 切技法+90
蒸类料理售价+15%

修改的toolEquipped.hpp如下 并注释return语句

    if (chef->name == "姒露") {             
        skill.ability.fry += 90; 
        skill.abilityBuff.knife += 15;
        chef->tool = NO_TOOL;
    } 
    if (chef->name == "玄离") {             
        skill.ability.bake += 90; 
        skill.abilityBuff.boil += 15;
        chef->tool = NO_TOOL;
    }  
    if (chef->name == "司姬") {             
        skill.ability.knife += 90; 
        skill.abilityBuff.steam += 15;
        chef->tool = NO_TOOL;
    }   
    if (chef->name == "砚月") {             
        skill.ability.fry += 80; 
        skill.flavorBuff.salty += 30; 
        chef->tool = NO_TOOL;
    }   
    if (chef->name == "墨雪") {             
        skill.ability.fry += 60; 
        skill.abilityBuff.knife += 10;
        chef->tool = NO_TOOL; 
    } 

后运行计算 得到以下结果(之一)

厨师:墨雪(0) -> 7 / 66125
菜谱:小熊猫泡芙;什锦火腿堡;肉末茄子
厨师:姒露(0) -> 11 / 341345
菜谱:羌族罐罐茶;老干妈蛋糕;蒜蓉芝士焗龙虾
厨师:达浪-蒸(0) -> 6 / 251250
菜谱:绝味辣卤;一点不方便面;瓜田蜜食
**************
Score: 856336
***************

可以发现得到的结果并不正确
image
而与去掉厨具得到的结果相同
image
*本次计算结果达浪为装配厨具 但部分计算结果中有且仅有达浪等未配置厨具者装配了厨具 因此认为厨具定制功能中仅有chef->tool = NO_TOOL; 生效
*在未启用厨具定制功能时计算结果与图鉴网一致
因此厨具制定功能可能存在问题或者说是我的打开方式不对

actions没有东西

fork过后 删除了userdata.json然后重新上传过后 actions里面没有东西

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.