主要内容gydF4y2Ba

intlinproggydF4y2Ba

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

描述gydF4y2Ba

混合整数线性规划求解器进行求解。gydF4y2Ba

找到指定的最小的问题gydF4y2Ba

最小值gydF4y2Ba xgydF4y2Ba fgydF4y2Ba TgydF4y2Ba xgydF4y2Ba 受gydF4y2Ba {gydF4y2Ba xgydF4y2Ba (gydF4y2Ba intcongydF4y2Ba )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,gydF4y2BaxgydF4y2Baintcon,gydF4y2BabgydF4y2Ba,gydF4y2Ba说真的gydF4y2Ba,gydF4y2Ba磅gydF4y2Ba,gydF4y2Ba乌兰巴托gydF4y2Ba向量,gydF4y2Ba一个gydF4y2Ba和gydF4y2BaAeqgydF4y2Ba矩阵。gydF4y2Ba

您可以指定gydF4y2BafgydF4y2Baintcon,gydF4y2Ba磅gydF4y2Ba,gydF4y2Ba乌兰巴托gydF4y2Ba向量或数组。看到gydF4y2Ba矩阵的参数gydF4y2Ba。gydF4y2Ba

请注意gydF4y2Ba

intlinproggydF4y2Ba仅适用于solver-based方法。两种优化方法的讨论,请参阅gydF4y2Ba首先选择具体问题具体分析或Solver-Based方法gydF4y2Ba。gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaintcongydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba)gydF4y2Ba解决了最小值gydF4y2Baf ' * xgydF4y2Ba这样的组件gydF4y2BaxgydF4y2Ba在gydF4y2BaintcongydF4y2Ba是整数,gydF4y2Ba* x≤bgydF4y2Ba。gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaintcongydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba,gydF4y2BaAeqgydF4y2Ba,gydF4y2Ba说真的gydF4y2Ba)gydF4y2Ba解决上面的问题而另外满足等式约束gydF4y2BaAeq * x =说真的gydF4y2Ba。集gydF4y2Ba一个= []gydF4y2Ba和gydF4y2Bab = []gydF4y2Ba如果不存在不平等。gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaintcongydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba,gydF4y2BaAeqgydF4y2Ba,gydF4y2Ba说真的gydF4y2Ba,gydF4y2Ba磅gydF4y2Ba,gydF4y2Ba乌兰巴托gydF4y2Ba)gydF4y2Ba定义了一组上下界限的设计变量,gydF4y2BaxgydF4y2Ba,这样的解决方案总是范围gydF4y2Ba磅≤x≤乌兰巴托gydF4y2Ba。集gydF4y2BaAeq = []gydF4y2Ba和gydF4y2Ba说真的= []gydF4y2Ba如果没有平等的存在。gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaintcongydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba,gydF4y2BaAeqgydF4y2Ba,gydF4y2Ba说真的gydF4y2Ba,gydF4y2Ba磅gydF4y2Ba,gydF4y2Ba乌兰巴托gydF4y2Ba,gydF4y2Bax0gydF4y2Ba)gydF4y2Ba优化使用一个初始可行点gydF4y2Bax0gydF4y2Ba。集gydF4y2Ba磅= []gydF4y2Ba和gydF4y2Ba乌兰巴托= []gydF4y2Ba如果不存在边界。gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2BafgydF4y2Ba,gydF4y2BaintcongydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,gydF4y2BabgydF4y2Ba,gydF4y2BaAeqgydF4y2Ba,gydF4y2Ba说真的gydF4y2Ba,gydF4y2Ba磅gydF4y2Ba,gydF4y2Ba乌兰巴托gydF4y2Ba,gydF4y2Bax0gydF4y2Ba,gydF4y2Ba选项gydF4y2Ba)gydF4y2Ba使用优化选项中指定最小化gydF4y2Ba选项gydF4y2Ba。使用gydF4y2BaoptimoptionsgydF4y2Ba设置这些选项。集gydF4y2Bax0 = []gydF4y2Ba如果不存在初始点。gydF4y2Ba

例子gydF4y2Ba

xgydF4y2Ba= intlinprog (gydF4y2Ba问题gydF4y2Ba)gydF4y2Ba使用一个gydF4y2Ba问题gydF4y2Ba结构来封装所有解算器输入。您可以导入一个gydF4y2Ba问题gydF4y2Ba结构从一个议员文件使用gydF4y2BampsreadgydF4y2Ba。您还可以创建一个gydF4y2Ba问题gydF4y2Ba结构的gydF4y2BaOptimizationProblemgydF4y2Ba对象的使用gydF4y2Baprob2structgydF4y2Ba。gydF4y2Ba

例子gydF4y2Ba

(gydF4y2BaxgydF4y2Ba,gydF4y2BafvalgydF4y2Ba,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 3gydF4y2Ba 3gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≤gydF4y2Ba 2gydF4y2Ba 0gydF4y2Ba 。gydF4y2Ba

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

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

所有不等式转化为表单gydF4y2BaA * x < =gydF4y2Ba乘以“大于”的不平等gydF4y2Ba1gydF4y2Ba。gydF4y2Ba

一个= [1、2;4、1;2、1];b = [14; -33; 20];gydF4y2Ba

调用gydF4y2BaintlinproggydF4y2Ba。gydF4y2Ba

x = intlinprog (f, intcon, A, b)gydF4y2Ba
LP:最优的客观价值是59.000000。找到最优解。Intlinprog停在根节点,因为客观价值差距公差内的最优值,选择。AbsoluteGapTolerance = 0。在宽容intcon变量是整数,选项。IntegerTolerance = 1 e-05。gydF4y2Ba
x =gydF4y2Ba2×1gydF4y2Ba6.5000 - 7.0000gydF4y2Ba

解决这个问题gydF4y2Ba

最小值gydF4y2Ba xgydF4y2Ba (gydF4y2Ba - - - - - -gydF4y2Ba 3gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba - - - - - -gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba - - - - - -gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba ugydF4y2Ba bgydF4y2Ba jgydF4y2Ba egydF4y2Ba cgydF4y2Ba tgydF4y2Ba tgydF4y2Ba ogydF4y2Ba {gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba bgydF4y2Ba 我gydF4y2Ba ngydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba ygydF4y2Ba xgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≥gydF4y2Ba 0gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba ≤gydF4y2Ba 7gydF4y2Ba 4gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba =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

调用gydF4y2BaintlinproggydF4y2Ba。gydF4y2Ba

x = intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托)gydF4y2Ba
LP:最优的客观价值是-12.000000。找到最优解。Intlinprog停在根节点,因为客观价值差距公差内的最优值,选择。AbsoluteGapTolerance = 0。在宽容intcon变量是整数,选项。IntegerTolerance = 1 e-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 38 16 18 - 26岁);说真的= (7872 10466 11322 12058);gydF4y2Ba

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

N = 8;1磅= 0 (N);gydF4y2Ba

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

intcon = 1: N;gydF4y2Ba

设置目标函数向量gydF4y2BafgydF4y2Ba。gydF4y2Ba

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

解决这个问题不使用一个初始点,检查显示和节点的数量。gydF4y2Ba

(x1, fval1, exitflag1 output1] = intlinprog (f intcon [] [], Aeq,说真的,磅);gydF4y2Ba
LP:最优的客观价值是1554.047531。减少生成:应用8强CG削减。下界是1591.000000。分支界限法:节点总num int整数相对探索时间(s)解决方案fval差距(%)1 10000 0 - 0.92 - 14739 1.27 2.154000 2.593968 e + e + 03 01 18258 1.59 1.854000 1.180593 e + e + 03 01 18673 1.62 1.854000 1.563342 e + e + 03 00 18829 1.64 1.854000 0.000000 e + e + 03 00找到最优解。Intlinprog停止因为客观价值差距公差内的最优值,选择。AbsoluteGapTolerance = 0。在宽容intcon变量是整数,选项。IntegerTolerance = 1 e-05。gydF4y2Ba

相比之下,找到解决方案使用一个初始可行点。gydF4y2Ba

x0 = [8 62 23 103 53 84 46 34);(x2, fval2 exitflag2 output2] = intlinprog (f intcon [] [], Aeq,说真的,磅,[],x0);gydF4y2Ba
LP:最优的客观价值是1554.047531。减少生成:应用8强CG削减。下界是1591.000000。相对差距是59.20%。分支界限法:节点总num int整数相对探索时间(s)解决方案fval差距(%)3627 0.45 2.154000 2.593968 e + e + 03 01 5844 0.64 1.854000 1.180593 e + e + 03 01 6204 0.68 1.854000 1.455526 e + e + 03 00 6400 0.69 1.854000 0.000000 e + e + 03 00找到最优解。Intlinprog停止因为客观价值差距公差内的最优值,选择。AbsoluteGapTolerance = 0。在宽容intcon变量是整数,选项。IntegerTolerance = 1 e-05。gydF4y2Ba
  • 没有一个初始点,gydF4y2BaintlinproggydF4y2Ba花了30000和步骤。gydF4y2Ba

  • 使用一个初始点,gydF4y2BaintlinproggydF4y2Ba花了5000步。gydF4y2Ba

给一个初始点并不总是有帮助的。对于这个问题,给出一个初始点节省时间和计算步骤。然而,对于一些问题,会给一个初始点gydF4y2BaintlinproggydF4y2Ba采取更多的步骤。gydF4y2Ba

解决这个问题gydF4y2Ba

最小值gydF4y2Ba xgydF4y2Ba (gydF4y2Ba - - - - - -gydF4y2Ba 3gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba - - - - - -gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba - - - - - -gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba ugydF4y2Ba bgydF4y2Ba jgydF4y2Ba egydF4y2Ba cgydF4y2Ba tgydF4y2Ba tgydF4y2Ba ogydF4y2Ba {gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba bgydF4y2Ba 我gydF4y2Ba ngydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba ygydF4y2Ba xgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≥gydF4y2Ba 0gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba ≤gydF4y2Ba 7gydF4y2Ba 4gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba =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,说真的,磅,乌兰巴托,x0,选项)gydF4y2Ba
x =gydF4y2Ba3×1gydF4y2Ba0 5.5000 1.0000gydF4y2Ba

这个例子展示了如何设置一个问题通过具体问题具体分析的方法,然后使用solver-based方法解决它。现在的问题是gydF4y2Ba

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

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

x = optimvar (gydF4y2Ba“x”gydF4y2Ba2,gydF4y2Ba下界的gydF4y2Ba,0);xb = optimvar (gydF4y2Ba“xb”gydF4y2Ba,gydF4y2Ba下界的gydF4y2Ba0,gydF4y2Ba“UpperBound”gydF4y2Ba,1gydF4y2Ba“类型”gydF4y2Ba,gydF4y2Ba“整数”gydF4y2Ba);概率= optimproblem (gydF4y2Ba“目标”gydF4y2Ba3 * x (1) 2 * (2) xb);cons1 = (x) + xb和< = 7;cons2 = 4 * x (1) + 2 * (2) + xb = = 12;prob.Constraints。cons1 = cons1;prob.Constraints。cons2 = cons2;gydF4y2Ba

转换对象问题结构的问题。gydF4y2Ba

问题= prob2struct(概率);gydF4y2Ba

解决由此产生的问题结构。gydF4y2Ba

[溶胶,fval exitflag、输出]= intlinprog(问题)gydF4y2Ba
LP:最优的客观价值是-12.000000。找到最优解。Intlinprog停在根节点,因为客观价值差距公差内的最优值,选择。AbsoluteGapTolerance = 0。在宽容intcon变量是整数,选项。IntegerTolerance = 1 e-05。gydF4y2Ba
索尔=gydF4y2Ba3×1gydF4y2Ba0 5.5000 1.0000gydF4y2Ba
fval = -12gydF4y2Ba
exitflag = 1gydF4y2Ba
输出=gydF4y2Ba结构体字段:gydF4y2Barelativegap: 0 absolutegap: 0 numfeaspoints: 1 numnodes: 0 constrviolation: 0消息:“最优解发现....”gydF4y2Ba

这两个gydF4y2Ba索尔(1)gydF4y2Ba和gydF4y2Ba索尔(3)gydF4y2Babinary-valued。值对应于二进制优化变量gydF4y2BaxbgydF4y2Ba吗?gydF4y2Ba

prob.VariablesgydF4y2Ba
ans =gydF4y2Ba结构体字段:gydF4y2Bax: [2 x1 optim.problemdef。OptimizationVariable] xb: [1 x1 optim.problemdef.OptimizationVariable]gydF4y2Ba

的变量gydF4y2BaxbgydF4y2Ba最后一次出现在gydF4y2Ba变量gydF4y2Ba显示,所以gydF4y2BaxbgydF4y2Ba对应于gydF4y2Ba索尔(3)= 1gydF4y2Ba。看到gydF4y2Ba算法gydF4y2Ba。gydF4y2Ba

调用gydF4y2BaintlinproggydF4y2Ba有更多的输出解决方案细节和过程。gydF4y2Ba

我们的目标是解决问题gydF4y2Ba

最小值gydF4y2Ba xgydF4y2Ba (gydF4y2Ba - - - - - -gydF4y2Ba 3gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba - - - - - -gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba - - - - - -gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba )gydF4y2Ba 年代gydF4y2Ba ugydF4y2Ba bgydF4y2Ba jgydF4y2Ba egydF4y2Ba cgydF4y2Ba tgydF4y2Ba tgydF4y2Ba ogydF4y2Ba {gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba bgydF4y2Ba 我gydF4y2Ba ngydF4y2Ba 一个gydF4y2Ba rgydF4y2Ba ygydF4y2Ba xgydF4y2Ba 1gydF4y2Ba ,gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba ≥gydF4y2Ba 0gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba ≤gydF4y2Ba 7gydF4y2Ba 4gydF4y2Ba xgydF4y2Ba 1gydF4y2Ba +gydF4y2Ba 2gydF4y2Ba xgydF4y2Ba 2gydF4y2Ba +gydF4y2Ba xgydF4y2Ba 3gydF4y2Ba =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

调用gydF4y2BaintlinproggydF4y2Ba与所有输出。gydF4y2Ba

[x, fval exitflag、输出]= intlinprog (f intcon A、b Aeq,说真的,磅,乌兰巴托)gydF4y2Ba
LP:最优的客观价值是-12.000000。找到最优解。Intlinprog停在根节点,因为客观价值差距公差内的最优值,选择。AbsoluteGapTolerance = 0。在宽容intcon变量是整数,选项。IntegerTolerance = 1 e-05。gydF4y2Ba
x =gydF4y2Ba3×1gydF4y2Ba0 5.5000 1.0000gydF4y2Ba
fval = -12gydF4y2Ba
exitflag = 1gydF4y2Ba
输出=gydF4y2Ba结构体字段:gydF4y2Barelativegap: 0 absolutegap: 0 numfeaspoints: 1 numnodes: 0 constrviolation: 0消息:“最优解发现....”gydF4y2Ba

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

输入参数gydF4y2Ba

全部折叠gydF4y2Ba

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

如果您指定gydF4y2Baf = []gydF4y2Ba,gydF4y2BaintlinproggydF4y2Ba试图找到一个可行的点没有试图最小化目标函数。gydF4y2Ba

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

数据类型:gydF4y2Ba双gydF4y2Ba

指定的整数约束,向量向量的正整数。中的值gydF4y2BaintcongydF4y2Ba表示决策变量的组件gydF4y2BaxgydF4y2Ba整数值。gydF4y2BaintcongydF4y2Ba有值gydF4y2Ba1gydF4y2Ba通过gydF4y2Ba元素个数(f)gydF4y2Ba。gydF4y2Ba

intcongydF4y2Ba也可以一个数组。在内部,gydF4y2BaintlinproggydF4y2Ba将一个数组gydF4y2BaintcongydF4y2Ba的向量gydF4y2Baintcon (:)gydF4y2Ba。gydF4y2Ba

例子:gydF4y2Baintcon = (1、2、7)gydF4y2Ba意味着gydF4y2Bax (1)gydF4y2Ba,gydF4y2Bax (2)gydF4y2Ba,gydF4y2Bax (7)gydF4y2Ba只需要整数值。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

线性不等式约束,指定为一个真正的矩阵。gydF4y2Ba一个gydF4y2Ba是一个gydF4y2Ba米gydF4y2Ba——- - - - - -gydF4y2BaNgydF4y2Ba矩阵,gydF4y2Ba米gydF4y2Ba不平等的数量,gydF4y2BaNgydF4y2Ba是变量的数量(长度gydF4y2BafgydF4y2Ba)。对于大型问题,通过gydF4y2Ba一个gydF4y2Ba作为一个稀疏矩阵。gydF4y2Ba

一个gydF4y2Ba编码gydF4y2Ba米gydF4y2Ba线性不等式gydF4y2Ba

A * x < =gydF4y2Ba,gydF4y2Ba

在哪里gydF4y2BaxgydF4y2Ba的列向量gydF4y2BaNgydF4y2Ba变量gydF4y2Bax (:)gydF4y2Ba,gydF4y2BabgydF4y2Ba是一个列向量gydF4y2Ba米gydF4y2Ba元素。gydF4y2Ba

例如,考虑这些不平等:gydF4y2Ba

xgydF4y2Ba1gydF4y2Ba+ 2gydF4y2BaxgydF4y2Ba2gydF4y2Ba≤10gydF4y2Ba
3gydF4y2BaxgydF4y2Ba1gydF4y2Ba+ 4gydF4y2BaxgydF4y2Ba2gydF4y2Ba≤20gydF4y2Ba
5gydF4y2BaxgydF4y2Ba1gydF4y2Ba+ 6gydF4y2BaxgydF4y2Ba2gydF4y2Ba≤30。gydF4y2Ba

输入以下命令来指定不等式约束条件。gydF4y2Ba

= [1,2,3,4,5,6);b = (10、20、30);gydF4y2Ba

例子:gydF4y2Ba指定的x分量加起来1或更少,gydF4y2Ba一个= 1 (1,N)gydF4y2Ba和gydF4y2Bab = 1gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

线性不等式约束,指定为一个真正的向量。gydF4y2BabgydF4y2Ba是一个gydF4y2Ba米gydF4y2Ba元向量相关gydF4y2Ba一个gydF4y2Ba矩阵。如果你通过gydF4y2BabgydF4y2Ba作为一个行向量,解决内部转换gydF4y2BabgydF4y2Ba的列向量gydF4y2Bab (:)gydF4y2Ba。对于大型问题,通过gydF4y2BabgydF4y2Ba作为一个稀疏的向量。gydF4y2Ba

bgydF4y2Ba编码gydF4y2Ba米gydF4y2Ba线性不等式gydF4y2Ba

A * x < =gydF4y2Ba,gydF4y2Ba

在哪里gydF4y2BaxgydF4y2Ba的列向量gydF4y2BaNgydF4y2Ba变量gydF4y2Bax (:)gydF4y2Ba,gydF4y2Ba一个gydF4y2Ba是一个矩阵的大小gydF4y2Ba米gydF4y2Ba——- - - - - -gydF4y2BaNgydF4y2Ba。gydF4y2Ba

例如,考虑这些不平等:gydF4y2Ba

xgydF4y2Ba1gydF4y2Ba+ 2gydF4y2BaxgydF4y2Ba2gydF4y2Ba≤10gydF4y2Ba
3gydF4y2BaxgydF4y2Ba1gydF4y2Ba+ 4gydF4y2BaxgydF4y2Ba2gydF4y2Ba≤20gydF4y2Ba
5gydF4y2BaxgydF4y2Ba1gydF4y2Ba+ 6gydF4y2BaxgydF4y2Ba2gydF4y2Ba≤30。gydF4y2Ba

输入以下命令来指定不等式约束条件。gydF4y2Ba

= [1,2,3,4,5,6);b = (10、20、30);gydF4y2Ba

例子:gydF4y2Ba指定的x分量总和为1或更少,使用gydF4y2Ba一个= 1 (1,N)gydF4y2Ba和gydF4y2Bab = 1gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

线性等式约束,指定为一个真正的矩阵。gydF4y2BaAeqgydF4y2Ba是一个gydF4y2Ba我gydF4y2Ba——- - - - - -gydF4y2BaNgydF4y2Ba矩阵,gydF4y2Ba我gydF4y2Ba是平等的,gydF4y2BaNgydF4y2Ba是变量的数量(长度gydF4y2BafgydF4y2Ba)。对于大型问题,通过gydF4y2BaAeqgydF4y2Ba作为一个稀疏矩阵。gydF4y2Ba

AeqgydF4y2Ba编码gydF4y2Ba我gydF4y2Ba线性等式gydF4y2Ba

Aeq * x =说真的gydF4y2Ba,gydF4y2Ba

在哪里gydF4y2BaxgydF4y2Ba的列向量gydF4y2BaNgydF4y2Ba变量gydF4y2Bax (:)gydF4y2Ba,gydF4y2Ba说真的gydF4y2Ba是一个列向量gydF4y2Ba我gydF4y2Ba元素。gydF4y2Ba

例如,考虑这些等式:gydF4y2Ba

xgydF4y2Ba1gydF4y2Ba+ 2gydF4y2BaxgydF4y2Ba2gydF4y2Ba+ 3gydF4y2BaxgydF4y2Ba3gydF4y2Ba= 10gydF4y2Ba
2gydF4y2BaxgydF4y2Ba1gydF4y2Ba+ 4gydF4y2BaxgydF4y2Ba2gydF4y2Ba+gydF4y2BaxgydF4y2Ba3gydF4y2Ba= 20。gydF4y2Ba

输入以下命令来指定等式约束。gydF4y2Ba

Aeq = [1、2、3、2、4、1];说真的= (10、20);gydF4y2Ba

例子:gydF4y2Ba指定x分量之和为1,gydF4y2BaAeq = 1 (1, N)gydF4y2Ba和gydF4y2Ba说真的= 1gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

线性等式约束,指定为一个真正的向量。gydF4y2Ba说真的gydF4y2Ba是一个gydF4y2Ba我gydF4y2Ba元向量相关gydF4y2BaAeqgydF4y2Ba矩阵。如果你通过gydF4y2Ba说真的gydF4y2Ba作为一个行向量,解决内部转换gydF4y2Ba说真的gydF4y2Ba的列向量gydF4y2Ba说真的(:)gydF4y2Ba。对于大型问题,通过gydF4y2Ba说真的gydF4y2Ba作为一个稀疏的向量。gydF4y2Ba

说真的gydF4y2Ba编码gydF4y2Ba我gydF4y2Ba线性等式gydF4y2Ba

Aeq * x =说真的gydF4y2Ba,gydF4y2Ba

在哪里gydF4y2BaxgydF4y2Ba的列向量gydF4y2BaNgydF4y2Ba变量gydF4y2Bax (:)gydF4y2Ba,gydF4y2BaAeqgydF4y2Ba是一个矩阵的大小gydF4y2Ba我gydF4y2Ba——- - - - - -gydF4y2BaNgydF4y2Ba。gydF4y2Ba

例如,考虑这些等式:gydF4y2Ba

xgydF4y2Ba1gydF4y2Ba+ 2gydF4y2BaxgydF4y2Ba2gydF4y2Ba+ 3gydF4y2BaxgydF4y2Ba3gydF4y2Ba= 10gydF4y2Ba
2gydF4y2BaxgydF4y2Ba1gydF4y2Ba+ 4gydF4y2BaxgydF4y2Ba2gydF4y2Ba+gydF4y2BaxgydF4y2Ba3gydF4y2Ba= 20。gydF4y2Ba

输入以下命令来指定等式约束。gydF4y2Ba

Aeq = [1、2、3、2、4、1];说真的= (10、20);gydF4y2Ba

例子:gydF4y2Ba指定的x分量之和为1,使用gydF4y2BaAeq = 1 (1, N)gydF4y2Ba和gydF4y2Ba说真的= 1gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

下界,指定为一个向量或双打的数组。gydF4y2Ba磅gydF4y2Ba代表了下界elementwisegydF4y2Ba磅gydF4y2Ba≤gydF4y2BaxgydF4y2Ba≤gydF4y2Ba乌兰巴托gydF4y2Ba。gydF4y2Ba

在内部,gydF4y2BaintlinproggydF4y2Ba将一个数组gydF4y2Ba磅gydF4y2Ba的向量gydF4y2Ba磅(:)gydF4y2Ba。gydF4y2Ba

例子:gydF4y2Ba磅=[0;无穷;4)gydF4y2Ba意味着gydF4y2Bax (1)≥0gydF4y2Ba,gydF4y2Bax (3)≥4gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

上界,指定为一个向量或双打的数组。gydF4y2Ba乌兰巴托gydF4y2Ba代表了上界elementwisegydF4y2Ba磅gydF4y2Ba≤gydF4y2BaxgydF4y2Ba≤gydF4y2Ba乌兰巴托gydF4y2Ba。gydF4y2Ba

在内部,gydF4y2BaintlinproggydF4y2Ba将一个数组gydF4y2Ba乌兰巴托gydF4y2Ba的向量gydF4y2Ba乌兰巴托(:)gydF4y2Ba。gydF4y2Ba

例子:gydF4y2Ba乌兰巴托= (Inf; 4; 10)gydF4y2Ba意味着gydF4y2Bax (2)≤4gydF4y2Ba,gydF4y2Bax (3)≤10gydF4y2Ba。gydF4y2Ba

数据类型:gydF4y2Ba双gydF4y2Ba

初始点,指定为一个真正的数组。元素的数量gydF4y2Bax0gydF4y2Ba元素的数量是一样的吗gydF4y2BafgydF4y2Ba,当gydF4y2BafgydF4y2Ba的存在。否则,数量是一样的列的数量gydF4y2Ba一个gydF4y2Ba或gydF4y2BaAeqgydF4y2Ba。在内部,解算器转换一个数组gydF4y2Bax0gydF4y2Ba成一个向量gydF4y2Bax0 (:)gydF4y2Ba。gydF4y2Ba

提供gydF4y2Bax0gydF4y2Ba能改变的时间gydF4y2BaintlinproggydF4y2Ba需要收敛。很难预测gydF4y2Bax0gydF4y2Ba影响到解算器。使用适当的建议gydF4y2Ba启发式gydF4y2Ba与gydF4y2Bax0gydF4y2Ba,请参阅gydF4y2Ba提示gydF4y2Ba。gydF4y2Ba

x0gydF4y2Ba必须与尊重所有可行的约束。如果gydF4y2Bax0gydF4y2Ba不可行,解决错误。如果你没有一个可行的gydF4y2Bax0gydF4y2Ba,设置gydF4y2Bax0 = []gydF4y2Ba。gydF4y2Ba

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

数据类型:gydF4y2Ba双gydF4y2Ba

选项gydF4y2BaintlinproggydF4y2Ba指定的输出gydF4y2BaoptimoptionsgydF4y2Ba。gydF4y2Ba

有些选项是缺席的gydF4y2BaoptimoptionsgydF4y2Ba显示。这些选项出现在以下表中斜体。有关详细信息,请参见gydF4y2Ba视图的优化选择gydF4y2Ba。gydF4y2Ba

选项gydF4y2Ba 描述gydF4y2Ba 默认的gydF4y2Ba
AbsoluteGapTolerancegydF4y2Ba

负的真实。gydF4y2BaintlinproggydF4y2Ba停止如果内部计算上的区别(gydF4y2BaUgydF4y2Ba)和低(gydF4y2BalgydF4y2Ba)范围小于或等于目标函数gydF4y2BaAbsoluteGapTolerancegydF4y2Ba:gydF4y2Ba

U - L < = AbsoluteGapTolerancegydF4y2Ba。gydF4y2Ba

0gydF4y2Ba
BranchRulegydF4y2Ba

规则选择的组件的分支:gydF4y2Ba

  • “maxpscost”gydF4y2Ba——与最大pseudocost部分组件。看到gydF4y2Ba分支界限法gydF4y2Ba。gydF4y2Ba

  • “strongpscost”gydF4y2Ba——部分组件最大pseudocost pseudocost比和更准确的估计gydF4y2Ba“maxpscost”gydF4y2Ba。看到gydF4y2Ba分支界限法gydF4y2Ba。gydF4y2Ba

  • “可靠性”gydF4y2Ba——部分组件和最大pseudocost pseudocost比的一个更准确的估计gydF4y2Ba“strongpscost”gydF4y2Ba。看到gydF4y2Ba分支界限法gydF4y2Ba。gydF4y2Ba

  • “mostfractional”gydF4y2Ba——小数部分是最接近的组件gydF4y2Ba1/2gydF4y2Ba。gydF4y2Ba

  • “maxfun”gydF4y2Ba——最大的部分组件对应的组件在目标向量的绝对值gydF4y2BafgydF4y2Ba。gydF4y2Ba

“可靠性”gydF4y2Ba
ConstraintTolerancegydF4y2Ba 真正的从gydF4y2Ba1 e-9gydF4y2Ba通过gydF4y2Ba1 e - 3gydF4y2Ba这是线性约束的最大差异,还能被认为是满意的。gydF4y2BaConstraintTolerancegydF4y2Ba不是停止准则。gydF4y2Ba 1的军医gydF4y2Ba
CutGenerationgydF4y2Ba

水平的一代(见减少gydF4y2Ba减少代gydF4y2Ba):gydF4y2Ba

  • “没有”gydF4y2Ba——没有削减。使gydF4y2BaCutMaxIterationsgydF4y2Ba无关紧要的。gydF4y2Ba

  • “基本”gydF4y2Ba——正常切割的一代。gydF4y2Ba

  • “中间”gydF4y2Ba——使用更多的类型。gydF4y2Ba

  • “高级”gydF4y2Ba——使用最切类型。gydF4y2Ba

“基本”gydF4y2Ba
CutMaxIterationsgydF4y2Ba 之前都经过数代的方法进入和阶段,一个整数gydF4y2Ba1gydF4y2Ba通过gydF4y2Ba50gydF4y2Ba。禁用一代通过设置gydF4y2BaCutGenerationgydF4y2Ba选项gydF4y2Ba“没有”gydF4y2Ba。gydF4y2Ba 10gydF4y2Ba
显示gydF4y2Ba

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

  • “关闭”gydF4y2Ba或gydF4y2Ba“没有”gydF4y2Ba——没有迭代显示gydF4y2Ba

  • “最后一次”gydF4y2Ba——只显示最后一个值gydF4y2Ba

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

“通路”gydF4y2Ba
启发式gydF4y2Ba

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

  • “基本”gydF4y2Ba

  • “中间”gydF4y2Ba

  • “高级”gydF4y2Ba

  • “rss”gydF4y2Ba

  • “rin”gydF4y2Ba

  • “圆”gydF4y2Ba

  • “潜水”gydF4y2Ba

  • “rss-diving”gydF4y2Ba

  • “rins-diving”gydF4y2Ba

  • “round-diving”gydF4y2Ba

  • “没有”gydF4y2Ba

“基本”gydF4y2Ba
HeuristicsMaxNodesgydF4y2Ba 严格的正整数,边界节点的数量gydF4y2BaintlinproggydF4y2Ba可以探索和寻找可行点。仅适用于gydF4y2Ba“rss”gydF4y2Ba和gydF4y2Ba“rin”gydF4y2Ba。看到gydF4y2Ba启发式寻找可行的解决方案金宝搏官方网站gydF4y2Ba。gydF4y2Ba 50gydF4y2Ba
IntegerPreprocessgydF4y2Ba

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

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

  • “基本”gydF4y2Ba——使用一个中等数量的整数预处理步骤。gydF4y2Ba

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

“基本”gydF4y2Ba
IntegerTolerancegydF4y2Ba 真正的从gydF4y2Ba1 e-6gydF4y2Ba通过gydF4y2Ba1 e - 3gydF4y2Ba,从整数的最大偏差,解决方案的组件gydF4y2BaxgydF4y2Ba可以和仍然被认为是一个整数。gydF4y2BaIntegerTolerancegydF4y2Ba不是停止准则。gydF4y2Ba 1 e-5gydF4y2Ba
LPMaxIterationsgydF4y2Ba 严格的正整数,单纯形算法迭代的最大数量和过程中每个节点。gydF4y2Ba

马克斯(3 e4, 10 * (numberOfEqualities + numberOfInequalities + numberOfVariables))gydF4y2Ba

在这个表达式,gydF4y2BanumberOfEqualitiesgydF4y2Ba的行数gydF4y2BaAeqgydF4y2Ba,gydF4y2BanumberOfInequalitiesgydF4y2Ba的行数gydF4y2Ba一个gydF4y2Ba,gydF4y2BanumberOfVariablesgydF4y2Ba意味着元素的数量gydF4y2BafgydF4y2Ba。gydF4y2Ba

LPOptimalityTolerancegydF4y2Ba 负的真正降低成本必须超过gydF4y2BaLPOptimalityTolerancegydF4y2Ba为一个变量为基础。gydF4y2Ba 1 e -gydF4y2Ba
LPPreprocessgydF4y2Ba

类型的预处理解决轻松的线性规划(见gydF4y2Ba线性规划预处理gydF4y2Ba):gydF4y2Ba

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

  • “基本”gydF4y2Ba——使用预处理。gydF4y2Ba

“基本”gydF4y2Ba
MaxNodesgydF4y2Ba 严格的最大节点数的正整数gydF4y2BaintlinproggydF4y2Ba探索和过程。gydF4y2Ba 1 e7gydF4y2Ba
MaxFeasiblePointsgydF4y2Ba 严格的正整数。gydF4y2BaintlinproggydF4y2Ba停止如果发现gydF4y2BaMaxFeasiblePointsgydF4y2Ba整数可行点。gydF4y2Ba 正gydF4y2Ba
MaxTimegydF4y2Ba 积极的现实的最大时间间隔,以秒为单位gydF4y2BaintlinproggydF4y2Ba运行。gydF4y2Ba 7200年gydF4y2Ba
NodeSelectiongydF4y2Ba

选择下一步探索的节点。gydF4y2Ba

  • “simplebestproj”gydF4y2Ba-最佳投影。看到gydF4y2Ba分支界限法gydF4y2Ba。gydF4y2Ba

  • “minobj”gydF4y2Ba-探索与最小目标函数节点。gydF4y2Ba

  • “mininfeas”gydF4y2Ba——探索整数之和最小的节点不可能实行。看到gydF4y2Ba分支界限法gydF4y2Ba。gydF4y2Ba

“simplebestproj”gydF4y2Ba
ObjectiveCutOffgydF4y2Ba 真实的比gydF4y2Ba负gydF4y2Ba。在和计算,gydF4y2BaintlinproggydF4y2Ba丢弃任何节点的线性规划解决方案具有客观价值超过gydF4y2BaObjectiveCutOffgydF4y2Ba。gydF4y2Ba 正gydF4y2Ba
ObjectiveImprovementThresholdgydF4y2Ba 负的真实。gydF4y2BaintlinproggydF4y2Ba改变当前可行解只有当它位于另一个与至少一个目标函数值gydF4y2BaObjectiveImprovementThresholdgydF4y2Ba低:gydF4y2Ba(褶皱- fnew) /(1 + | |折叠)> ObjectiveImprovementThresholdgydF4y2Ba。gydF4y2Ba 0gydF4y2Ba
OutputFcngydF4y2Ba

一个或多个函数的优化函数调用的事件。指定为gydF4y2Ba“savemilp金宝搏官方网站solutions”gydF4y2Ba、一个函数处理或处理单元阵列的功能。自定义输出函数,通过函数处理。一个输出函数可以解决者。gydF4y2Ba

  • “savemilp金宝搏官方网站solutions”gydF4y2Ba收集integer-feasible分gydF4y2BaxIntSolgydF4y2Ba在您的工作空间矩阵,每一列是一个整数可行点。gydF4y2Ba

编写一个自定义输出函数的信息,请参阅gydF4y2Baintlinprog输出函数和情节函数的语法gydF4y2Ba。gydF4y2Ba

[]gydF4y2Ba
PlotFcngydF4y2Ba

情节在算法执行时进步的各种措施;从预定义的情节或编写自己的选择。通过gydF4y2Ba“optimplotmilp”gydF4y2Ba、一个函数处理或处理单元阵列的功能。自定义绘制函数,通过函数处理。默认是没有(gydF4y2Ba[]gydF4y2Ba):gydF4y2Ba

  • “optimplotmilp”gydF4y2Ba情节上的上下界估计internally-calculated客观价值的解决方案。gydF4y2Ba

编写一个定制的情节函数的信息,请参阅gydF4y2Baintlinprog输出函数和情节函数的语法gydF4y2Ba。gydF4y2Ba

[]gydF4y2Ba
RelativeGapTolerancegydF4y2Ba

真正的从gydF4y2Ba0gydF4y2Ba通过gydF4y2Ba1gydF4y2Ba。gydF4y2BaintlinproggydF4y2Ba停止如果内部之间的相对偏差计算上(gydF4y2BaUgydF4y2Ba)和低(gydF4y2BalgydF4y2Ba)范围小于或等于目标函数gydF4y2BaRelativeGapTolerancegydF4y2Ba:gydF4y2Ba

U (U - L) / (| | + 1) < = RelativeGapTolerancegydF4y2Ba。gydF4y2Ba

请注意gydF4y2Ba

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

1的军医gydF4y2Ba
RootLPAlgorithmgydF4y2Ba

算法求解线性程序:gydF4y2Ba

  • 对偶单纯形的gydF4y2Ba-对偶单纯形算法gydF4y2Ba

  • “primal-simplex”gydF4y2Ba——原始单纯形算法gydF4y2Ba

对偶单纯形的gydF4y2Ba
RootLPMaxIterationsgydF4y2Ba 非负整数的最大数量的单纯形算法迭代解决最初的线性规划问题。gydF4y2Ba

马克斯(3 e4, 10 * (numberOfEqualities + numberOfInequalities + numberOfVariables))gydF4y2Ba

在这个表达式,gydF4y2BanumberOfEqualitiesgydF4y2Ba的行数gydF4y2BaAeqgydF4y2Ba,gydF4y2BanumberOfInequalitiesgydF4y2Ba的行数gydF4y2Ba一个gydF4y2Ba,gydF4y2BanumberOfVariablesgydF4y2Ba意味着元素的数量gydF4y2BafgydF4y2Ba。gydF4y2Ba

例子:gydF4y2Ba选择= optimoptions (‘intlinprog’,‘MaxTime’, 120)gydF4y2Ba

封装结构的输入和选择,指定以下字段。gydF4y2Ba

fgydF4y2Ba 向量代表客观gydF4y2Baf ' * xgydF4y2Ba(必需)gydF4y2Ba
intcongydF4y2Ba 向量表示变量取整数值(必需)gydF4y2Ba
AineqgydF4y2Ba 矩阵在线性不等式约束gydF4y2BaAineq * xgydF4y2Ba≤gydF4y2BabineqgydF4y2Ba

bineqgydF4y2Ba

向量线性不等式约束gydF4y2BaAineq * xgydF4y2Ba≤gydF4y2BabineqgydF4y2Ba

AeqgydF4y2Ba

矩阵在线性等式约束gydF4y2BaAeq * x =说真的gydF4y2Ba

说真的gydF4y2Ba

向量线性等式约束gydF4y2BaAeq * x =说真的gydF4y2Ba
磅gydF4y2Ba 向量的下界gydF4y2Ba
乌兰巴托gydF4y2Ba 向量的上界gydF4y2Ba
x0gydF4y2Ba 初始可行点gydF4y2Ba
解算器gydF4y2Ba “intlinprog”gydF4y2Ba(必需)gydF4y2Ba

选项gydF4y2Ba

选择使用gydF4y2BaoptimoptionsgydF4y2Ba(必需)gydF4y2Ba

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

  • fgydF4y2Ba

  • intcongydF4y2Ba

  • 解算器gydF4y2Ba

  • 选项gydF4y2Ba

例子:gydF4y2Ba问题。f=(12,3];
problem.intcon = (2、3);gydF4y2Ba
问题。选项=optimoptions(“intlinprog”);gydF4y2Ba
问题。Aineq=(3,- - - - - -2,- - - - - -1];
问题。bineq=20;
问题。磅=(- - - - - -6.1,-1.2,7.3];
问题。解算器=“intlinprog”;

数据类型:gydF4y2Ba结构体gydF4y2Ba

输出参数gydF4y2Ba

全部折叠gydF4y2Ba

解决方案,作为一个向量返回最小化gydF4y2Baf ' * xgydF4y2Ba所有界限,整数约束和线性约束。gydF4y2Ba

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

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

当一个问题是不可行或无界,gydF4y2BafvalgydF4y2Ba是gydF4y2Ba[]gydF4y2Ba。gydF4y2Ba

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

3gydF4y2Ba

对相对的解决方案是可行的gydF4y2BaConstraintTolerancegydF4y2Ba宽容,但对绝对宽容并不可行。gydF4y2Ba

2gydF4y2Ba

intlinproggydF4y2Ba过早地停止。整数可行点。gydF4y2Ba

1gydF4y2Ba

intlinproggydF4y2Ba融合解决方案gydF4y2BaxgydF4y2Ba。gydF4y2Ba

0gydF4y2Ba

intlinproggydF4y2Ba过早地停止。没有发现整数可行点。gydF4y2Ba

1gydF4y2Ba

intlinproggydF4y2Ba停在一个输出函数或函数。gydF4y2Ba

2gydF4y2Ba

发现不可行点。gydF4y2Ba

3gydF4y2Ba

根LP问题是无限的。gydF4y2Ba

9gydF4y2Ba

解决了可行性。gydF4y2Ba

退出消息可以理性地去给予更详细的信息gydF4y2BaintlinproggydF4y2Ba停止,如超出公差。gydF4y2Ba

ExitflagsgydF4y2Ba3gydF4y2Ba和gydF4y2Ba9gydF4y2Ba与有很大的不可行性的金宝搏官方网站解决方案。这些通常来自线性约束矩阵条件数大,或问题解决方案组件。纠正这些问题,尝试规模系数矩阵,消除冗余的线性约束,或给予更严格的边界变量。gydF4y2Ba

解决方案过程总结,作为一个结构,其中包含返回的信息优化过程。gydF4y2Ba

relativegapgydF4y2Ba

相对百分比区别上(gydF4y2BaUgydF4y2Ba)和低(gydF4y2BalgydF4y2Ba)的目标函数gydF4y2BaintlinproggydF4y2Ba计算和算法。gydF4y2Ba

relativegap = 100 * (U - L) / (abs (U) + 1)gydF4y2Ba

如果gydF4y2Baintcon = []gydF4y2Ba,gydF4y2Barelativegap = []gydF4y2Ba。gydF4y2Ba

请注意gydF4y2Ba

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

absolutegapgydF4y2Ba

不同的目标函数的上下界gydF4y2BaintlinproggydF4y2Ba计算和算法。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、正);(lb-x);(x-ub);(Ai * x-bi)])gydF4y2Ba

消息gydF4y2Ba

退出消息。gydF4y2Ba

限制gydF4y2Ba

  • 通常,一些所谓的整数值组件的解决方案gydF4y2Bax (intCon)gydF4y2Ba不精确的整数。gydF4y2BaintlinproggydF4y2Ba认为作为整数所有解决方案值内gydF4y2BaIntegerTolerancegydF4y2Ba的一个整数。gydF4y2Ba

    圆的所有整数恰好是整数,使用gydF4y2Ba轮gydF4y2Ba函数。gydF4y2Ba

    x (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警告你。如果你收到这个警告,检查解决方案是否应该整数值组件解决方案的接近整数。gydF4y2Ba

  • intlinproggydF4y2Ba不允许问题的组件,如系数gydF4y2BafgydF4y2Ba,gydF4y2Ba一个gydF4y2Ba,或gydF4y2Ba乌兰巴托gydF4y2Ba,超过gydF4y2Ba1 e25gydF4y2Ba按绝对价值。如果你尝试运行gydF4y2BaintlinproggydF4y2Ba有了这样一个问题,gydF4y2BaintlinproggydF4y2Ba一个错误的问题。gydF4y2Ba

提示gydF4y2Ba

  • 指定二进制变量,将变量设置为整数gydF4y2BaintcongydF4y2Ba,并给他们下界gydF4y2Ba0gydF4y2Ba和上界gydF4y2Ba1gydF4y2Ba。gydF4y2Ba

  • 通过指定稀疏线性约束矩阵节省内存gydF4y2Ba一个gydF4y2Ba和gydF4y2BaAeqgydF4y2Ba。然而,您不能使用稀疏矩阵gydF4y2BabgydF4y2Ba和gydF4y2Ba说真的gydF4y2Ba。gydF4y2Ba

  • 如果你有一个gydF4y2Bax0gydF4y2Ba参数,gydF4y2BaintlinproggydF4y2Ba使用价值的gydF4y2Ba“rin”gydF4y2Ba和指导潜水启发式,直到找到一个更好的integer-feasible点。所以当你提供gydF4y2Bax0gydF4y2Ba通过设置,您可以获得良好的结果gydF4y2Ba“启发式”gydF4y2Ba选项gydF4y2Ba“rins-diving”gydF4y2Ba或另一个设置使用gydF4y2Ba“rin”gydF4y2Ba。gydF4y2Ba

  • 提供逻辑指数为整数组件,这意味着一个二进制向量gydF4y2Ba1gydF4y2Ba表示一个整数,皈依gydF4y2BaintcongydF4y2Ba形式使用gydF4y2Ba找到gydF4y2Ba。例如,gydF4y2Ba

    logicalindices = [1, 0, 0, 1, 1, 0, 0);intcon =找到(logicalindices)gydF4y2Ba
    intcon = 1 4 5gydF4y2Ba
  • intlinproggydF4y2Ba替换gydF4y2BabintproggydF4y2Ba。更新旧的gydF4y2BabintproggydF4y2Ba代码来使用gydF4y2BaintlinproggydF4y2Ba做以下修改:gydF4y2Ba

    • 集gydF4y2BaintcongydF4y2Ba来gydF4y2Ba1:numVarsgydF4y2Ba,在那里gydF4y2BanumVarsgydF4y2Ba变量的数量是你的问题。gydF4y2Ba

    • 集gydF4y2Ba磅gydF4y2Ba来gydF4y2Ba0 (numVars, 1)gydF4y2Ba。gydF4y2Ba

    • 集gydF4y2Ba乌兰巴托gydF4y2Ba来gydF4y2Ba的(numVars, 1)gydF4y2Ba。gydF4y2Ba

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

    • 改变你的电话gydF4y2BabintproggydF4y2Ba如下: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优化gydF4y2Ba住编辑任务提供了一个可视化界面gydF4y2BaintlinproggydF4y2Ba。gydF4y2Ba

版本历史gydF4y2Ba

介绍了R2014agydF4y2Ba

全部展开gydF4y2Ba