mirror of
https://github.com/deepmodeling/Uni-Lab-OS
synced 2026-05-24 12:19:57 +00:00
fix(layout_optimizer): update arm_slider reach value and improve scene poll version handling
This commit is contained in:
@@ -78,7 +78,7 @@ class MockReachabilityChecker:
|
|||||||
"elite_cs66": 0.914,
|
"elite_cs66": 0.914,
|
||||||
"elite_cs612": 1.304,
|
"elite_cs612": 1.304,
|
||||||
"elite_cs620": 1.800,
|
"elite_cs620": 1.800,
|
||||||
"arm_slider": 1.07, # 线性导轨臂:body 2.14m × 0.35m,reach ≈ half length
|
"arm_slider": 0.3, # 线性导轨臂:1.07 body 2.14m × 0.35m,reach ≈ half length
|
||||||
}
|
}
|
||||||
|
|
||||||
# 未知型号回退臂展:realistic default for lab-scale arms
|
# 未知型号回退臂展:realistic default for lab-scale arms
|
||||||
|
|||||||
@@ -80,7 +80,7 @@ def _run_de(
|
|||||||
best_vector = init_pop[best_idx].copy()
|
best_vector = init_pop[best_idx].copy()
|
||||||
|
|
||||||
# Early stopping 跟踪
|
# Early stopping 跟踪
|
||||||
patience = 20
|
patience = 200
|
||||||
best_cost_history: list[float] = [best_cost]
|
best_cost_history: list[float] = [best_cost]
|
||||||
|
|
||||||
for gen in range(1, maxiter + 1):
|
for gen in range(1, maxiter + 1):
|
||||||
@@ -102,6 +102,8 @@ def _run_de(
|
|||||||
# 默认 currenttobest1bin:mutant = target + F*(best - target) + F*(r1 - r2)
|
# 默认 currenttobest1bin:mutant = target + F*(best - target) + F*(r1 - r2)
|
||||||
mutant = (
|
mutant = (
|
||||||
init_pop[i]
|
init_pop[i]
|
||||||
|
# add a scaled minimum to encourage exploration
|
||||||
|
+ f_val * 0.1 * (upper - lower) * rng.uniform(-1, 1, size=ndim)
|
||||||
+ f_val * (best_vector - init_pop[i])
|
+ f_val * (best_vector - init_pop[i])
|
||||||
+ f_val * (init_pop[r1] - init_pop[r2])
|
+ f_val * (init_pop[r1] - init_pop[r2])
|
||||||
)
|
)
|
||||||
|
|||||||
@@ -1200,13 +1200,13 @@ loadDeviceCatalog().then(() => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
/* ── Scene Poller (demo agent) ─────────────── */
|
/* ── Scene Poller (demo agent) ─────────────── */
|
||||||
let _scenePollVersion = -1; // -1 = uninitialized, first poll sets baseline
|
let _scenePollVersion = 0;
|
||||||
setInterval(async () => {
|
setInterval(async () => {
|
||||||
try {
|
try {
|
||||||
const res = await fetch('/scene/placements');
|
const res = await fetch('/scene/placements');
|
||||||
if (!res.ok) return;
|
if (!res.ok) return;
|
||||||
const data = await res.json();
|
const data = await res.json();
|
||||||
if (_scenePollVersion === -1) { _scenePollVersion = data.version; return; } // baseline on first poll
|
if (data.version < _scenePollVersion) _scenePollVersion = 0; // server restart
|
||||||
if (data.version <= _scenePollVersion) return;
|
if (data.version <= _scenePollVersion) return;
|
||||||
_scenePollVersion = data.version;
|
_scenePollVersion = data.version;
|
||||||
const labW = parseFloat(document.getElementById('lab-w').value) || 4;
|
const labW = parseFloat(document.getElementById('lab-w').value) || 4;
|
||||||
|
|||||||
Reference in New Issue
Block a user