level 1
🌐blitz
楼主
各位大佬好ww萌新提一个问题
最近在用Minimize做优化问题,涉及迭代求解,但是有些时候会出现Minimize无解的问题。目前是想检测无解时候的返回值再作相应调整。
查了一下帮助手册,Minimize无解的时候返回的各个Rule对应的值都是Indeterminate,目前的想法是想通过If函数检测这个返回的Indeterminate再去做相应的修改,但是试了一下好像并不行,If函数里面的语句没有被执行。所以想请教一下怎么检测这个Indeterminate。
涉及到问题的代码如下:
{deltavalue,fix}=Minimize[{deltaf,(hVal+deltah)==0&&(gVal+deltag)<=gupperVal&&(gVal+deltag)>=glowerVal&&vars<varsVal&&vars>-varsVal},vars];(*利用等式约束、不等式约束构造线性规划问题并求解*)
If[deltaold>0&&deltavalue<0,{varsVal=varsVal/2;Continue[];}];
(*If[deltavalue>0,{itrstop=itr;itr=maxIter}];*)
If[Abs[deltavalue]<=deltaval,{itrstop=itr;itr=maxIter}]; (*迭代结束的精度条件*)
fixVal=vars/.fix;
If[fixVal[[1,1]]==Indeterminate,{varsVal=2*varsVal;Continue[];}];
最后一个If函数好像无法检测Indeterminate这个返回值,请各位大佬赐教。
2018年08月19日 11点08分
1
最近在用Minimize做优化问题,涉及迭代求解,但是有些时候会出现Minimize无解的问题。目前是想检测无解时候的返回值再作相应调整。
查了一下帮助手册,Minimize无解的时候返回的各个Rule对应的值都是Indeterminate,目前的想法是想通过If函数检测这个返回的Indeterminate再去做相应的修改,但是试了一下好像并不行,If函数里面的语句没有被执行。所以想请教一下怎么检测这个Indeterminate。
涉及到问题的代码如下:
{deltavalue,fix}=Minimize[{deltaf,(hVal+deltah)==0&&(gVal+deltag)<=gupperVal&&(gVal+deltag)>=glowerVal&&vars<varsVal&&vars>-varsVal},vars];(*利用等式约束、不等式约束构造线性规划问题并求解*)
If[deltaold>0&&deltavalue<0,{varsVal=varsVal/2;Continue[];}];
(*If[deltavalue>0,{itrstop=itr;itr=maxIter}];*)
If[Abs[deltavalue]<=deltaval,{itrstop=itr;itr=maxIter}]; (*迭代结束的精度条件*)
fixVal=vars/.fix;
If[fixVal[[1,1]]==Indeterminate,{varsVal=2*varsVal;Continue[];}];
最后一个If函数好像无法检测Indeterminate这个返回值,请各位大佬赐教。
