intlinproggydF4y2Ba
混合整数线性规划(MILP)gydF4y2Ba
语法gydF4y2Ba
描述gydF4y2Ba
混合整数线性规划求解器。gydF4y2Ba
找到指定的问题的最小值gydF4y2Ba
fgydF4y2Ba,gydF4y2BaxgydF4y2Baintcon,gydF4y2BabgydF4y2Ba,gydF4y2Ba说真的gydF4y2Ba,gydF4y2Ba磅gydF4y2Ba,gydF4y2Ba乌兰巴托gydF4y2Ba向量,gydF4y2Ba一个gydF4y2Ba而且gydF4y2BaAeqgydF4y2Ba矩阵。gydF4y2Ba
您可以指定gydF4y2BafgydF4y2Baintcon,gydF4y2Ba磅gydF4y2Ba,gydF4y2Ba乌兰巴托gydF4y2Ba作为向量或数组。看到gydF4y2Ba矩阵的参数gydF4y2Ba.gydF4y2Ba
请注意gydF4y2Ba
intlinproggydF4y2Ba
只适用于基于求解器的方法。有关这两种优化方法的讨论,请参见gydF4y2Ba首先选择基于问题或基于求解器的方法gydF4y2Ba.gydF4y2Ba
解决了最小值gydF4y2BaxgydF4y2Ba
= intlinprog (gydF4y2BafgydF4y2Ba
,gydF4y2BaintcongydF4y2Ba
,gydF4y2Ba一个gydF4y2Ba
,gydF4y2BabgydF4y2Ba
)gydF4y2Baf ' * xgydF4y2Ba
的组成部分gydF4y2BaxgydF4y2Ba
在gydF4y2BaintcongydF4y2Ba
是整数,gydF4y2Ba* x≤bgydF4y2Ba
.gydF4y2Ba
在满足等式约束的同时解决了上述问题gydF4y2BaxgydF4y2Ba
= intlinprog (gydF4y2BafgydF4y2Ba
,gydF4y2BaintcongydF4y2Ba
,gydF4y2Ba一个gydF4y2Ba
,gydF4y2BabgydF4y2Ba
,gydF4y2BaAeqgydF4y2Ba
,gydF4y2Ba说真的gydF4y2Ba
)gydF4y2BaAeq * x =说真的gydF4y2Ba
.集gydF4y2Ba一个= []gydF4y2Ba
而且gydF4y2Bab = []gydF4y2Ba
如果不存在不平等。gydF4y2Ba
定义一组设计变量的上下限,gydF4y2BaxgydF4y2Ba
= intlinprog (gydF4y2BafgydF4y2Ba
,gydF4y2BaintcongydF4y2Ba
,gydF4y2Ba一个gydF4y2Ba
,gydF4y2BabgydF4y2Ba
,gydF4y2BaAeqgydF4y2Ba
,gydF4y2Ba说真的gydF4y2Ba
,gydF4y2Ba磅gydF4y2Ba
,gydF4y2Ba乌兰巴托gydF4y2Ba
)gydF4y2BaxgydF4y2Ba
,所以解总是在值域内gydF4y2BaLb≤x≤ubgydF4y2Ba
.集gydF4y2BaAeq = []gydF4y2Ba
而且gydF4y2Ba说真的= []gydF4y2Ba
如果不存在等式。gydF4y2Ba
使用初始可行点进行优化gydF4y2BaxgydF4y2Ba
= intlinprog (gydF4y2BafgydF4y2Ba
,gydF4y2BaintcongydF4y2Ba
,gydF4y2Ba一个gydF4y2Ba
,gydF4y2BabgydF4y2Ba
,gydF4y2BaAeqgydF4y2Ba
,gydF4y2Ba说真的gydF4y2Ba
,gydF4y2Ba磅gydF4y2Ba
,gydF4y2Ba乌兰巴托gydF4y2Ba
,gydF4y2Bax0gydF4y2Ba
)gydF4y2Bax0gydF4y2Ba
.集gydF4y2Ba磅= []gydF4y2Ba
而且gydF4y2Ba乌兰巴托= []gydF4y2Ba
如果没有边界存在。gydF4y2Ba
中指定的优化选项的使用最小化gydF4y2BaxgydF4y2Ba
= intlinprog (gydF4y2BafgydF4y2Ba
,gydF4y2BaintcongydF4y2Ba
,gydF4y2Ba一个gydF4y2Ba
,gydF4y2BabgydF4y2Ba
,gydF4y2BaAeqgydF4y2Ba
,gydF4y2Ba说真的gydF4y2Ba
,gydF4y2Ba磅gydF4y2Ba
,gydF4y2Ba乌兰巴托gydF4y2Ba
,gydF4y2Bax0gydF4y2Ba
,gydF4y2Ba选项gydF4y2Ba
)gydF4y2Ba选项gydF4y2Ba
.使用gydF4y2BaoptimoptionsgydF4y2Ba
设置这些选项。集gydF4y2Bax0 = []gydF4y2Ba
如果初始点不存在。gydF4y2Ba
使用一个gydF4y2BaxgydF4y2Ba
= intlinprog (gydF4y2Ba问题gydF4y2Ba
)gydF4y2Ba问题gydF4y2Ba
结构来封装所有求解器输入。您可以导入gydF4y2Ba问题gydF4y2Ba
结构从MPS文件使用gydF4y2BampsreadgydF4y2Ba
.您也可以创建gydF4y2Ba问题gydF4y2Ba
结构的gydF4y2BaOptimizationProblemgydF4y2Ba
对象的使用gydF4y2Baprob2structgydF4y2Ba
.gydF4y2Ba
[gydF4y2Ba
,对于上面描述的任何输入参数,返回gydF4y2BaxgydF4y2Ba
,gydF4y2BafvalgydF4y2Ba
,gydF4y2BaexitflaggydF4y2Ba
,gydF4y2Ba输出gydF4y2Ba
) = intlinprog (gydF4y2Ba___gydF4y2Ba)gydF4y2Bafval = f ' * xgydF4y2Ba
,一个值gydF4y2BaexitflaggydF4y2Ba
描述出口条件和结构gydF4y2Ba输出gydF4y2Ba
包含关于优化过程的信息。gydF4y2Ba
例子gydF4y2Ba
输入参数gydF4y2Ba
输出参数gydF4y2Ba
限制gydF4y2Ba
通常是解决方案的一些假定的整数值组件gydF4y2Ba
x (intCon)gydF4y2Ba
不是精确的整数。gydF4y2BaintlinproggydF4y2Ba
内的所有解值都视为整数gydF4y2BaIntegerTolerancegydF4y2Ba
的一个整数。gydF4y2Ba要将所有假定的整数四舍五入为精确整数,请使用gydF4y2Ba
轮gydF4y2Ba
函数。gydF4y2Bax (intcon) =圆(x (intcon));gydF4y2Ba
谨慎gydF4y2Ba
舍入解决方案可能导致解决方案变得不可行的。四舍五入后检查可行性:gydF4y2Ba
马克斯(A * x - b)gydF4y2Ba看条目是否太积极,所以有小的不可行性gydF4y2Ba马克斯(abs (Aeq * x - beq))gydF4y2Ba查看条目是否足够接近于零gydF4y2Ba马克斯(x -乌兰巴托)gydF4y2Ba阳性条目违反了边界gydF4y2Ba马克斯(lb - x)gydF4y2Ba阳性条目违反了边界gydF4y2Ba
intlinproggydF4y2Ba
当解决方案组件的绝对值超过gydF4y2Ba2.1 e9gydF4y2Ba
.当你的解决方案有这样的组件时,gydF4y2BaintlinproggydF4y2Ba
警告你。如果收到此警告,请检查该解决方案,看看该解决方案中假定为整数值的组件是否接近整数。gydF4y2BaintlinproggydF4y2Ba
不允许分量的问题,如系数在gydF4y2BafgydF4y2Ba
,gydF4y2Ba一个gydF4y2Ba
,或gydF4y2Ba乌兰巴托gydF4y2Ba
,超过gydF4y2Ba1 e25gydF4y2Ba
按绝对价值。如果你想逃跑gydF4y2BaintlinproggydF4y2Ba
面对这样的问题,gydF4y2BaintlinproggydF4y2Ba
一个错误的问题。gydF4y2Ba
提示gydF4y2Ba
若要指定二进制变量,请将变量设置为整数gydF4y2Ba
intcongydF4y2Ba
的下界gydF4y2Ba0gydF4y2Ba
的上限gydF4y2Ba1gydF4y2Ba
.gydF4y2Ba通过指定稀疏线性约束矩阵节省内存gydF4y2Ba
一个gydF4y2Ba
而且gydF4y2BaAeqgydF4y2Ba
.但是,您不能将稀疏矩阵用于gydF4y2BabgydF4y2Ba
而且gydF4y2Ba说真的gydF4y2Ba
.gydF4y2Ba如果你包含gydF4y2Ba
x0gydF4y2Ba
参数,gydF4y2BaintlinproggydF4y2Ba
中使用该值gydF4y2Ba“rin”gydF4y2Ba
引导潜水启发式直到找到一个更好的整数可行点。所以当你提供gydF4y2Bax0gydF4y2Ba
,您可以通过设置gydF4y2Ba“启发式”gydF4y2Ba
选项gydF4y2Ba“rins-diving”gydF4y2Ba
或者另一种使用gydF4y2Ba“rin”gydF4y2Ba
.gydF4y2Ba为整数组件提供逻辑索引,即二进制向量gydF4y2Ba
1gydF4y2Ba
表示整数,转换为gydF4y2BaintcongydF4y2Ba
形式使用gydF4y2Ba找到gydF4y2Ba
.例如,gydF4y2Balogicalindices = [1, 0, 0, 1, 1, 0, 0);intcon =找到(logicalindices)gydF4y2Ba
5 . Intcon = 1 4gydF4y2Ba
intlinproggydF4y2Ba
替换gydF4y2BabintproggydF4y2Ba
.更新旧的gydF4y2BabintproggydF4y2Ba
代码来使用gydF4y2BaintlinproggydF4y2Ba
,进行以下更改:gydF4y2Ba集gydF4y2Ba
intcongydF4y2Ba
来gydF4y2Ba1: numVarsgydF4y2Ba
,在那里gydF4y2BanumVarsgydF4y2Ba
是问题中变量的数量。gydF4y2Ba集gydF4y2Ba
磅gydF4y2Ba
来gydF4y2Ba0 (numVars, 1)gydF4y2Ba
.gydF4y2Ba集gydF4y2Ba
乌兰巴托gydF4y2Ba
来gydF4y2Ba的(numVars, 1)gydF4y2Ba
.gydF4y2Ba更新任何相关选项。使用gydF4y2Ba
optimoptionsgydF4y2Ba
为创建选项gydF4y2BaintlinproggydF4y2Ba
.gydF4y2Ba把电话改到gydF4y2Ba
bintproggydF4y2Ba
如下:gydF4y2Ba[x, fval exitflag、输出]= bintprog (f, A、b Aeq,说真的,x0,选项)gydF4y2Ba%将您的呼叫更改为:gydF4y2Ba[x, fval exitflag、输出]= intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托,x0,选项)gydF4y2Ba
选择功能gydF4y2Ba
应用程序gydF4y2Ba
的gydF4y2Ba优化gydF4y2BaLive Editor任务提供了一个可视化的界面gydF4y2BaintlinproggydF4y2Ba
.gydF4y2Ba
版本历史gydF4y2Ba
介绍了R2014agydF4y2Ba另请参阅gydF4y2Ba
linproggydF4y2Ba
|gydF4y2BampsreadgydF4y2Ba
|gydF4y2BaoptimoptionsgydF4y2Ba
|gydF4y2Baprob2structgydF4y2Ba
|gydF4y2Ba优化gydF4y2Ba