调用格式
[x,fval,exitflag]=intprog(c,A,b,Aeq,beq,lb,ub,M,TolXInteger)
%x为最优解向量,fval即f value 为整数规划问题在最优解向量x处的目标函数值,exitflag为算法终止出的状态指示变量。
%输入参数里,c表征目标函数;A,b表征不等式约束;Aeq,beq表征等式约束;lb,ub表征边界约束;M表征具有整数约束的设计变量的序号;TolXInteger为判定整数的误差限。
标准形式
1、假设x为n维设计变量,且问题具有不等式约束m1个,等式约束m2个,那么:c、x均为n维列向量,b为m1维列向量,beq为m2维列向量,A为m1×n维矩阵,Aeq为m2×n维矩阵。
2、输入参数有c,A,b,Aeq,beq,lb,ub,M和TolXInteger。其中c为目标函数所对应设计变量的系数,A为不等式约束条件方程组构成的系数矩阵,b为不等式约束条件方程组右边的值构成的向量。Aeq为等式约束方程组构成的系数矩阵,beq为等式约束条件方程组右边的值构成的向量。lb和ub为设计变量对应的上界和下界。M为具有整数约束条件限制的设计变量的序号,例如问题中设计变量为x1, x2,…, x6,要求x2, x3和x6为整数,则M=[2;3;6];若要求全为整数,则M=1:6,或者M=[1;2;3;4;5;6]。TolXInteger为判定整数的误差限,即若某数x和最邻近整数相差小于该误差限,则认为x即为该整数。
3、输出参数有x, fval和exitflag。其中x为整数规划问题的最优解向量,fval为整数规划问题的目标函数在最优解向量x处的函数值,exitflag为函数计算终止时的状态指示变量。
c=[-5;-8];
A=[1 1;5 9];
b=[6;45];
lb=[0;0];
M=[1;2]; %x1,x2均要求为整数变量
Tol=1e-8; %判断是否整数的误差限
[x,fval]=linprog(c,A,b,[],[],lb,[]) %松弛问题的解
[x1,fval1]=intprog(c,A,b,[],[],lb,[],M,Tol)%整数规划的解
注:整数规划问题的松弛问题(slack problem)是指:不考虑整数条件,由余下的目标函数和约束条件构成的规划问题