如何用matlab求解0-1规划问题?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何用matlab求解0-1规划问题?相关的知识,希望对你有一定的参考价值。
数学建模
参考技术A 例 求解下列0-1整数线性规划目标函数
max f=-3x1+2x2-5x3
约束条件
x1+2x2-x3≤2,
x1+4x2+x3≤4,
x1+x2≤3,
4x1+x3≤6,
x1,x2,x3为0或1.
在Matlab命令窗口中输入如下命令:
f=[-3,2,-5];
a=[1,2,-1,;1,4,1;1,1,0;0,4,1];b=[2;4;3;6];
[x,fval]=bintprog(-f,a,b)
%因为bintprog求解的为目标函数的最小值,所以要在f前面加个负号。
运行结果为:
Optimization terminated.
x = 0
1
0
fval = -2
表示x1=0,x2=1,x3=0时,f取最大值2。
当然,我们还可以在Matlab命令窗口中输入如下命令查询0-1整数规划命令的用法。
help bintprog本回答被提问者采纳
如何用matlab求解齐次线性方程组
参考技术A 先写m文件function
[x,y]=line_solution(A,b)
[m,n]=size(A);
y=[];
if
norm(b)>0
if
rank(A)==rank([A,b])
if
rank(A)==n
disp('方程有唯一解x');
x=A\b;
else
disp('方程有无穷多解,特解为x,其齐次方程组的基础解系为y');
x=A\b;
y=null(A,'r');%null是用来求齐次线性方程组的基础解系的,加上'r'则求出的是一组最小正整数解,如果不加,则求出的是解空间的规范正交基。
end
else
disp('方程无解');
x=[];
end
else
disp('原方程组有唯一零解x');
x=zeros(n,1);
if
rank(A)<n
disp('方程组有无穷个解,基础解系为y');
y=null(A,'r');
end
end
----------------------------------------------------------------------
举例调用:
format
rat
%以有理数形式输出
A=[1,1,-3,-1;3,-1,-3,4;1,5,-9,-8];
b=[1;4;0];
[x,y]=line_solution(A,b);
x,y
format
short
%保留4位有效数字
以上是关于如何用matlab求解0-1规划问题?的主要内容,如果未能解决你的问题,请参考以下文章