|
@@ -8,124 +8,124 @@
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="屏幕输出等级:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.iout" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="续算开关:" :label-width="formLabelWidth200">
|
|
|
- <el-select v-model="youhua.algorithm" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
- <el-option v-for="item in yslist" :key="item.value" :label="item.label" :value="item.value">
|
|
|
+ <el-select v-model="youhua.irestart" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
+ <el-option v-for="item in cswitch" :key="item.value" :label="item.label" :value="item.value">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="实验设计方法:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.ndoe" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="样本点数:" :label-width="formLabelWidth200">
|
|
|
<div style="display: flex;">
|
|
|
- <el-input type="text" style="margin-right: 10px;" v-model="cstnum">
|
|
|
+ <el-input type="text" style="margin-right: 10px;" v-model="youhua.ns">
|
|
|
<!-- <template #prepend>X方向</template> -->
|
|
|
<template #prefix>初始 </template>
|
|
|
</el-input>
|
|
|
- <el-input type="text" style="margin-right: 10px;" v-model="cstnum">
|
|
|
+ <el-input type="text" style="margin-right: 10px;" v-model="youhua.nsmax">
|
|
|
<template #prefix>最大</template>
|
|
|
</el-input>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="低可信度样本点数:" :label-width="formLabelWidth200">
|
|
|
<div style="display: flex;">
|
|
|
- <el-input type="text" style="margin-right: 10px;" v-model="cstnum">
|
|
|
+ <el-input type="text" style="margin-right: 10px;" v-model="youhua.nslf">
|
|
|
<!-- <template #prepend>X方向</template> -->
|
|
|
<template #prefix>初始 </template>
|
|
|
</el-input>
|
|
|
- <el-input type="text" style="margin-right: 10px;" v-model="cstnum">
|
|
|
+ <el-input type="text" style="margin-right: 10px;" v-model="youhua.nsmaxlf">
|
|
|
<template #prefix>最大</template>
|
|
|
</el-input>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="各可信度样本点数:" :label-width="formLabelWidth200">
|
|
|
<div style="display: flex;">
|
|
|
- <el-input type="text" style="margin-right: 10px;" v-model="cstnum">
|
|
|
+ <el-input type="text" style="margin-right: 10px;" v-model="youhua.nsmk">
|
|
|
<!-- <template #prepend>X方向</template> -->
|
|
|
<template #prefix>初始 </template>
|
|
|
</el-input>
|
|
|
- <el-input type="text" style="margin-right: 10px;" v-model="cstnum">
|
|
|
+ <el-input type="text" style="margin-right: 10px;" v-model="youhua.nsmaxmk">
|
|
|
<template #prefix>最大</template>
|
|
|
</el-input>
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="最优解收敛性容差:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.xtol" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="真实函数约束容差:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.feasibilitytolreal" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="代理模型约束容差:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.feasibilitytolsurro" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="选择代理模型:" :label-width="formLabelWidth200">
|
|
|
- <el-select v-model="dlival" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
+ <el-select v-model="youhua.surromod" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
<el-option v-for="item in daililist" :key="item.value" :label="item.label" :value="item.value">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="相关函数:" :label-width="formLabelWidth200">
|
|
|
- <el-select v-model="dlival1" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
+ <el-select v-model="youhua.corr" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
<el-option v-for="item in daililist1" :key="item.value" :label="item.label" :value="item.value">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="是否优化超参数:" :label-width="formLabelWidth200">
|
|
|
- <el-select v-model="dlival2" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
+ <el-select v-model="youhua.consttheta" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
<el-option v-for="item in daililist2" :key="item.value" :label="item.label" :value="item.value">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="Kriging模型阶数:" :label-width="formLabelWidth200">
|
|
|
- <el-select v-model="dlival3" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
+ <el-select v-model="youhua.porder" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
<el-option v-for="item in daililist3" :key="item.value" :label="item.label" :value="item.value">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="相关矩阵分解法:" :label-width="formLabelWidth200">
|
|
|
- <el-select v-model="dlival4" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
+ <el-select v-model="youhua.dcmp" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
<el-option v-for="item in daililist4" :key="item.value" :label="item.label" :value="item.value">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="超参数优化算法:" :label-width="formLabelWidth200">
|
|
|
- <el-select v-model="dlival5" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
+ <el-select v-model="youhua.paraopt" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
<el-option v-for="item in daililist5" :key="item.value" :label="item.label" :value="item.value">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="正则化方法:" :label-width="formLabelWidth200">
|
|
|
- <el-select v-model="dlival6" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
+ <el-select v-model="youhua.regular" :suffix-icon="CaretBottom" placeholder="请选择">
|
|
|
<el-option v-for="item in daililist6" :key="item.value" :label="item.label" :value="item.value">
|
|
|
</el-option>
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
<el-form-item label="加点准则:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.infill" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="KB加点数量:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.nparallel" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="子优化方法:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.iopt" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="约束处理方法:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.icstr" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="种群规模:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.ipopsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="最大进化代数:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.maxgen" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="交叉概率:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.pc" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
<el-form-item label="变异概率:" :label-width="formLabelWidth200">
|
|
|
- <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
+ <el-input v-model="youhua.pm" :step="100" :min="0" :max="1000" controls-position="right" />
|
|
|
</el-form-item>
|
|
|
</div>
|
|
|
</div>
|
|
@@ -134,26 +134,51 @@
|
|
|
import { ref, onMounted, reactive, provide, nextTick } from "vue";
|
|
|
import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
|
|
|
import { Edit, CaretBottom } from '@element-plus/icons-vue'
|
|
|
+import { request } from "@/utils/request";
|
|
|
let formLabelWidth3=ref(100)
|
|
|
let formLabelWidth200=ref(200)
|
|
|
let youhua = ref({
|
|
|
algorithm: 'GA',
|
|
|
- popsize: 100,
|
|
|
- epoch: 100,
|
|
|
- probcrossover: 0.1,
|
|
|
- probmut: 0.1,
|
|
|
- proboperator: 'SBX交叉',
|
|
|
- probscale: 1,
|
|
|
- strategy: '最佳保留策略',
|
|
|
- operator: '倒位变异',
|
|
|
- gpu: 'YES'
|
|
|
+ iout: 0,
|
|
|
+ irestart: '0',
|
|
|
+ ndoe: 0,
|
|
|
+ ns: 0,
|
|
|
+ nsmax: 0,
|
|
|
+ nslf: 0,
|
|
|
+ nsmaxlf: 0,
|
|
|
+ nsmk: 0,
|
|
|
+ nsmaxmk: 0,
|
|
|
+ xtol: 0,
|
|
|
+ feasibilitytolreal: 0,
|
|
|
+ feasibilitytolsurro: 0,
|
|
|
+ surromod: 'Kriging',
|
|
|
+ corr: '0',
|
|
|
+ consttheta: '0',
|
|
|
+ porder: '0',
|
|
|
+ dcmp: '0',
|
|
|
+ paraopt: '0',
|
|
|
+ regular: '0',
|
|
|
+ infill: 0,
|
|
|
+ nparallel: 0,
|
|
|
+ iopt: 0,
|
|
|
+ icstr: 0,
|
|
|
+ ipopsize: 0,
|
|
|
+ maxgen: 0,
|
|
|
+ pc: 0,
|
|
|
+ pm: 0
|
|
|
})
|
|
|
+let pid = ref();
|
|
|
+let suid = ref();
|
|
|
let cstnum=ref('');
|
|
|
let yslist = ref([
|
|
|
{ label: 'GA', value: 'GA' },
|
|
|
{ label: 'PSO', value: 'PSO' },
|
|
|
{ label: 'NSGA2', value: 'NSGA2' },
|
|
|
])
|
|
|
+let cswitch = ref([
|
|
|
+ { label: '是', value: '1' },
|
|
|
+ { label: '否', value: '0' },
|
|
|
+])
|
|
|
let dlival=ref('Kriging')
|
|
|
let daililist = ref([
|
|
|
{ label: 'Kriging', value: 'Kriging' },
|
|
@@ -164,9 +189,9 @@ let daililist = ref([
|
|
|
])
|
|
|
let dlival1=ref('三次样条函数')
|
|
|
let daililist1= ref([
|
|
|
- { label: '各向异性高斯指数函数', value: '各向异性高斯指数函数' },
|
|
|
- { label: '各向同性高斯指数函数', value: '各向同性高斯指数函数' },
|
|
|
- { label: '三次样条函数', value: '三次样条函数' },
|
|
|
+ { label: '各向异性高斯指数函数', value: '0' },
|
|
|
+ { label: '各向同性高斯指数函数', value: '1' },
|
|
|
+ { label: '三次样条函数', value: '2' },
|
|
|
|
|
|
])
|
|
|
let dlival2=ref('0')
|
|
@@ -191,9 +216,9 @@ let daililist4= ref([
|
|
|
])
|
|
|
let dlival5=ref('0')
|
|
|
let daililist5= ref([
|
|
|
- { label: 'HookeJeeves', value: '0' },
|
|
|
- { label: 'BFGS', value: '1' },
|
|
|
- { label: '单纯形搜索方法', value: '2' },
|
|
|
+ { label: 'HookeJeeves', value: '1' },
|
|
|
+ { label: 'BFGS', value: '2' },
|
|
|
+ { label: '单纯形搜索方法', value: '3' },
|
|
|
|
|
|
])
|
|
|
let dlival6=ref('0')
|
|
@@ -203,6 +228,101 @@ let daililist6= ref([
|
|
|
{ label: '优化正则化', value: '2' },
|
|
|
|
|
|
])
|
|
|
+
|
|
|
+const getDoptimize = (id) => {
|
|
|
+ pid.value = id;
|
|
|
+ const params = {
|
|
|
+ transCode: 'MDO0031',
|
|
|
+ pid: pid.value,
|
|
|
+ }
|
|
|
+ request(params).then((res) => {
|
|
|
+ if (res.hasOwnProperty('suid')) {
|
|
|
+ suid.value = res.suid;
|
|
|
+ youhua.value.algorithm = res.algorithm;
|
|
|
+ youhua.value.iout = res.iout;
|
|
|
+ youhua.value.irestart = res.irestart;
|
|
|
+ youhua.value.ndoe = res.ndoe;
|
|
|
+ youhua.value.ns = res.ns;
|
|
|
+ youhua.value.nsmax = res.nsmax;
|
|
|
+ youhua.value.nslf = res.nslf;
|
|
|
+ youhua.value.nsmaxlf = res.nsmaxlf;
|
|
|
+ youhua.value.nsmk = res.nsmk;
|
|
|
+ youhua.value.nsmaxmk = res.nsmaxmk;
|
|
|
+ youhua.value.xtol = res.xtol;
|
|
|
+ youhua.value.feasibilitytolreal = res.feasibilitytolreal;
|
|
|
+ youhua.value.feasibilitytolsurro = res.feasibilitytolsurro;
|
|
|
+ youhua.value.surromod = res.surromod;
|
|
|
+ youhua.value.corr = res.corr;
|
|
|
+ youhua.value.consttheta = res.consttheta;
|
|
|
+ youhua.value.porder = res.porder;
|
|
|
+ youhua.value.dcmp = res.dcmp;
|
|
|
+ youhua.value.paraopt = res.paraopt;
|
|
|
+ youhua.value.regular = res.regular;
|
|
|
+ youhua.value.infill = res.infill;
|
|
|
+ youhua.value.nparallel = res.nparallel;
|
|
|
+ youhua.value.iopt = res.iopt;
|
|
|
+ youhua.value.icstr = res.icstr;
|
|
|
+ youhua.value.ipopsize = res.ipopsize;
|
|
|
+ youhua.value.maxgen = res.maxgen;
|
|
|
+ youhua.value.pc = res.pc;
|
|
|
+ youhua.value.pm = res.pm;
|
|
|
+ } else {
|
|
|
+ }
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ ElMessage.error(err.returnMsg)
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+//代理优化器,添加保存
|
|
|
+const getaddDsave = () => {
|
|
|
+ const params = {
|
|
|
+ transCode: 'MDO0032',
|
|
|
+ pid: pid.value,
|
|
|
+ suid: suid.value,
|
|
|
+ algorithm: youhua.value.algorithm,
|
|
|
+ iout: youhua.value.iout,
|
|
|
+ irestart: youhua.value.irestart,
|
|
|
+ ndoe: youhua.value.ndoe,
|
|
|
+ ns: youhua.value.ns,
|
|
|
+ nsmax: youhua.value.nsmax,
|
|
|
+ nslf: youhua.value.nslf,
|
|
|
+ nsmaxlf: youhua.value.nsmaxlf,
|
|
|
+ nsmk: youhua.value.nsmk,
|
|
|
+ nsmaxmk: youhua.value.nsmaxmk,
|
|
|
+ xtol: youhua.value.xtol,
|
|
|
+ feasibilitytolreal: youhua.value.feasibilitytolreal,
|
|
|
+ feasibilitytolsurro: youhua.value.feasibilitytolsurro,
|
|
|
+ surromod: youhua.value.surromod,
|
|
|
+ corr: youhua.value.corr,
|
|
|
+ consttheta: youhua.value.consttheta,
|
|
|
+ porder: youhua.value.porder,
|
|
|
+ dcmp: youhua.value.dcmp,
|
|
|
+ paraopt: youhua.value.paraopt,
|
|
|
+ regular: youhua.value.regular,
|
|
|
+ infill: youhua.value.infill,
|
|
|
+ nparallel: youhua.value.nparallel,
|
|
|
+ iopt: youhua.value.iopt,
|
|
|
+ icstr: youhua.value.icstr,
|
|
|
+ ipopsize: youhua.value.ipopsize,
|
|
|
+ maxgen: youhua.value.maxgen,
|
|
|
+ pc: youhua.value.pc,
|
|
|
+ pm: youhua.value.pm,
|
|
|
+ checked:1
|
|
|
+ }
|
|
|
+ request(params).then((res) => {
|
|
|
+ ElMessage({
|
|
|
+ message: res.returnMsg,
|
|
|
+ type: 'success'
|
|
|
+ })
|
|
|
+ })
|
|
|
+ .catch((err) => {
|
|
|
+ ElMessage.error(err.returnMsg)
|
|
|
+ })
|
|
|
+}
|
|
|
+defineExpose({
|
|
|
+ getDoptimize
|
|
|
+});
|
|
|
</script>
|
|
|
|
|
|
|