用matlab和LINGO求解整数规划问题

⽤matlab和LINGO求解整数规划问题
山东省技术监督局整数规划问题
尤其是0-1整数规划问题 是我们在数学建模中经常会遇到问题,TSP问题、指派问题、背包问题等,接下来,我将⽤matlab和LINGO中的⼀些函数来解决整数规划问题。
matlab常⽤的就是 intlinprog函数
LINGO 通过 @gin 来实现取整操作
intlinprog
可以使⽤ matlab 中的 intlinprog 函数 专门⽤于 求解整数规划问题。 其中值的⼀提的是,原来以前版本的matlab是不⽀持求解整数规划问题,只提供了 bintprog函数 来求解 0-1整数问题,但现在matlab 提供了 intlinprog函数来专门求解整数规划问题,且你只需要把函数的⾃变量x的取值的上下限变为0和1,那么 intlinprog函数就变成了⼀个求解0-1整数规划问题
intlinprog 函数 ⽤于 求解 这种情况
财务危机
⽅程为:
[x, fval]=intlinprog (f, intcon, A, b, Aeq, beq, lb ,ub) ,其中 intcon 为 整数约束的⾃变量x的编号,⽐如 ⽅程⾥⾯取整的 函数 为 x1、x2、x3 则 intcon=[1 2 3];
对于下⾯⼀个⽅程:
且 x1 、 x2 为整数
所以,我们⽤来求解上图那个⽅程的代码就是:
c=[100 150];
A=[1 2;1 0;0 1];
b=[160;100;120];
lb=zeros(2,1);
[x, fval]=intlinprog(-c,[1 2],A,b,[],[],lb);
disp(x);
disp(c*x);
赛钛客rat9由于intlinprog函数是⽤于求解最⼩值,所以我们对⽬标函数加个负号, 也就是 对 负的⽬标函数 求最⼩值 ,即对⽬标函数求最⼤值,所以得出结果是直接c*x 就⾏
结果为:
100.0000
30.0000
14500
文化眼光
如果只符合0-1规划的话,那我们就把ub 设置为1就好烽火通信南京研发中心
LINGO来求解:
model:
max=100*x1+150*x2;
黄集骧
x1+2*x2<=160;
x1<=100;
x2<=120;
@gin(x1);
@gin(x2);
end
由于,LINGO默认变量都是⼤于0,所以只需要取整就⾏。
结果为:
即 x1=100,x2=30,最终结果为 14500。
以上就是 ⽤matlab和 LINGO 两种软件来求解 整数规划问题!

本文发布于:2024-09-22 05:29:54,感谢您对本站的认可!

本文链接:https://www.17tex.com/xueshu/536883.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:问题   整数   规划   求解   函数   变量   取整
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议