fix: 预测时PyTorch架构不匹配自动回退; 清理火箭炮表单无关字段
This commit is contained in:
parent
f548616df0
commit
a8a15fe0b0
1
frontend/dist/assets/ModelPage-DFNq0Y7S.js
vendored
1
frontend/dist/assets/ModelPage-DFNq0Y7S.js
vendored
File diff suppressed because one or more lines are too long
130
frontend/dist/assets/index-BclX5sLE.js
vendored
130
frontend/dist/assets/index-BclX5sLE.js
vendored
File diff suppressed because one or more lines are too long
1
frontend/dist/assets/index-D3ds-r_i.css
vendored
1
frontend/dist/assets/index-D3ds-r_i.css
vendored
File diff suppressed because one or more lines are too long
4
frontend/dist/index.html
vendored
4
frontend/dist/index.html
vendored
@ -6,8 +6,8 @@
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0">
|
||||
<link rel="icon" href="/favicon.ico">
|
||||
<title>装备成本估算系统</title>
|
||||
<script type="module" crossorigin src="/assets/index-BclX5sLE.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-D3ds-r_i.css">
|
||||
<script type="module" crossorigin src="/assets/index-9zP5mdZu.js"></script>
|
||||
<link rel="stylesheet" crossorigin href="/assets/index-xz9THzb6.css">
|
||||
</head>
|
||||
<body>
|
||||
<noscript>
|
||||
|
||||
@ -60,26 +60,6 @@
|
||||
<el-form-item label="最小射程(km)" prop="min_range_km">
|
||||
<el-input-number v-model="formData.min_range_km"></el-input-number>
|
||||
</el-form-item>
|
||||
<el-form-item label="机动方式" prop="mobility_type">
|
||||
<el-select v-model="formData.mobility_type">
|
||||
<el-option label="轮式" value="轮式"></el-option>
|
||||
<el-option label="履带式" value="履带式"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="结构布局" prop="structure_layout">
|
||||
<el-select v-model="formData.structure_layout">
|
||||
<el-option label="8x8轮式底盘" value="8x8轮式底盘"></el-option>
|
||||
<el-option label="6x6轮式底盘" value="6x6轮式底盘"></el-option>
|
||||
<el-option label="4x4轮式底盘" value="4x4轮式底盘"></el-option>
|
||||
<el-option label="履带式底盘" value="履带式底盘"></el-option>
|
||||
</el-select>
|
||||
</el-form-item>
|
||||
<el-form-item label="发动机型号" prop="engine_model">
|
||||
<el-input v-model="formData.engine_model"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="发动机参数" prop="engine_params">
|
||||
<el-input v-model="formData.engine_params"></el-input>
|
||||
</el-form-item>
|
||||
<el-form-item label="功率(hp)" prop="power_hp">
|
||||
<el-input-number v-model="formData.power_hp"></el-input-number>
|
||||
</el-form-item>
|
||||
@ -237,10 +217,6 @@ const formData = reactive({
|
||||
combat_weight_kg: 15000,
|
||||
speed_kmh: 60,
|
||||
min_range_km: 5,
|
||||
mobility_type: '轮式',
|
||||
structure_layout: '6x6轮式底盘',
|
||||
engine_model: 'WD615',
|
||||
engine_params: '6缸直列柴油机',
|
||||
power_hp: 280,
|
||||
travel_range_km: 600,
|
||||
wingspan_m: 2.5,
|
||||
@ -394,10 +370,6 @@ const handleTypeChange = () => {
|
||||
formData.combat_weight_kg = 15000
|
||||
formData.speed_kmh = 60
|
||||
formData.min_range_km = 5
|
||||
formData.mobility_type = '轮式'
|
||||
formData.structure_layout = '6x6轮式底盘'
|
||||
formData.engine_model = 'WD615'
|
||||
formData.engine_params = '6缸直列柴油机'
|
||||
formData.power_hp = 280
|
||||
formData.travel_range_km = 600
|
||||
|
||||
@ -449,10 +421,6 @@ const handleTypeChange = () => {
|
||||
formData.combat_weight_kg = null
|
||||
formData.speed_kmh = null
|
||||
formData.min_range_km = null
|
||||
formData.mobility_type = ''
|
||||
formData.structure_layout = ''
|
||||
formData.engine_model = ''
|
||||
formData.engine_params = ''
|
||||
formData.power_hp = null
|
||||
formData.travel_range_km = null
|
||||
}
|
||||
|
||||
@ -106,7 +106,7 @@ def predict():
|
||||
equipment_type = data.get('type')
|
||||
logger.info(f"Received prediction request for equipment type: {equipment_type}")
|
||||
|
||||
# 获取最新的激活模型(非PLS模型)
|
||||
# 获取最新的激活模型(非PLS),尝试加载直到成功
|
||||
with get_db_connection() as conn:
|
||||
cursor = conn.cursor()
|
||||
cursor.execute("""
|
||||
@ -114,16 +114,24 @@ def predict():
|
||||
WHERE equipment_type = ?
|
||||
AND model_type != 'pls'
|
||||
AND is_active = TRUE
|
||||
ORDER BY training_date DESC LIMIT 1
|
||||
ORDER BY training_date DESC
|
||||
""", (equipment_type,))
|
||||
model = cursor.fetchone()
|
||||
models = cursor.fetchall()
|
||||
|
||||
if not model:
|
||||
if not models:
|
||||
return jsonify({'error': '未找到可用的模型'}), 404
|
||||
|
||||
# 使用普通预测方法
|
||||
# 逐个尝试加载,跳过架构不兼容的模型
|
||||
predictor = CostPredictor()
|
||||
prediction = predictor.predict(data, model) # 使用普通predict方法
|
||||
for model in models:
|
||||
try:
|
||||
prediction = predictor.predict(data, model)
|
||||
break
|
||||
except ValueError as e:
|
||||
logger.warning(f"Model {model['model_name']} failed: {e}, trying next...")
|
||||
continue
|
||||
else:
|
||||
return jsonify({'error': '所有激活模型加载失败,请重新训练'}), 500
|
||||
|
||||
# 返回预测结果
|
||||
return jsonify({
|
||||
|
||||
Loading…
Reference in New Issue
Block a user