如何优雅地使用gams,matlab,AIMMS,LINGO

如何优雅地使用gams,matlab,AIMMS,LINGO,第1张

首先,你得有Sublime,推荐使用稳定版的Sublime Text 2,官方网站:Sublime Text: The text editor you'll fall in love with 就能下载到。Sublime的其他种种好处我就不赘述了,谁用谁知道。这里使用了lolow对windows下的GAMS 开发的Sublime package,项目托管在Github上:lolow/sublime-gams 路 GitHub ,该项目集成了GAMS的代码高亮,编译执行等功能!要使用这个package,在安装好Sublime以后,需要安装Package Control组件:按 Ctrl+` 调出console粘贴以下代码到底部命令行并回车:

重启Sublime Text 2。如果在Perferences->package settings中看到package control这一项,说明你安装成功了然后使用Package Control 安装GAMS的Package:按下Ctrl+Shift+P调出命令面板输入install 调出 Install Package 选项并回车。 输入GAMS回车安装,一会就能安装好。接着需要打开包文件夹配置GAMS路径: 找到Gamssublime-build文件,用Sublime打开,找到 "path": "", 这一行然后把你的GAMS安装目录复制进去!如下图11行所示: MAC电脑需要检查图中第20行末尾是否有逗号,有的话要去掉,不然会出错。MAC电脑需要检查图中第20行末尾是否有逗号,有的话要去掉,不然会出错。这时候打开gms文件,代码高亮也有了,最为关键的是: 按下 command + b 程序就会调用GAMS执行,下方会有执行步骤回显。最后,按下control + shift + g 就能随时在 gms 文件和 lst 文件之间进行切换

楼上 @sinxlg1 说的有道理,非线性优化一般会存在多个局部最优点,使用Lingo时,建议设置使用全局求解器,如图所示:

如果不选择全局求解器,得到的为局部最优解:

选择全局求解器之后,可以得到全局最优解:

MATLAB程序是用Monte-Carlo方法,即随机在给定范围内取点,如果满足所有的约束,则为可行解;如果该可行解比当前最优值更佳,则用新取的点代替原最优点。很显然这种做法需要足够多的尝试次数才有望得到比较靠谱的解,现在的设置为10^5,应该说比较大了,但并不能保证每次都得到相同的解,这是Monte-Carlo方法不可避免的偶然性。

在2011b之后的MATLAB版本中,遗传算法函数ga支持求解不含等式约束的混合整数规划问题,参考代码如下:

A = [ 

    1 1 1 1 1;

    1 2 2 1 6;

    2 1 6 0 0;

    0 0 1 1 5];

b = [400 800 200 200]';

lb = zeros(1,5);

ub = ones(1,5)99;

f=@ (x)x(1)^2+x(2)^2+3x(3)^2+4x(4)^2+2x(5)^2-8x(1)-2x(2)-3x(3)-x(4)-2x(5);

x = ga(@(x)-f(x),5,A,b,[],[],lb,ub,[],1:5)

f(x)

在多数情况下,可以求出全局最优解:

x =

    50    99     0    99    20

ans =

       51568

但应该注意,遗传算法本身也是一种带有随机因素的算法,并不能保证每次都得到真正的最优结果,有时也会得到其它解,例如

x =

    50    99     0    99     0

ans =

       50808

另外,根据你给的MATLAB程序,实际上隐含了xi>=0的约束条件。如果不考虑这个约束,实际上这个问题是无解的(xi可以取足够小的负数,目标函数趋近无穷大)。

f=@(x)-(2x(1)+3x(2)-5x(3));

Aeq=[1 1 1];beq=7;

A=-[2,-5,1];b=-10;

x0=[5 5 5]';

lb=[0 0 0]';ub=[inf inf inf]';

[x,fval] = fmincon(f,x0,A,b,Aeq,beq,lb,ub)

f_max=abs(fval)

以上就是关于如何优雅地使用gams,matlab,AIMMS,LINGO全部的内容,包括:如何优雅地使用gams,matlab,AIMMS,LINGO、matlab和lingo结果不一样是什么原因,求大神、1、利用Matlab或Lingo软件计算以下规划问题,写出其对应程序等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10107974.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存