主要内容gydF4y2Ba

intlinprog.gydF4y2Ba

混合整数线性规划(MILP)gydF4y2Ba

描述gydF4y2Ba

混合整数线性编程求解器。gydF4y2Ba

查找最低问题所指定的问题gydF4y2Ba

闵gydF4y2Ba xgydF4y2Ba fgydF4y2Ba TgydF4y2Ba xgydF4y2Ba 受到约束gydF4y2Ba {gydF4y2Ba xgydF4y2Ba (gydF4y2Ba Intcon.gydF4y2Ba )gydF4y2Ba 都是整数gydF4y2Ba 一个gydF4y2Ba ⋅gydF4y2Ba xgydF4y2Ba ≤gydF4y2Ba bgydF4y2Ba 一个gydF4y2Ba egydF4y2Ba 问gydF4y2Ba ⋅gydF4y2Ba xgydF4y2Ba =gydF4y2Ba bgydF4y2Ba egydF4y2Ba 问gydF4y2Ba lgydF4y2Ba bgydF4y2Ba ≤gydF4y2Ba xgydF4y2Ba ≤gydF4y2Ba ugydF4y2Ba bgydF4y2Ba .gydF4y2Ba

fgydF4y2Ba,gydF4y2BaxgydF4y2Ba,intcon,gydF4y2BabgydF4y2Ba,gydF4y2Ba贝卡gydF4y2Ba,gydF4y2Ba磅gydF4y2Ba, 和gydF4y2BaUB.gydF4y2Ba向量,gydF4y2Ba一个gydF4y2Ba和gydF4y2BaAeqgydF4y2Ba是矩阵。gydF4y2Ba

您可以指定gydF4y2BafgydF4y2Ba,intcon,gydF4y2Ba磅gydF4y2Ba, 和gydF4y2BaUB.gydF4y2Ba作为载体或数组。看到gydF4y2Ba矩阵论据gydF4y2Ba.gydF4y2Ba

笔记gydF4y2Ba

intlinprog.gydF4y2Ba仅适用于基于求解器的方法。有关这两种优化方法的讨论,请参见gydF4y2Ba首先选择基于问题或基于解决者的方法gydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaIntcon.gydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba)gydF4y2Ba解决分钟gydF4y2Baf'* xgydF4y2Ba这样的组件gydF4y2BaxgydF4y2Ba在gydF4y2BaIntcon.gydF4y2Ba是整数,gydF4y2Baa *x≤bgydF4y2Ba.gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaIntcon.gydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba,gydF4y2BaAeqgydF4y2Ba,gydF4y2Ba贝卡gydF4y2Ba)gydF4y2Ba在满足等式约束的同时,解决了上述问题gydF4y2Baaeq * x = beqgydF4y2Ba.放gydF4y2Baa = []gydF4y2Ba和gydF4y2Bab = []gydF4y2Ba如果不存在不平等。gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaIntcon.gydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba,gydF4y2BaAeqgydF4y2Ba,gydF4y2Ba贝卡gydF4y2Ba,gydF4y2Ba磅gydF4y2Ba,gydF4y2BaUB.gydF4y2Ba)gydF4y2Ba在设计变量上定义一组下限和上限,gydF4y2BaxgydF4y2Ba,所以解总是在这个范围内gydF4y2Balb≤x≤ubgydF4y2Ba.放gydF4y2BaAeq = []gydF4y2Ba和gydF4y2Babeq = []gydF4y2Ba如果不存在平等。gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaIntcon.gydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba,gydF4y2BaAeqgydF4y2Ba,gydF4y2Ba贝卡gydF4y2Ba,gydF4y2Ba磅gydF4y2Ba,gydF4y2BaUB.gydF4y2Ba,gydF4y2BaX0.gydF4y2Ba)gydF4y2Ba使用初始可行点优化gydF4y2BaX0.gydF4y2Ba.放gydF4y2Ba磅= []gydF4y2Ba和gydF4y2Ba乌兰巴托= []gydF4y2Ba如果没有界限。gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaIntcon.gydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba,gydF4y2BaAeqgydF4y2Ba,gydF4y2Ba贝卡gydF4y2Ba,gydF4y2Ba磅gydF4y2Ba,gydF4y2BaUB.gydF4y2Ba,gydF4y2BaX0.gydF4y2Ba,gydF4y2Ba选项gydF4y2Ba)gydF4y2Ba使用指定的优化选项最小化gydF4y2Ba选项gydF4y2Ba.使用gydF4y2BaoptimoptionsgydF4y2Ba设置这些选项。放gydF4y2Bax0 = []gydF4y2Ba如果没有初始点。gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2Ba问题gydF4y2Ba)gydF4y2Ba使用一个gydF4y2Ba问题gydF4y2Ba结构来封装所有求解器输入。您可以导入gydF4y2Ba问题gydF4y2Ba使用MPS文件的结构gydF4y2Ba硕士gydF4y2Ba.您也可以创建一个gydF4y2Ba问题gydF4y2Ba来自A.的结构gydF4y2Ba优化问题gydF4y2Ba通过使用gydF4y2Baprob2struct.gydF4y2Ba.gydF4y2Ba

例子gydF4y2Ba

[gydF4y2BaxgydF4y2Ba,gydF4y2Bafval.gydF4y2Ba,gydF4y2BaexitflaggydF4y2Ba,gydF4y2Ba输出gydF4y2Ba] = intlinprog(gydF4y2Ba___gydF4y2Ba)gydF4y2Ba,对于上述任何输入参数,返回gydF4y2Bafval = f ' * xgydF4y2Ba,一个值gydF4y2BaexitflaggydF4y2Ba描述退出条件和结构gydF4y2Ba输出gydF4y2Ba包含优化过程的信息。gydF4y2Ba

例子gydF4y2Ba

全部收缩gydF4y2Ba

解决这个问题gydF4y2Ba

闵gydF4y2Ba xgydF4y2Ba 8gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba 年代gydF4y2Ba ugydF4y2Ba bgydF4y2Ba jgydF4y2Ba egydF4y2Ba cgydF4y2Ba tgydF4y2Ba tgydF4y2Ba ogydF4y2Ba {gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba 我gydF4y2Ba 年代gydF4y2Ba 一个gydF4y2Ba ngydF4y2Ba 我gydF4y2Ba ngydF4y2Ba tgydF4y2Ba egydF4y2Ba ggydF4y2Ba egydF4y2Ba rgydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≥gydF4y2Ba -gydF4y2Ba 1gydF4y2Ba 4gydF4y2Ba -gydF4y2Ba 4gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba -gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≤gydF4y2Ba -gydF4y2Ba 3.gydF4y2Ba 3.gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≤gydF4y2Ba 2gydF4y2Ba 0gydF4y2Ba .gydF4y2Ba

写出目标函数向量和整变量向量。gydF4y2Ba

f = [8; 1];INTCON = 2;gydF4y2Ba

把所有不等式转换成这种形式gydF4y2Baa * x <= bgydF4y2Ba用大于不等式乘以gydF4y2Ba-1gydF4y2Ba.gydF4y2Ba

a = [-1,-2;-4,-1;2,1];B = [14; -33; 20];gydF4y2Ba

称呼gydF4y2Baintlinprog.gydF4y2Ba.gydF4y2Ba

x = intlinprog(f,intcon,a,b)gydF4y2Ba
LP:最佳目标值为59.000000。找到最优解。intlinprog在根节点停止,因为客观值在最佳值的间隙容忍度范围内,Options.absolutegAppolerance = 0(默认值)。INTCON变量在容差,选项中是整数.inteGertolerance = 1E-05(默认值)。gydF4y2Ba
X =gydF4y2Ba2×1gydF4y2Ba6.5000 - 7.0000gydF4y2Ba

解决这个问题gydF4y2Ba

闵gydF4y2Ba xgydF4y2Ba (gydF4y2Ba -gydF4y2Ba 3.gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba -gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba -gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba ugydF4y2Ba bgydF4y2Ba jgydF4y2Ba egydF4y2Ba cgydF4y2Ba tgydF4y2Ba tgydF4y2Ba ogydF4y2Ba {gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba bgydF4y2Ba 我gydF4y2Ba ngydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba ygydF4y2Ba xgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≥gydF4y2Ba 0gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba ≤gydF4y2Ba 7gydF4y2Ba 4gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba .gydF4y2Ba

写出目标函数向量和整变量向量。gydF4y2Ba

f =[3、2、1);intcon = 3;gydF4y2Ba

写入线性不等式约束。gydF4y2Ba

一个= (1 1 1);B = 7;gydF4y2Ba

写出线性等式约束。gydF4y2Ba

Aeq =[4、2、1];说真的= 12;gydF4y2Ba

写下绑定的约束。gydF4y2Ba

磅= 0 (3,1);乌兰巴托=[正,正无穷;1];gydF4y2Ba%强制x(3)为二进制gydF4y2Ba

称呼gydF4y2Baintlinprog.gydF4y2Ba.gydF4y2Ba

x = intlinprog(f,intcon,a,b,aeq,beq,lb,Ub)gydF4y2Ba
LP:最佳目标值为- 1200万。找到最优解。intlinprog在根节点停止,因为客观值在最佳值的间隙容忍度范围内,Options.absolutegAppolerance = 0(默认值)。INTCON变量在容差,选项中是整数.inteGertolerance = 1E-05(默认值)。gydF4y2Ba
X =gydF4y2Ba3×1gydF4y2Ba0 5.5000 1.0000gydF4y2Ba

比较若干步骤次数,可以使用初始可行点解决整数编程问题。问题有八个变量,四个线性平等约束,并且所有可限制为正的变量。gydF4y2Ba

定义约束矩阵和向量的线性等式。gydF4y2Ba

Aeq = [22 13 26 33 21 3 14 26 39 16 22 28 26 30 23 24 18 14 29 27 30 38 26 26 41 26 28 36 18 38 16 26];Beq = [7872 10466 11322 12058];gydF4y2Ba

设置限制所有变量为非负的下界。gydF4y2Ba

n = 8;lb =零(n,1);gydF4y2Ba

指定所有变量都是整数值。gydF4y2Ba

Intcon = 1:n;gydF4y2Ba

设置目标函数矢量gydF4y2BafgydF4y2Ba.gydF4y2Ba

F = [2 10 13 17 7 5 7 3];gydF4y2Ba

在不使用初始点的情况下解决问题,并检查显示屏以查看分支和绑定节点的数量。gydF4y2Ba

[X1,FVAL1,EXITFLAG1,OUTPUT1] = INTLINPROG(F,INTCON,[],[],AEQ,BEQ,LB);gydF4y2Ba
LP:最佳目标值为1554.047531。切割世代:应用了8个强大的CG切割。下界是1591.000000。分支机构和绑定:节点总数NUM INT整数相对探索时间(S)解决方案FVAL间隙(%)10000 0.80 0  -   -  18027 1.31 1 2.906000E + 03 4.509804E + 01 21859 1.65 2. 2.073000E + 01 23546 1.783 1.854000E + 03 1.180593E + 01 24121 1.82 3 1.854000E + 03 1.563342C + 03 1.563342C + 00 24294 1.84 3 1.854000E + 03 0.000000E + 00优化解决方案。intlinprog由于客观值在最佳值的差距容忍范围内,Options.AbsolutegAppolerance = 0(默认值)。INTCON变量在容差,选项中是整数.inteGertolerance = 1E-05(默认值)。gydF4y2Ba

为了比较,使用初始可行点找到解决方案。gydF4y2Ba

x0 = [8 62 23 103 53 84 46 34];[X2,FVAL2,EXITFLAG2,OUTPUT2] = INTLINPROG(F,INTCON,[],[],AEQ,BEQ,LB,[],X0);gydF4y2Ba
LP:最佳目标值为1554.047531。切割世代:应用了8个强大的CG切割。下界是1591.000000。相对差距为59.20%。分支与界:节点总数int整数相对探索时间(s)解fval gap (%) 3627 0.43 2 2.154000e+03 2.593968e+01 5844 0.61 3 1.854000e+03 1.180593e+01 6204 0.64 3 1.854000e+03 1.455526e+00 6400 0.66 3 1.854000e+03 0.000000e+00已找到的最优解。intlinprog由于客观值在最佳值的差距容忍范围内,Options.AbsolutegAppolerance = 0(默认值)。INTCON变量在容差,选项中是整数.inteGertolerance = 1E-05(默认值)。gydF4y2Ba
  • 没有初始点,gydF4y2Baintlinprog.gydF4y2Ba花了大约30,000个分支和绑定的步骤。gydF4y2Ba

  • 使用初始点,gydF4y2Baintlinprog.gydF4y2Ba花了大约5,000步。gydF4y2Ba

给出初始点并不总是有帮助。对于此问题,给出初始点节省时间和计算步骤。但是,对于一些问题,给出初始点可能导致gydF4y2Baintlinprog.gydF4y2Ba采取更多步骤。gydF4y2Ba

解决这个问题gydF4y2Ba

闵gydF4y2Ba xgydF4y2Ba (gydF4y2Ba -gydF4y2Ba 3.gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba -gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba -gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba ugydF4y2Ba bgydF4y2Ba jgydF4y2Ba egydF4y2Ba cgydF4y2Ba tgydF4y2Ba tgydF4y2Ba ogydF4y2Ba {gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba bgydF4y2Ba 我gydF4y2Ba ngydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba ygydF4y2Ba xgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≥gydF4y2Ba 0gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba ≤gydF4y2Ba 7gydF4y2Ba 4gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba

不显示迭代显示。gydF4y2Ba

指定求解器输入。gydF4y2Ba

f =[3、2、1);intcon = 3;一个= (1 1 1);b = 7;Aeq =[4、2、1];说真的= 12;磅= 0 (3,1);乌兰巴托=[正,正无穷;1];gydF4y2Ba%强制x(3)是二进制gydF4y2Bax0 = [];gydF4y2Ba

指定不显示。gydF4y2Ba

选项= Optimoptions(gydF4y2Ba“intlinprog”gydF4y2Ba,gydF4y2Ba'展示'gydF4y2Ba,gydF4y2Ba'离开'gydF4y2Ba);gydF4y2Ba

运行求解器。gydF4y2Ba

x = intlinprog(f,intcon,a,b,aeq,beq,lb,Ub,x0,选项)gydF4y2Ba
X =gydF4y2Ba3×1gydF4y2Ba0 5.5000 1.0000gydF4y2Ba

此示例显示如何使用基于问题的方法设置问题,然后使用基于求解器的方法来解决它。问题是gydF4y2Ba

闵gydF4y2Ba xgydF4y2Ba (gydF4y2Ba -gydF4y2Ba 3.gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba -gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba -gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba ugydF4y2Ba bgydF4y2Ba jgydF4y2Ba egydF4y2Ba cgydF4y2Ba tgydF4y2Ba tgydF4y2Ba ogydF4y2Ba {gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba bgydF4y2Ba 我gydF4y2Ba ngydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba ygydF4y2Ba xgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≥gydF4y2Ba 0gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba ≤gydF4y2Ba 7gydF4y2Ba 4gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba

创建一个gydF4y2Ba优化问题gydF4y2Ba对象命名gydF4y2Ba概率gydF4y2Ba来表示这个问题。要指定二进制变量,需要创建一个整数类型的优化变量,下界为0,上界为1。gydF4y2Ba

x = Optimvar(gydF4y2Ba“x”gydF4y2Ba2,gydF4y2Ba下界的gydF4y2Ba,0);xb = Optimvar(gydF4y2Ba“xb”gydF4y2Ba,gydF4y2Ba下界的gydF4y2Ba0,gydF4y2Ba“UpperBound”gydF4y2Ba,1,gydF4y2Ba'类型'gydF4y2Ba,gydF4y2Ba'整数'gydF4y2Ba);prob = OptimProblem(gydF4y2Ba“目标”gydF4y2Ba,-3 * x(1)-2 * x(2)-xb);cons1 = sum(x)+ xb <= 7;CONS2 = 4 * x(1)+ 2 * x(2)+ XB == 12;prob.constraints.cons1 = cons1;prob.constraints.cons2 = cons2;gydF4y2Ba

将问题对象转换为问题结构。gydF4y2Ba

问题= prob2struct(prob);gydF4y2Ba

解决结果的问题结构。gydF4y2Ba

[SOL,FVAL,EXITFLAG,输出] = INTLINPROG(问题)gydF4y2Ba
LP:最佳目标值为- 1200万。找到最优解。intlinprog在根节点停止,因为客观值在最佳值的间隙容忍度范围内,Options.absolutegAppolerance = 0(默认值)。INTCON变量在容差,选项中是整数.inteGertolerance = 1E-05(默认值)。gydF4y2Ba
索尔=gydF4y2Ba3×1gydF4y2Ba0 5.5000 1.0000gydF4y2Ba
fval = -12gydF4y2Ba
EXITFLAG = 1gydF4y2Ba
输出=gydF4y2Ba结构体字段:gydF4y2Barelativegap: 0 absoltegap: 0 numfeaspoints: 1 numnodes: 0 construc违例:0 message: 'Optimal solution found....'gydF4y2Ba

两个都gydF4y2BaSol(1)gydF4y2Ba和gydF4y2BaSol(3)gydF4y2Babinary-valued。哪个值对应于二进制优化变量gydF4y2BaXB.gydF4y2Ba?gydF4y2Ba

概率。变量gydF4y2Ba
ans =gydF4y2Ba结构体字段:gydF4y2Bax: [2 x1 optim.problemdef。xb: [1x1 optim.problemdef.OptimizationVariable]gydF4y2Ba

变量gydF4y2BaXB.gydF4y2Ba出现在gydF4y2Ba变量gydF4y2Ba显示,所以gydF4y2BaXB.gydF4y2Ba对应于gydF4y2Basol(3)= 1gydF4y2Ba.看到gydF4y2Ba算法gydF4y2Ba.gydF4y2Ba

称呼gydF4y2Baintlinprog.gydF4y2Ba具有更多输出以查看解决方案详细信息和过程。gydF4y2Ba

目标是解决问题gydF4y2Ba

闵gydF4y2Ba xgydF4y2Ba (gydF4y2Ba -gydF4y2Ba 3.gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba -gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba -gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba ugydF4y2Ba bgydF4y2Ba jgydF4y2Ba egydF4y2Ba cgydF4y2Ba tgydF4y2Ba tgydF4y2Ba ogydF4y2Ba {gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba bgydF4y2Ba 我gydF4y2Ba ngydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba ygydF4y2Ba xgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≥gydF4y2Ba 0gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba ≤gydF4y2Ba 7gydF4y2Ba 4gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3.gydF4y2Ba =gydF4y2Ba 1gydF4y2Ba 2gydF4y2Ba .gydF4y2Ba

指定求解器输入。gydF4y2Ba

f =[3、2、1);intcon = 3;一个= (1 1 1);b = 7;Aeq =[4、2、1];说真的= 12;磅= 0 (3,1);乌兰巴托=[正,正无穷;1];gydF4y2Ba%强制x(3)是二进制gydF4y2Ba

称呼gydF4y2Baintlinprog.gydF4y2Ba所有输出。gydF4y2Ba

[x, fval exitflag、输出]= intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托)gydF4y2Ba
LP:最佳目标值为- 1200万。找到最优解。intlinprog在根节点停止,因为客观值在最佳值的间隙容忍度范围内,Options.absolutegAppolerance = 0(默认值)。INTCON变量在容差,选项中是整数.inteGertolerance = 1E-05(默认值)。gydF4y2Ba
X =gydF4y2Ba3×1gydF4y2Ba0 5.5000 1.0000gydF4y2Ba
fval = -12gydF4y2Ba
EXITFLAG = 1gydF4y2Ba
输出=gydF4y2Ba结构体字段:gydF4y2Barelativegap: 0 absoltegap: 0 numfeaspoints: 1 numnodes: 0 construc违例:0 message: 'Optimal solution found....'gydF4y2Ba

输出结构显示gydF4y2BanumnodesgydF4y2Ba是gydF4y2Ba0gydF4y2Ba.这意味着gydF4y2Baintlinprog.gydF4y2Ba在分支之前解决了问题。这是结果可靠的一个指示。此外,gydF4y2BaabsolutegapgydF4y2Ba和gydF4y2BarelativegapgydF4y2Ba字段是gydF4y2Ba0gydF4y2Ba.这是该结果可靠的另一个迹象。gydF4y2Ba

输入参数gydF4y2Ba

全部收缩gydF4y2Ba

系数矢量,指定为真实的矢量或真实数组。系数矢量表示目标函数gydF4y2Baf'* xgydF4y2Ba.符号假设gydF4y2BafgydF4y2Ba是一个列矢量,但你可以自由地使用行矢量或数组。在内部,gydF4y2Balinprog.gydF4y2Ba转换gydF4y2BafgydF4y2Ba到列向量gydF4y2Baf (:)gydF4y2Ba.gydF4y2Ba

如果您指定gydF4y2Baf = []gydF4y2Ba,gydF4y2Baintlinprog.gydF4y2Ba尝试找到一个可行的点而不尝试最小化目标函数。gydF4y2Ba

例子:gydF4y2Baf = [4; 2, -1.7);gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

整数约束矢量指定为正整数的向量。价值gydF4y2BaIntcon.gydF4y2Ba指示决策变量的组件gydF4y2BaxgydF4y2Ba这是整数值。gydF4y2BaIntcon.gydF4y2Ba有值gydF4y2Ba1gydF4y2Ba通过gydF4y2Banumel(f)gydF4y2Ba.gydF4y2Ba

Intcon.gydF4y2Ba也可以是一个数组。在内部,gydF4y2Baintlinprog.gydF4y2Ba将一个数组gydF4y2BaIntcon.gydF4y2Ba向量gydF4y2BaIntcon(:)gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Baintcon =(1、2、7)gydF4y2Ba方法gydF4y2Bax (1)gydF4y2Ba,gydF4y2Bax (2)gydF4y2Ba, 和gydF4y2Bax (7)gydF4y2Ba只取整数值。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

线性不等式约束矩阵,指定为双打矩阵。gydF4y2Ba一个gydF4y2Ba表示约束中的线性系数gydF4y2Ba* xgydF4y2Ba≤gydF4y2BabgydF4y2Ba.gydF4y2Ba一个gydF4y2Ba有大小gydF4y2Ba米gydF4y2Ba-经过-gydF4y2BaNgydF4y2Ba,在那里gydF4y2Ba米gydF4y2Ba是约束的数量和gydF4y2BaNgydF4y2Ba=gydF4y2Banumel(f)gydF4y2Ba.要保存内存,gydF4y2Ba一个gydF4y2Ba可以稀疏。gydF4y2Ba

例子:gydF4y2Baa = [4,3; 2,0; 4,-1];gydF4y2Ba为两个决策变量(两列)表示三个线性不等式(三行)。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

线性不等式约束矢量,指定为双打的矢量。gydF4y2BabgydF4y2Ba表示约束条件中的常量向量gydF4y2Ba* xgydF4y2Ba≤gydF4y2BabgydF4y2Ba.gydF4y2BabgydF4y2Ba有长度gydF4y2Ba米gydF4y2Ba,在那里gydF4y2Ba一个gydF4y2Ba是gydF4y2Ba米gydF4y2Ba-经过-gydF4y2BaNgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba[4,0]gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

线性平等约束矩阵,指定为双打矩阵。gydF4y2BaAeqgydF4y2Ba表示约束中的线性系数gydF4y2BaAEQ * X.gydF4y2Ba=gydF4y2Ba贝卡gydF4y2Ba.gydF4y2BaAeqgydF4y2Ba有大小gydF4y2BaMEQ.gydF4y2Ba-经过-gydF4y2BaNgydF4y2Ba,在那里gydF4y2BaMEQ.gydF4y2Ba是约束的数量和gydF4y2BaNgydF4y2Ba=gydF4y2Banumel(f)gydF4y2Ba.要保存内存,gydF4y2BaAeqgydF4y2Ba可以稀疏。gydF4y2Ba

例子:gydF4y2Baa = [4,3; 2,0; 4,-1];gydF4y2Ba为两个决策变量(两列)表示三个线性不等式(三行)。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

线性平等约束矢量,指定为双打的矢量。gydF4y2Ba贝卡gydF4y2Ba表示约束条件中的常量向量gydF4y2BaAEQ * X.gydF4y2Ba=gydF4y2Ba贝卡gydF4y2Ba.gydF4y2Ba贝卡gydF4y2Ba有长度gydF4y2BaMEQ.gydF4y2Ba,在那里gydF4y2BaAeqgydF4y2Ba是gydF4y2BaMEQ.gydF4y2Ba-经过-gydF4y2BaNgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba[4,0]gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

下限,指定为载体或双打数组。gydF4y2Ba磅gydF4y2Ba表示元素的下限gydF4y2Ba磅gydF4y2Ba≤gydF4y2BaxgydF4y2Ba≤gydF4y2BaUB.gydF4y2Ba.gydF4y2Ba

在内部,gydF4y2Baintlinprog.gydF4y2Ba将一个数组gydF4y2Ba磅gydF4y2Ba向量gydF4y2Ba磅(:)gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Balb = [0; -inf; 4]gydF4y2Ba方法gydF4y2Bax (1)≥0gydF4y2Ba,gydF4y2BaX(3)≥4gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

上限,指定为矢量或双打数组。gydF4y2BaUB.gydF4y2Ba表示元素的上限gydF4y2Ba磅gydF4y2Ba≤gydF4y2BaxgydF4y2Ba≤gydF4y2BaUB.gydF4y2Ba.gydF4y2Ba

在内部,gydF4y2Baintlinprog.gydF4y2Ba将一个数组gydF4y2BaUB.gydF4y2Ba向量gydF4y2Ba乌兰巴托(:)gydF4y2Ba.gydF4y2Ba

例子:gydF4y2BaUB = [INF; 4; 10]gydF4y2Ba方法gydF4y2Bax (2)≤4gydF4y2Ba,gydF4y2Bax (3)≤10gydF4y2Ba.gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

初始点,指定为真实数组。元素的数量gydF4y2BaX0.gydF4y2Ba与元素数量相同gydF4y2BafgydF4y2Ba, 什么时候gydF4y2BafgydF4y2Ba存在。否则,数字与列数相同gydF4y2Ba一个gydF4y2Ba要么gydF4y2BaAeqgydF4y2Ba.在内部,求解器转换数组gydF4y2BaX0.gydF4y2Ba成一个向量gydF4y2Bax0(:)gydF4y2Ba.gydF4y2Ba

提供gydF4y2BaX0.gydF4y2Ba可以改变时间量gydF4y2Baintlinprog.gydF4y2Ba需要收敛。这很难预测gydF4y2BaX0.gydF4y2Ba影响到解算器。征求使用得当的建议gydF4y2Ba启发式gydF4y2Ba与gydF4y2BaX0.gydF4y2Ba,请参阅gydF4y2Ba提示gydF4y2Ba.gydF4y2Ba

X0.gydF4y2Ba对于所有限制必须是可行的。如果gydF4y2BaX0.gydF4y2Ba不可行时,求解器出错。如果你没有一个可行的gydF4y2BaX0.gydF4y2Ba,设置gydF4y2Bax0 = []gydF4y2Ba.gydF4y2Ba

例子:gydF4y2Bax0 = 100 * rand(大小(f))gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

选择gydF4y2Baintlinprog.gydF4y2Ba的输出gydF4y2BaoptimoptionsgydF4y2Ba.gydF4y2Ba

控件中缺少一些选项gydF4y2BaoptimoptionsgydF4y2Ba展示。这些选项在下表中显示在斜体中。有关详细信息,请参阅gydF4y2Ba查看选项gydF4y2Ba.gydF4y2Ba

选项gydF4y2Ba 描述gydF4y2Ba 默认的gydF4y2Ba
absolutegaptolerance.gydF4y2Ba

负的真实。gydF4y2Baintlinprog.gydF4y2Ba如果内部计算的upper(gydF4y2BaUgydF4y2Ba)和更低(gydF4y2BalgydF4y2Ba目标函数的界限小于或等于gydF4y2Baabsolutegaptolerance.gydF4y2Ba:gydF4y2Ba

U - L <=绝对间隙公差gydF4y2Ba.gydF4y2Ba

0gydF4y2Ba
Branchrule.gydF4y2Ba

选择分支组件的规则:gydF4y2Ba

  • 'maxpscost'gydF4y2Ba- 具有最大Pseudocost的分数分量。看到gydF4y2Ba分支和绑定gydF4y2Ba.gydF4y2Ba

  • 'strondpscost'gydF4y2Ba- 具有最大Pseudocost的分数组成部分和比伪高的更准确估计gydF4y2Ba'maxpscost'gydF4y2Ba.看到gydF4y2Ba分支和绑定gydF4y2Ba.gydF4y2Ba

  • '可靠性'gydF4y2Ba- 具有最大Pseudocost的分数组件和比伪尺寸更准确的估计gydF4y2Ba'strondpscost'gydF4y2Ba.看到gydF4y2Ba分支和绑定gydF4y2Ba.gydF4y2Ba

  • '大多数人'gydF4y2Ba-小数部分最接近的成分gydF4y2Ba1/2gydF4y2Ba.gydF4y2Ba

  • 'maxfun'gydF4y2Ba- 具有最大对应组件的分数组件,在目标矢量的绝对值中gydF4y2BafgydF4y2Ba.gydF4y2Ba

'可靠性'gydF4y2Ba
ConstraintTolerancegydF4y2Ba 真实的gydF4y2Ba1E-9.gydF4y2Ba通过gydF4y2Ba1E-3gydF4y2Ba这是线性约束可以有且仍然被认为是满足的最大偏差。gydF4y2BaConstraintTolerancegydF4y2Ba不是一个停止的标准。gydF4y2Ba 1E-4gydF4y2Ba
切割gydF4y2Ba

切割世代的水平(见gydF4y2Ba减少代gydF4y2Ba):gydF4y2Ba

  • “没有”gydF4y2Ba- 没有削减。做gydF4y2BaCutMaxIterationsgydF4y2Ba无关紧要的。gydF4y2Ba

  • '基本的'gydF4y2Ba- 正常切割。gydF4y2Ba

  • “中间”gydF4y2Ba-使用更多的切割类型。gydF4y2Ba

  • “高级”gydF4y2Ba-使用大多数切割类型。gydF4y2Ba

'基本的'gydF4y2Ba
CutMaxIterationsgydF4y2Ba 通过所有切割生成方法的通过在进入分支和绑定阶段之前,从gydF4y2Ba1gydF4y2Ba通过gydF4y2Ba50.gydF4y2Ba.通过设置gydF4y2Ba切割gydF4y2Ba选择gydF4y2Ba“没有”gydF4y2Ba.gydF4y2Ba 10.gydF4y2Ba
展示gydF4y2Ba

显示水平(见gydF4y2Ba迭代显示gydF4y2Ba):gydF4y2Ba

  • '离开'gydF4y2Ba要么gydF4y2Ba“没有”gydF4y2Ba-没有迭代显示gydF4y2Ba

  • '最后'gydF4y2Ba-仅显示最终值gydF4y2Ba

  • “通路”gydF4y2Ba- 显示迭代显示gydF4y2Ba

“通路”gydF4y2Ba
启发式gydF4y2Ba

搜索可行点的算法(见gydF4y2Ba寻找可行解决方案的启发式方法金宝搏官方网站gydF4y2Ba):gydF4y2Ba

  • '基本的'gydF4y2Ba

  • “中间”gydF4y2Ba

  • “高级”gydF4y2Ba

  • 'RSS'gydF4y2Ba

  • 'rins'gydF4y2Ba

  • “圆”gydF4y2Ba

  • “潜水”gydF4y2Ba

  • 'RSS-DIVING'gydF4y2Ba

  • “rins-diving”gydF4y2Ba

  • '圆潜水'gydF4y2Ba

  • “没有”gydF4y2Ba

'基本的'gydF4y2Ba
heuristicsmaxnodes.gydF4y2Ba 严格的正整数绑定节点的数量gydF4y2Baintlinprog.gydF4y2Ba可以在其分支定界中探索寻找可行点。仅适用于gydF4y2Ba'RSS'gydF4y2Ba和gydF4y2Ba'rins'gydF4y2Ba.看到gydF4y2Ba寻找可行解决方案的启发式方法金宝搏官方网站gydF4y2Ba.gydF4y2Ba 50.gydF4y2Ba
integerpreprocess.gydF4y2Ba

整数预处理的类型(见gydF4y2Ba混合整数规划预处理gydF4y2Ba):gydF4y2Ba

  • “没有”gydF4y2Ba-使用很少的整数预处理步骤。gydF4y2Ba

  • '基本的'gydF4y2Ba- 使用适度的整数预处理步骤。gydF4y2Ba

  • “高级”gydF4y2Ba- 使用所有可用的整数预处理步骤。gydF4y2Ba

'基本的'gydF4y2Ba
integertolerance.gydF4y2Ba 真实的gydF4y2Ba1E-6gydF4y2Ba通过gydF4y2Ba1E-3gydF4y2Ba,其中从整数偏差到解决方案的组件gydF4y2BaxgydF4y2Ba可以被认为是一个整数。gydF4y2Baintegertolerance.gydF4y2Ba不是一个停止的标准。gydF4y2Ba 1E-5gydF4y2Ba
LpMaxIterations.gydF4y2Ba 严格正整数,分支定界过程中每个节点的单纯形算法迭代的最大次数。gydF4y2Ba

MAX(3E4,10 *(NumberoFequalities + NumberofineQualities + Numberofvariables))gydF4y2Ba

在这个表达式中,gydF4y2BanumberOfEqualitiesgydF4y2Ba表示的行数gydF4y2BaAeqgydF4y2Ba,gydF4y2BaNumberofineQuality.gydF4y2Ba表示的行数gydF4y2Ba一个gydF4y2Ba, 和gydF4y2Banumberofvariables.gydF4y2Ba表示元素的个数gydF4y2BafgydF4y2Ba.gydF4y2Ba

lpoptimalandaltolerance.gydF4y2Ba 非负实不过成本必须超过gydF4y2Balpoptimalandaltolerance.gydF4y2Ba对于要采取的变量。gydF4y2Ba 1E-7gydF4y2Ba
LPPreprocessgydF4y2Ba

用于宽松线性程序的解决方案的预处理类型(参见gydF4y2Ba线性规划预处理gydF4y2Ba):gydF4y2Ba

  • “没有”gydF4y2Ba- 没有预处理。gydF4y2Ba

  • '基本的'gydF4y2Ba- 使用预处理。gydF4y2Ba

'基本的'gydF4y2Ba
maxNodes.gydF4y2Ba 严格的正整数是节点的最大数量gydF4y2Baintlinprog.gydF4y2Ba在其分支和束缚过程中探讨。gydF4y2Ba 1E7gydF4y2Ba
MaxFeasiblePointsgydF4y2Ba 严格的正整数。gydF4y2Baintlinprog.gydF4y2Ba如果找到就停止gydF4y2BaMaxFeasiblePointsgydF4y2Ba整数可行点。gydF4y2Ba INF.gydF4y2Ba
MaxTime.gydF4y2Ba 积极的真实,即最长时间的时间gydF4y2Baintlinprog.gydF4y2Ba运行。gydF4y2Ba 7200gydF4y2Ba
NodeSelectiongydF4y2Ba

选择接下来要研究的节点。gydF4y2Ba

  • 'simplebestproj'gydF4y2Ba-最佳投影。看到gydF4y2Ba分支和绑定gydF4y2Ba.gydF4y2Ba

  • 'minobj'gydF4y2Ba- 使用最小目标函数探索节点。gydF4y2Ba

  • 'mininfeas'gydF4y2Ba- 探索节点,其中整数潜入性最小。看到gydF4y2Ba分支和绑定gydF4y2Ba.gydF4y2Ba

'simplebestproj'gydF4y2Ba
ObjectiveCutoff.gydF4y2Ba 真实的比gydF4y2Ba-inf.gydF4y2Ba.在分支和绑定计算期间,gydF4y2Baintlinprog.gydF4y2Ba丢弃线性编程解决方案具有超出客观值的任何节点gydF4y2BaObjectiveCutoff.gydF4y2Ba.gydF4y2Ba INF.gydF4y2Ba
客导性管理资源管理技术gydF4y2Ba 负的真实。gydF4y2Baintlinprog.gydF4y2Ba只有当它定位到另一个目标函数值至少为的解时,才改变当前的可行解gydF4y2Ba客导性管理资源管理技术gydF4y2Ba降低:gydF4y2Ba(折叠 - FNEW)/(1 + |折叠|)>目标improvmentthresholdgydF4y2Ba.gydF4y2Ba 0gydF4y2Ba
outputfcn.gydF4y2Ba

在事件中调用优化函数的一个或多个功能。指定为gydF4y2Ba“savemilp金宝搏官方网站solutions”gydF4y2Ba,函数句柄或功能函数的单元格阵列。对于自定义输出函数,通过功能句柄。输出功能可以停止求解器。gydF4y2Ba

  • “savemilp金宝搏官方网站solutions”gydF4y2Ba集合中的整数可行点gydF4y2Ba新索尔gydF4y2Ba工作区中的矩阵,其中每个列是一个整数可行点。gydF4y2Ba

有关写入自定义输出功能的信息,请参阅gydF4y2Baintlinprog输出函数和绘图函数语法gydF4y2Ba.gydF4y2Ba

[]gydF4y2Ba
PlotFcngydF4y2Ba

绘制算法执行时的各种进度度量;从预定义的情节中选择或编写您自己的。通过gydF4y2Ba“optimplotmilp”gydF4y2Ba,函数句柄或功能函数的单元格阵列。对于自定义绘图功能,通过功能句柄。默认值为none(gydF4y2Ba[]gydF4y2Ba):gydF4y2Ba

  • “optimplotmilp”gydF4y2Ba在解决方案的客观值上绘制内部计算的上限和下限。gydF4y2Ba

有关编写自定义绘图函数的信息,请参见gydF4y2Baintlinprog输出函数和绘图函数语法gydF4y2Ba.gydF4y2Ba

[]gydF4y2Ba
一个相对的作用gydF4y2Ba

真实的gydF4y2Ba0gydF4y2Ba通过gydF4y2Ba1gydF4y2Ba.gydF4y2Baintlinprog.gydF4y2Ba如果内部计算的鞋面之间的相对差异(gydF4y2BaUgydF4y2Ba)和更低(gydF4y2BalgydF4y2Ba目标函数的界限小于或等于gydF4y2Ba一个相对的作用gydF4y2Ba:gydF4y2Ba

(U - L) / (abs(U) + 1) <=相对vegaptolerancegydF4y2Ba.gydF4y2Ba

intlinprog.gydF4y2Ba自动修改公差大gydF4y2BalgydF4y2Ba大小:gydF4y2Ba

公差=gydF4y2Bamin (1 / (1 + L | |), RelativeGapTolerance)gydF4y2Ba

笔记gydF4y2Ba

虽然你指定了gydF4y2Ba一个相对的作用gydF4y2Ba作为十进制数,迭代显示器和gydF4y2Baoutput.relativegap.gydF4y2Ba以百分比报告差距,这意味着100倍的测量相对差距。如果退出消息指向相对间隙,则此值是测量的相对间隙,而不是百分比。gydF4y2Ba

1E-4gydF4y2Ba
根本血管算法gydF4y2Ba

解决线性程序的算法:gydF4y2Ba

  • '双重simplex'gydF4y2Ba- 双单单算法gydF4y2Ba

  • “primal-simplex”gydF4y2Ba- Primal Simplex算法gydF4y2Ba

'双重simplex'gydF4y2Ba
RootLPMaxIterationsgydF4y2Ba 非负整数即单纯形算法的最大迭代次数来解决初始线性规划问题。gydF4y2Ba

MAX(3E4,10 *(NumberoFequalities + NumberofineQualities + Numberofvariables))gydF4y2Ba

在这个表达式中,gydF4y2BanumberOfEqualitiesgydF4y2Ba表示的行数gydF4y2BaAeqgydF4y2Ba,gydF4y2BaNumberofineQuality.gydF4y2Ba表示的行数gydF4y2Ba一个gydF4y2Ba, 和gydF4y2Banumberofvariables.gydF4y2Ba表示元素的个数gydF4y2BafgydF4y2Ba.gydF4y2Ba

例子:gydF4y2Ba选项= Optimoptions('intlinprog','maxtime',120)gydF4y2Ba

封装使用以下字段指定的输入和选项的结构。gydF4y2Ba

fgydF4y2Ba 矢量代表目标gydF4y2Baf'* xgydF4y2Ba(必需)gydF4y2Ba
Intcon.gydF4y2Ba 矢量指示采用整数值的变量(必填)gydF4y2Ba
Aineq.gydF4y2Ba 线性不等式约束下的矩阵gydF4y2BaAineq * xgydF4y2Ba≤gydF4y2BaBineq.gydF4y2Ba

Bineq.gydF4y2Ba

线性不等式约束中的向量gydF4y2BaAineq * xgydF4y2Ba≤gydF4y2BaBineq.gydF4y2Ba

AeqgydF4y2Ba

线性平等约束的矩阵gydF4y2Baaeq * x = beqgydF4y2Ba

贝卡gydF4y2Ba

线性平等约束的矢量gydF4y2Baaeq * x = beqgydF4y2Ba
磅gydF4y2Ba 下界向量gydF4y2Ba
UB.gydF4y2Ba 上限矢量gydF4y2Ba
X0.gydF4y2Ba 初始可行点gydF4y2Ba
解算器gydF4y2Ba “intlinprog”gydF4y2Ba(必需)gydF4y2Ba

选项gydF4y2Ba

使用创建的选项gydF4y2BaoptimoptionsgydF4y2Ba(必需)gydF4y2Ba

您必须至少在问题结构中指定这些字段。其他字段是可选的:gydF4y2Ba

  • fgydF4y2Ba

  • Intcon.gydF4y2Ba

  • 解算器gydF4y2Ba

  • 选项gydF4y2Ba

例子:gydF4y2Ba问题。f=[12,3.];
problem.intcon =(2、3);gydF4y2Ba
问题。选项=optimoptions(“intlinprog”);gydF4y2Ba
问题.aineq = [-3,-2,-1];gydF4y2Ba
问题.Bineq = -20;gydF4y2Ba
问题.lb = [-6.1,-1.2,7.3];gydF4y2Ba
问题.solver ='intlinprog';gydF4y2Ba

数据类型:gydF4y2Ba结构体gydF4y2Ba

输出参数gydF4y2Ba

全部收缩gydF4y2Ba

解决方案,作为最小化的载体返回gydF4y2Baf'* xgydF4y2Ba受所有界限,整数约束和线性约束。gydF4y2Ba

当一个问题不可行或无界时,gydF4y2BaxgydF4y2Ba是gydF4y2Ba[]gydF4y2Ba.gydF4y2Ba

作为标量值返回的客观值gydF4y2Baf'* xgydF4y2Ba在解决方案gydF4y2BaxgydF4y2Ba.gydF4y2Ba

当一个问题不可行或无界时,gydF4y2Bafval.gydF4y2Ba是gydF4y2Ba[]gydF4y2Ba.gydF4y2Ba

算法停止条件,返回作为识别算法停止的原因的整数。以下列出了值的值gydF4y2BaexitflaggydF4y2Ba和相应的原因gydF4y2Baintlinprog.gydF4y2Ba停了下来。gydF4y2Ba

3.gydF4y2Ba

该解决方案对于相对而是可行的gydF4y2BaConstraintTolerancegydF4y2Ba宽容,但就绝对宽容而言是行不通的。gydF4y2Ba

2gydF4y2Ba

intlinprog.gydF4y2Ba过早停止。找到整数的可行点。gydF4y2Ba

1gydF4y2Ba

intlinprog.gydF4y2Ba趋近于解gydF4y2BaxgydF4y2Ba.gydF4y2Ba

0gydF4y2Ba

intlinprog.gydF4y2Ba过早停止。找不到整数的可行点。gydF4y2Ba

-1gydF4y2Ba

intlinprog.gydF4y2Ba被输出函数或绘图函数停止。gydF4y2Ba

-2gydF4y2Ba

找不到可行的点。gydF4y2Ba

-3gydF4y2Ba

根LP问题无限制。gydF4y2Ba

-9gydF4y2Ba

求解器损失了可行性。gydF4y2Ba

退出消息可以提供关于原因的更详细信息gydF4y2Baintlinprog.gydF4y2Ba停止,如超过一个容忍。gydF4y2Ba

ExitFlags.gydF4y2Ba3.gydF4y2Ba和gydF4y2Ba-9gydF4y2Ba涉及具有很大侵犯性的金宝搏官方网站解决方案。这些通常由具有大条件数量的线性约束矩阵或具有大解决方案组件的问题。为了纠正这些问题,尝试缩放系数矩阵,消除冗余线性约束,或者在变量上给出更紧的边界。gydF4y2Ba

解决方案过程摘要,作为包含有关优化过程信息的结构。gydF4y2Ba

relativegapgydF4y2Ba

上(gydF4y2BaUgydF4y2Ba)和更低(gydF4y2BalgydF4y2Ba的目标函数的边界gydF4y2Baintlinprog.gydF4y2Ba在其分支定界算法中计算。gydF4y2Ba

相对= 100 *(U - L)/(ABS(U)+ 1)gydF4y2Ba

如果gydF4y2BaIntcon = []gydF4y2Ba,gydF4y2Ba相对= []gydF4y2Ba.gydF4y2Ba

笔记gydF4y2Ba

虽然你指定了gydF4y2Ba一个相对的作用gydF4y2Ba作为十进制数,迭代显示器和gydF4y2Baoutput.relativegap.gydF4y2Ba以百分比报告差距,这意味着100倍的测量相对差距。如果退出消息指向相对间隙,则此值是测量的相对间隙,而不是百分比。gydF4y2Ba

absolutegapgydF4y2Ba

目标函数的上界和下界之差gydF4y2Baintlinprog.gydF4y2Ba在其分支定界算法中计算。gydF4y2Ba

如果gydF4y2BaIntcon = []gydF4y2Ba,gydF4y2Baabsolutegap = []gydF4y2Ba.gydF4y2Ba

numfeaspointsgydF4y2Ba

已找到的整数可行点的数目。gydF4y2Ba

如果gydF4y2BaIntcon = []gydF4y2Ba,gydF4y2Banumfeaspoints = []gydF4y2Ba.此外,如果最初的休闲问题是不可行的,gydF4y2Banumfeaspoints = []gydF4y2Ba.gydF4y2Ba

numnodesgydF4y2Ba

分支和绑定算法中的节点数。如果在预处理或初始切割期间发现解决方案,gydF4y2Banumnodes = 0gydF4y2Ba.gydF4y2Ba

如果gydF4y2BaIntcon = []gydF4y2Ba,gydF4y2Banumnodes = []gydF4y2Ba.gydF4y2Ba

constrviolationgydF4y2Ba

违反违反限制的约束违规行为。gydF4y2Ba

CONSTRVIOLATION = MAX([0;常规(AEQ * X-BEQ,INF);(LB-X);(X-UB);(AI * X-BI)])gydF4y2Ba

消息gydF4y2Ba

退出消息。gydF4y2Ba

限制gydF4y2Ba

  • 通常,解决方案中的一些被认为是整数值的组件gydF4y2Bax (intCon)gydF4y2Ba不是精确的整数。gydF4y2Baintlinprog.gydF4y2Ba作为整数所有解决方案价值的IntemsgydF4y2Baintegertolerance.gydF4y2Ba整数。gydF4y2Ba

    为了让所有的整数都是整数,使用gydF4y2Ba圆形的gydF4y2Ba函数。gydF4y2Ba

    x(intcon)= round(x(intcon));gydF4y2Ba

    谨慎gydF4y2Ba

    四舍五入的解决方案金宝搏官方网站会导致解决方案变得不可行的。四舍五入后检查可行性:gydF4y2Ba

    最大(a * x  -  b)gydF4y2Ba%看,如果参赛作品不是太阳,所以有很小的不可行性gydF4y2Bamax(abs(aeq * x  -  beq))gydF4y2Ba%看条目是否足够零gydF4y2Ba马克斯(x -乌兰巴托)gydF4y2Ba%正数条目被违反界限gydF4y2Bamax(lb  -  x)gydF4y2Ba%正数条目被违反界限gydF4y2Ba
  • intlinprog.gydF4y2Ba当解决方案组件的绝对值超过时,不强制其为整数值吗gydF4y2Ba2.1E9gydF4y2Ba.当你的解决方案有这样的组件时,gydF4y2Baintlinprog.gydF4y2Ba警告你。如果收到此警告,请检查解,看看解中假定的整数值分量是否接近整数。gydF4y2Ba

  • intlinprog.gydF4y2Ba不允许问题的组件,例如系数gydF4y2BafgydF4y2Ba,gydF4y2Ba一个gydF4y2Ba, 要么gydF4y2BaUB.gydF4y2Ba,超过gydF4y2Ba1E25gydF4y2Ba按绝对价值。如果你想逃跑gydF4y2Baintlinprog.gydF4y2Ba有这样的问题,gydF4y2Baintlinprog.gydF4y2Ba发出错误。gydF4y2Ba

提示gydF4y2Ba

  • 要指定二进制变量,请将变量设置为整数gydF4y2BaIntcon.gydF4y2Ba,并给他们下限gydF4y2Ba0gydF4y2Ba的上界gydF4y2Ba1gydF4y2Ba.gydF4y2Ba

  • 通过指定稀疏线性约束矩阵来保存内存gydF4y2Ba一个gydF4y2Ba和gydF4y2BaAeqgydF4y2Ba.但是,您不能使用稀疏矩阵gydF4y2BabgydF4y2Ba和gydF4y2Ba贝卡gydF4y2Ba.gydF4y2Ba

  • 如果你包括一个gydF4y2BaX0.gydF4y2Ba争论,gydF4y2Baintlinprog.gydF4y2Ba使用该值gydF4y2Ba'rins'gydF4y2Ba引导潜水启发式,直到找到更好的整数可行点。所以当你提供gydF4y2BaX0.gydF4y2Ba,可以通过设置gydF4y2Ba'启发式'gydF4y2Ba选择gydF4y2Ba“rins-diving”gydF4y2Ba或者使用的另一个设置gydF4y2Ba'rins'gydF4y2Ba.gydF4y2Ba

  • 要为整数组件提供逻辑指标,这意味着二进制向量gydF4y2Ba1gydF4y2Ba表示整数,转换为gydF4y2BaIntcon.gydF4y2Ba形式使用gydF4y2Ba寻找gydF4y2Ba.例如,gydF4y2Ba

    logicalindices = [1,0,0,1,1,0,0];Intcon = find(logicalindices)gydF4y2Ba
    Intcon = 1 4 5gydF4y2Ba
  • intlinprog.gydF4y2Ba替换gydF4y2BabintproggydF4y2Ba.更新旧gydF4y2BabintproggydF4y2Ba代码来使用gydF4y2Baintlinprog.gydF4y2Ba,进行以下更改:gydF4y2Ba

    • 放gydF4y2BaIntcon.gydF4y2Ba到gydF4y2Ba1:numvars.gydF4y2Ba,在那里gydF4y2BanumVarsgydF4y2Ba是您问题的变量数。gydF4y2Ba

    • 放gydF4y2Ba磅gydF4y2Ba到gydF4y2Ba零(Numvars,1)gydF4y2Ba.gydF4y2Ba

    • 放gydF4y2BaUB.gydF4y2Ba到gydF4y2Ba的(numVars, 1)gydF4y2Ba.gydF4y2Ba

    • 更新任何相关选项。使用gydF4y2BaoptimoptionsgydF4y2Ba创建选项gydF4y2Baintlinprog.gydF4y2Ba.gydF4y2Ba

    • 把你的电话改成gydF4y2BabintproggydF4y2Ba如下:gydF4y2Ba

      [x,fval,ExitFlag,输出] = Bintprog(F,A,B,AEQ,BEQ,X0,选项)gydF4y2Ba将您的电话更改为:gydF4y2Ba[x, fval exitflag、输出]= intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托,x0,选项)gydF4y2Ba

选择功能gydF4y2Ba

应用程序gydF4y2Ba

的gydF4y2Ba优化gydF4y2BaLive Editor任务提供可视界面gydF4y2Baintlinprog.gydF4y2Ba.gydF4y2Ba

兼容性的考虑gydF4y2Ba

展开全部gydF4y2Ba

行为在R2019a中改变gydF4y2Ba

介绍了R2014agydF4y2Ba