很好的分享!赞。着实感谢你当初对我就这个用法的启发。
就该功能而言,其本质还是受限于LINDO API与CONOPT,如果模型高度非线性,或者遇到DLL本身存在的缺陷,问题似乎就要复杂一些了。
如:
SETS:
P/1..5/;
ENDSETS
MIN=@COS(X1)*@COS(X2)-@SUM(P(J):(-1)^J*J*2*@EXP(-500*((X1-J*2)^2+(X2-J*2)^2)));
@BND(-50,X1,50);@BND(-50,X2,50);
最优解(至少更优解)应为:
ObjValue = -7.97883233;
X1 = 7.9999820;
X2 = 7.9999820;
以图为证:
截止到当前最新的LINGO 15 Beta,使用其包含的LINDO API 9.0.1889.102以及对应的CONOPT 3.15P,我没有发现如何通过设置参数求得这个结果。一两个月前,我给官方反馈了此事,官方给出的解释是@EXP()函数出现了堆栈下溢(不知我有没有翻译错),看来目前还没有解决,至于具体什么情况,呃......不清楚。