js:锄地一条龙 (#2582)

增加补丁,含优先关键词的路线不会在逆筛阶段被删除
This commit is contained in:
mno
2025-12-28 21:22:52 +08:00
committed by GitHub
parent 22fa144ef8
commit 8be926b44d
3 changed files with 15 additions and 20 deletions

View File

@@ -495,34 +495,29 @@ async function findBestRouteGroups(pathings, k1, k2, targetEliteNum, targetMonst
iterationCount++;
}
/* ========== 3. 最小不可再减集合(贪心逆筛) ========== */
const selectedList = pathings.filter(p => p.selected)
/* ========== 3. 最小不可再减集合(贪心逆筛,不碰优先路线 ========== */
// 1. 只留非优先的已选路线,按性价比升序排
const selectedList = pathings
.filter(p => p.selected && !p.prioritized)
.sort((a, b) => {
/* ******** 关键修改 ******** */
const eliteGainA = a.e === 0 ? 200 : (a.G1 - a.G2) / a.e;
const normalGainA = a.m === 0 ? 40.5 : a.G2 / a.m;
const perSecA = a.t === 0 ? 0 : a.G1 / a.t;
const aScore = (((eliteGainA / 200) ** k1) + ((normalGainA / 40.5) ** k2)) * perSecA;
const eliteGainB = b.e === 0 ? 200 : (b.G1 - b.G2) / b.e;
const normalGainB = b.m === 0 ? 40.5 : b.G2 / b.m;
const perSecB = b.t === 0 ? 0 : b.G1 / b.t;
const bScore = (((eliteGainB / 200) ** k1) + ((normalGainB / 40.5) ** k2)) * perSecB;
/* ******************************** */
return aScore - bScore; // 升序:小的先删
const score = p => {
const eliteGain = p.e === 0 ? 200 : (p.G1 - p.G2) / p.e;
const normalGain = p.m === 0 ? 40.5 : p.G2 / p.m;
const perSec = p.t === 0 ? 0 : p.G1 / p.t;
return ((eliteGain / 200) ** k1 + (normalGain / 40.5) ** k2) * perSec;
};
return score(a) - score(b); // 升序:差的先删
});
// 2. 试删
for (const p of selectedList) {
// 试删
const newE = totalSelectedElites - p.e;
const newM = totalSelectedMonsters - p.m;
if (newE >= targetEliteNum && newM >= targetMonsterNum) {
// 删了仍达标,真删
p.selected = false;
totalSelectedElites = newE;
totalSelectedMonsters = newM;
totalGainCombined -= p.G1; // 精英阶段已用 G1 统计
totalGainCombined -= p.G1;
totalTimeCombined -= p.t;
}
}

View File

@@ -1,7 +1,7 @@
{
"manifest_version": 1,
"name": "锄地一条龙",
"version": "1.14.0",
"version": "1.14.1",
"description": "一站式解决自动化锄地支持只拾取狗粮请仔细阅读README.md后使用",
"authors": [
{

View File

@@ -149,7 +149,7 @@
{
"name": "priorityTags",
"type": "input-text",
"label": "优先关键词,含关键词的路线会被视为最高效率\n不同关键词使用【中文逗号】分隔\n例如填骗骗花可以优先选择含有骗骗花的路线\n建议使用怪物图鉴中的名字"
"label": "优先关键词,含关键词的路线会被视为最高效率\n不同关键词使用【中文逗号】分隔\n例如填骗骗花可以优先选择含有骗骗花的路线\n建议使用怪物图鉴中的名字\n仅优先选择不影响路线排序"
},
{
"name": "excludeTags",