Parcourir la source

完善优化器

tangjunhao il y a 7 mois
Parent
commit
fcf98aae58

+ 7 - 5
src/views/home.vue

@@ -1416,11 +1416,11 @@
                 <h4 :id="titleId" :class="titleClass">代理优化器</h4>
               </div>
             </template>
-            <Doptimize/>
+            <Doptimize ref="Doptimizeref"/>
             <template #footer>
               <div class="dialog-footer">
                 <el-button @click="dialog.dboptimizer = false">取消</el-button>
-                <el-button type="primary" @click=" dialog.dboptimizer = false">
+                <el-button type="primary" @click="getaddDsave(); dialog.dboptimizer = false">
                   确定
                 </el-button>
               </div>
@@ -1437,11 +1437,11 @@
                 <h4 :id="titleId" :class="titleClass">梯度优化器:</h4>
               </div>
             </template>
-            <Toptimize/>
+            <Toptimize ref="Toptimizeref"/>
             <template #footer>
               <div class="dialog-footer">
                 <el-button @click="dialog.tboptimizer = false">取消</el-button>
-                <el-button type="primary" @click=" dialog.tboptimizer = false">
+                <el-button type="primary" @click="getaddTsave(); dialog.tboptimizer = false">
                   确定
                 </el-button>
               </div>
@@ -2231,7 +2231,7 @@ let dialog = ref({
   agency: false,
   optimizer: false,
   jboptimizer: false,
-  dboptimize: false,
+  dboptimizer: false,
   tboptimizer: false,
   isADflow:false,
   lookover:false,
@@ -2441,6 +2441,7 @@ const optimizerfalse = (val) => {
     activeadf.value='代理优化器';
     // dialog.value.optgroup = true;
     dialog.value.dboptimizer = true;
+    Doptimizeref.value.getDoptimize(pid.value);
   } 
   //  else if (val == 'Xfiol' || val == 'Rosenbrock') {
   //   importget();
@@ -2450,6 +2451,7 @@ const optimizerfalse = (val) => {
   else if(val == '梯度优化器'){
     activeadf.value='梯度优化器';
     dialog.value.tboptimizer = true;
+    Toptimizeref.value.getToptimize(pid.value);
   }else if(val == 'CST'){
    /// dialog.value.CSTt = true;
   //  activeadf.value='CST';

+ 163 - 43
src/views/titlecomponent/Doptimize.vue

@@ -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>
 
 

+ 6 - 9
src/views/titlecomponent/Joptimize.vue

@@ -76,34 +76,31 @@ operator: '倒位变异',
 gpu: 'YES'
 })
 let pid=ref();
+let eid=ref();
 let cstnum=ref('');
 let yslist = ref([
 { label: 'GA', value: 'GA' },
 { label: 'PSO', value: 'PSO' },
 { label: 'NSGA2', value: 'NSGA2' },
 ])
-let addval1 = ref("概率相乘法")
-let addlist1 = ref([
-  { label: '概率相乘法', value: '概率相乘法' },
-])
-let addval2 = ref("SBX交叉")
+
 let addlist2 = ref([
   { label: 'SBX交叉', value: 'SBX交叉' },
 ])
-let addval3 = ref("最佳保留策略")
+
 let ys = ref("GA")
 let addlist3 = ref([
   { label: '最佳保留策略', value: '最佳保留策略' },
 ])
-let addval4 = ref("倒位变异")
+
 let addlist4 = ref([
   { label: '倒位变异', value: '倒位变异' },
 ])
-let addval7 = ref("1e-7")
+
 let addlist7 = ref([
   { label: '1e-7', value: '1e-7' },
 ])
-let addval8 = ref("NO")
+
 let addlist8 = ref([
   { label: 'YES', value: 'YES' },
   { label: 'NO', value: 'NO' },

+ 76 - 22
src/views/titlecomponent/Toptimize.vue

@@ -9,22 +9,22 @@
              </el-select>
            </el-form-item>
            <el-form-item label="最大外迭代步数:" :label-width="formLabelWidth1">
-             <el-input v-model="youhua.popsize" :step="100" :min="0" :max="1000" controls-position="right" />
+             <el-input v-model="youhua.majoriterationslimit" :step="100" :min="0" :max="1000" controls-position="right" />
            </el-form-item>
            <el-form-item label="输出精度等级:" :label-width="formLabelWidth1">
-             <el-input v-model="youhua.epoch" :step="100" :min="0" :max="1000" controls-position="right" />
+             <el-input v-model="youhua.majorprintlevel" :step="100" :min="0" :max="1000" controls-position="right" />
            </el-form-item>
            <el-form-item label="线性约束容差:" :label-width="formLabelWidth1">
-             <el-input v-model="youhua.epoch" :step="100" :min="0" :max="1000" controls-position="right" />
+             <el-input v-model="youhua.linearfeasibilitytolerance" :step="100" :min="0" :max="1000" controls-position="right" />
            </el-form-item>
            <el-form-item label="非线性约束容差:" :label-width="formLabelWidth1">
-             <el-input v-model="youhua.epoch" :step="100" :min="0" :max="1000" controls-position="right" />
+             <el-input v-model="youhua.nonlinearfeasibilitytolerance" :step="100" :min="0" :max="1000" controls-position="right" />
            </el-form-item>
            <el-form-item label="最优性度量容差::" :label-width="formLabelWidth1">
-             <el-input v-model="youhua.epoch" :step="100" :min="0" :max="1000" controls-position="right" />
+             <el-input v-model="youhua.optimalitytolerance" :step="100" :min="0" :max="1000" controls-position="right" />
            </el-form-item>
            <el-form-item label="梯度验证级别:" :label-width="formLabelWidth1">
-             <el-select v-model="tdval" :suffix-icon="CaretBottom" placeholder="请选择">
+             <el-select v-model="youhua.verifylevel" :suffix-icon="CaretBottom" placeholder="请选择">
                <el-option v-for="item in tdlist" :key="item.value" :label="item.label" :value="item.value">
                </el-option>
              </el-select>
@@ -36,22 +36,22 @@
 <script  setup>
 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 { Edit, CaretBottom, Checked } from '@element-plus/icons-vue'
+import { request } from "@/utils/request";
 let formLabelWidth3=ref(100)
 let formLabelWidth1=ref(170)
 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'
+majoriterationslimit: 100,
+majorprintlevel: 100,
+linearfeasibilitytolerance: 0.1,
+nonlinearfeasibilitytolerance: 0.1,
+optimalitytolerance: 0,
+verifylevel: '-1'
 })
+let pid = ref();
+let grid = ref();
 let cstnum=ref('');
 let yslist = ref([
 { label: 'GA', value: 'GA' },
@@ -59,15 +59,69 @@ let yslist = ref([
 { label: 'NSGA2', value: 'NSGA2' },
 ])
 
-let tdval=ref('0')
 let tdlist= ref([
-{ label: '约束详细验证', value: '0' },
-{ label: '不验证', value: '1' },
-{ label: '简单验证', value: '2' },
-{ label: '目标详细验证', value: '3' },
-{ label: '目标+约束详细验证', value: '4' },
+{ label: '不验证', value: '-1' },
+{ label: '简单验证', value: '0' },
+{ label: '目标详细验证', value: '1' },
+{ label: '约束详细验证', value: '2' },
+{ label: '目标+约束详细验证', value: '3' },
 
 ])
+const getToptimize = (id) => {
+  pid.value = id;
+  const params = {
+    transCode: 'MDO0033',
+    pid: pid.value,
+  }
+  request(params).then((res) => {
+    if (res.hasOwnProperty('grid')) {
+      grid.value = res.grid;
+      youhua.value.algorithm = res.algorithm;
+      youhua.value.majoriterationslimit = res.majoriterationslimit;
+      youhua.value.majorprintlevel = res.majorprintlevel;
+      youhua.value.linearfeasibilitytolerance = res.linearfeasibilitytolerance;
+      youhua.value.nonlinearfeasibilitytolerance = res.nonlinearfeasibilitytolerance;
+      youhua.value.optimalitytolerance = res.optimalitytolerance;
+      youhua.value.verifylevel = res.verifylevel;
+
+    } else {
+      
+    }
+  })
+  .catch((err) => {
+    ElMessage.error(err.returnMsg)
+  })
+}
+
+//代理优化器,添加保存
+const getaddTsave = () => {
+  const params = {
+    transCode: 'MDO0034',
+    pid: pid.value,
+    grid: grid.value,
+    algorithm: youhua.value.algorithm,
+    majoriterationslimit: youhua.value.majoriterationslimit,
+    majorprintlevel: youhua.value.majorprintlevel,
+    linearfeasibilitytolerance: youhua.value.linearfeasibilitytolerance,
+    nonlinearfeasibilitytolerance: youhua.value.nonlinearfeasibilitytolerance,
+    optimalitytolerance: youhua.value.optimalitytolerance,
+    verifylevel: youhua.value.verifylevel,
+    checked:1
+  }
+  request(params).then((res) => {
+    pid.value = res.pid;
+    ElMessage({
+      message: res.returnMsg,
+      type: 'success'
+    })
+  })
+  .catch((err) => {
+    ElMessage.error(err.returnMsg)
+  })
+}
+defineExpose({
+  getToptimize
+});
 </script>