1整数规划的MATLAB求解方法(一)用MATLAB求解一般混合整数规划问题由于MATLAB优化工具箱中并未提供求解纯整数规划和混合整数规划的函数,因而需要自行根据需要和设定相关的算法来实现
现在有许多用户发布的工具箱可以解决该类问题
这里我们给出开罗大学的Sherif和Tawfik在MATLABCentral上发布的一个用于求解一般混合整数规划的程序,在此命名为intprog,在原程序的基础上做了简单的修改,将其选择分枝变量的算法由自然序改造成分枝变量选择原则中的一种,即:选择与整数值相差最大的非整数变量首先进行分枝
intprog函数的调用格式如下:[x,fval,exitflag]=intprog(c,A,b,Aeq,beq,lb,ub,M,TolXInteger)该函数解决的整数规划问题为:minf=CTXs
Ax0,且取整数值12算法:c=[-1;-1];A=[-42;42;0-2];b=[-1;11;-1];lb=[0;0];M=[1;2];Tol=1e-8;[x,fval]=linprog(c,A,b,[],[],lb,[])%求解原问题松弛线性规划[x1,fval1]=intprog(c,A,b,[],[],lb,[],M,Tol)%求最优解整数解结果:x=%松弛线性规划问题的最优解1
5000fval=-4
0000x1=%整数规划的最优解21fval2=-3
0000二)用MATLAB求解0-1规划问题在MATLAB优化工具箱中,提供了专门用于求解0-1规划问题的函数bintprog,其算法基础即为分枝界定法,在MATLAB中调用bintprog函数求解0-1规划时,需要遵循MATLAB中对0-1规划标准性的要求
0-1规划问题的MATLAB标准型minf=CTXs