Minimize函数无解时的相关问题
mathematica吧
全部回复
仅看楼主
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
吧务
level 15
嗬,这个有意思:
(拍肩)你还是用===吧。
2018年09月01日 04点09分 2
我后来发现check一下就可以了
2018年09月01日 04点09分
@🌐blitz 那当然也是可以的。这两个方法实质上都是用“编程”类的函数代替“算数”类的函数。
2018年09月01日 04点09分
Equal的这个行为的可能理由,是在算术意义上,“不能确定”并不能等于“不能确定”,可是搞笑的是,Infinity==Infinity又是返回True的……
2018年09月01日 04点09分
1