matlab求解整数规划、0-1规划

matlab求解整数规划、0-1规划

R2014以前无法求解整数规划,2014之后用bintprog求解0-1规划

线性规划在2016版本中暂时还可用linprog求解

注:代码中标注的pXXXtaskX指的是西安交大采用的第二版数学实验教材的习题或例题。

求解0-1规划

%p180task1
clear,clc;
f=[10 12 15 11 16 13];
A=[40 60 80 50 90 70];
b=300;
Aeq=[1 1 1 1 1 1];
beq=3;
intcon=[1,2,3,4,5,6];
x=intlinprog(f,intcon,A,b,Aeq,beq,zeros(6,1),ones(6,1))

intlinprog中
intcon是指定哪几个变量需要是整数,这里六个变量都需要,所以是intcon=1:6
0-1规划,下限为0,上限为1即可

求解整数规划

% P172task2
clc,clear

Aeq=[1 0 0 1 0 0 1 0 0;
    0 1 0 0 1 0 0 1 0;
    0 0 1 0 0 1 0 0 1];
beq=[300;400;500];
f=[7 8 8 8 7 8 7 9 8];
A=[0.6 0.5 0.5 0 0 0 0 0 0;
    0 0 0 0.4 0.7 0.5 0 0 0;
    0 0 0 0 0 0 0.8 0.6 0.6];
b=[700;800;900];
ub=[];
lb=zeros(9,1);
intcon=[1:9];
[x,fval]=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)
%todo 这解好像不对

把0-1规划的上下限改变就成了整数规划了。

或者说0-1规划是整数规划在整数规划中的特例,即上下限分别为0,1

你可能感兴趣的:(matlab)