主要内容GYdF4y2Ba

intlinprogGYdF4y2Ba

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

描述GYdF4y2Ba

混合整数线性规划求解器。GYdF4y2Ba

查找指定问题的最小值GYdF4y2Ba

最小值GYdF4y2Ba xGYdF4y2Ba FGYdF4y2Ba TGYdF4y2Ba xGYdF4y2Ba 受GYdF4y2Ba {GYdF4y2Ba xGYdF4y2Ba (GYdF4y2Ba intconGYdF4y2Ba )GYdF4y2Ba 是整数GYdF4y2Ba A.GYdF4y2Ba ⋅GYdF4y2Ba xGYdF4y2Ba ≤.GYdF4y2Ba BGYdF4y2Ba A.GYdF4y2Ba EGYdF4y2Ba QGYdF4y2Ba ⋅GYdF4y2Ba xGYdF4y2Ba =GYdF4y2Ba BGYdF4y2Ba EGYdF4y2Ba QGYdF4y2Ba LGYdF4y2Ba BGYdF4y2Ba ≤.GYdF4y2Ba xGYdF4y2Ba ≤.GYdF4y2Ba UGYdF4y2Ba BGYdF4y2Ba .GYdF4y2Ba

FGYdF4y2Ba,GYdF4y2BaxGYdF4y2Baintcon,GYdF4y2BaBGYdF4y2Ba,GYdF4y2Ba说真的GYdF4y2Ba,GYdF4y2Ba磅GYdF4y2Ba,GYdF4y2Ba乌兰巴托GYdF4y2Ba是矢量,和GYdF4y2BaA.GYdF4y2Ba和GYdF4y2BaAeqGYdF4y2Ba矩阵。GYdF4y2Ba

您可以指定GYdF4y2BaFGYdF4y2Baintcon,GYdF4y2Ba磅GYdF4y2Ba,GYdF4y2Ba乌兰巴托GYdF4y2Ba作为向量或数组。看到GYdF4y2Ba矩阵的参数GYdF4y2Ba.GYdF4y2Ba

请注意GYdF4y2Ba

intlinprogGYdF4y2Ba仅适用于基于解算器的方法。有关这两种优化方法的讨论,请参阅GYdF4y2Ba首先选择基于问题或求解器为基础的方法GYdF4y2Ba.GYdF4y2Ba

实例GYdF4y2Ba

xGYdF4y2Ba= intlinprog(GYdF4y2BaFGYdF4y2Ba,GYdF4y2BaintconGYdF4y2Ba,GYdF4y2BaA.GYdF4y2Ba,GYdF4y2BaBGYdF4y2Ba)GYdF4y2Ba解决了最小值GYdF4y2Baf ' * xGYdF4y2Ba使…的组成部分GYdF4y2BaxGYdF4y2Ba在GYdF4y2BaintconGYdF4y2Ba是整数,并且GYdF4y2Ba* x≤bGYdF4y2Ba.GYdF4y2Ba

xGYdF4y2Ba= intlinprog(GYdF4y2BaFGYdF4y2Ba,GYdF4y2BaintconGYdF4y2Ba,GYdF4y2BaA.GYdF4y2Ba,GYdF4y2BaBGYdF4y2Ba,GYdF4y2BaAeqGYdF4y2Ba,GYdF4y2Ba说真的GYdF4y2Ba)GYdF4y2Ba解决了上述问题,同时还满足等式约束GYdF4y2BaAeq * x =说真的GYdF4y2Ba.集GYdF4y2Ba一个= []GYdF4y2Ba和GYdF4y2BaB = []GYdF4y2Ba如果不存在不平等现象。GYdF4y2Ba

实例GYdF4y2Ba

xGYdF4y2Ba= intlinprog(GYdF4y2BaFGYdF4y2Ba,GYdF4y2BaintconGYdF4y2Ba,GYdF4y2BaA.GYdF4y2Ba,GYdF4y2BaBGYdF4y2Ba,GYdF4y2BaAeqGYdF4y2Ba,GYdF4y2Ba说真的GYdF4y2Ba,GYdF4y2Ba磅GYdF4y2Ba,GYdF4y2Ba乌兰巴托GYdF4y2Ba)GYdF4y2Ba定义一组设计变量的上下限,GYdF4y2BaxGYdF4y2Ba,使溶液总是在范围GYdF4y2BaLb≤x≤ubGYdF4y2Ba.集GYdF4y2BaAeq=[]GYdF4y2Ba和GYdF4y2Babeq=[]GYdF4y2Ba如果不存在平等。GYdF4y2Ba

实例GYdF4y2Ba

xGYdF4y2Ba= intlinprog(GYdF4y2BaFGYdF4y2Ba,GYdF4y2BaintconGYdF4y2Ba,GYdF4y2BaA.GYdF4y2Ba,GYdF4y2BaBGYdF4y2Ba,GYdF4y2BaAeqGYdF4y2Ba,GYdF4y2Ba说真的GYdF4y2Ba,GYdF4y2Ba磅GYdF4y2Ba,GYdF4y2Ba乌兰巴托GYdF4y2Ba,GYdF4y2Bax0GYdF4y2Ba)GYdF4y2Ba使用初始可行点进行优化GYdF4y2Bax0GYdF4y2Ba.集GYdF4y2Balb=[]GYdF4y2Ba和GYdF4y2Baub=[]GYdF4y2Ba如果不存在界限。GYdF4y2Ba

实例GYdF4y2Ba

xGYdF4y2Ba= intlinprog(GYdF4y2BaFGYdF4y2Ba,GYdF4y2BaintconGYdF4y2Ba,GYdF4y2BaA.GYdF4y2Ba,GYdF4y2BaBGYdF4y2Ba,GYdF4y2BaAeqGYdF4y2Ba,GYdF4y2Ba说真的GYdF4y2Ba,GYdF4y2Ba磅GYdF4y2Ba,GYdF4y2Ba乌兰巴托GYdF4y2Ba,GYdF4y2Bax0GYdF4y2Ba,GYdF4y2Ba选项GYdF4y2Ba)GYdF4y2Ba中指定的优化选项最小化GYdF4y2Ba选项GYdF4y2Ba使用GYdF4y2Ba最佳选择GYdF4y2Ba设置这些选项。集GYdF4y2Bax0 = []GYdF4y2Ba如果不存在初始点。GYdF4y2Ba

实例GYdF4y2Ba

xGYdF4y2Ba= intlinprog(GYdF4y2Ba问题GYdF4y2Ba)GYdF4y2Ba使用GYdF4y2Ba问题GYdF4y2Ba结构封装所有解算器输入。您可以导入GYdF4y2Ba问题GYdF4y2Ba结构从一个MPS文件使用GYdF4y2BampsreadGYdF4y2Ba.您还可以创建GYdF4y2Ba问题GYdF4y2Ba结构的GYdF4y2BaOptimizationProblemGYdF4y2Ba对象的使用GYdF4y2Baprob2structGYdF4y2Ba.GYdF4y2Ba

实例GYdF4y2Ba

[GYdF4y2BaxGYdF4y2Ba,GYdF4y2BafvalGYdF4y2Ba,GYdF4y2Ba出口滞后GYdF4y2Ba,GYdF4y2Ba输出GYdF4y2Ba) = intlinprog (GYdF4y2Ba___GYdF4y2Ba)GYdF4y2Ba,对于上面描述的任何输入参数,返回GYdF4y2BaFVAL = F'* XGYdF4y2Ba,一个值GYdF4y2Ba出口滞后GYdF4y2Ba描述退出条件和结构GYdF4y2Ba输出GYdF4y2Ba包含关于优化过程的信息。GYdF4y2Ba

例子GYdF4y2Ba

全部折叠GYdF4y2Ba

解决这个问题GYdF4y2Ba

最小值GYdF4y2Ba xGYdF4y2Ba 8.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba sGYdF4y2Ba UGYdF4y2Ba BGYdF4y2Ba JGYdF4y2Ba EGYdF4y2Ba CGYdF4y2Ba TGYdF4y2Ba TGYdF4y2Ba oGYdF4y2Ba {GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba 我GYdF4y2Ba sGYdF4y2Ba A.GYdF4y2Ba NGYdF4y2Ba 我GYdF4y2Ba NGYdF4y2Ba TGYdF4y2Ba EGYdF4y2Ba GGYdF4y2Ba EGYdF4y2Ba RGYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba ≥GYdF4y2Ba -GYdF4y2Ba 1.GYdF4y2Ba 4.GYdF4y2Ba -GYdF4y2Ba 4.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba -GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba ≤.GYdF4y2Ba -GYdF4y2Ba 3.GYdF4y2Ba 3.GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba ≤.GYdF4y2Ba 2.GYdF4y2Ba 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:最佳目标值为59000000。找到最优解。Intlinprog停在根节点因为客观值是最佳值的间隙的容限内,options.AbsoluteGapTolerance = 0(缺省值)。将INTCON变量是容差范围内的整数,options.IntegerTolerance = 1E-05(默认值)。GYdF4y2Ba
x =GYdF4y2Ba2×1GYdF4y2Ba6.5000 7.0000GYdF4y2Ba

解决这个问题GYdF4y2Ba

最小值GYdF4y2Ba xGYdF4y2Ba (GYdF4y2Ba -GYdF4y2Ba 3.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba -GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba -GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba )GYdF4y2Ba sGYdF4y2Ba UGYdF4y2Ba BGYdF4y2Ba JGYdF4y2Ba EGYdF4y2Ba CGYdF4y2Ba TGYdF4y2Ba TGYdF4y2Ba oGYdF4y2Ba {GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba BGYdF4y2Ba 我GYdF4y2Ba NGYdF4y2Ba A.GYdF4y2Ba RGYdF4y2Ba YGYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba ,GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba ≥GYdF4y2Ba 0GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba ≤.GYdF4y2Ba 7.GYdF4y2Ba 4.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba =GYdF4y2Ba 1.GYdF4y2Ba 2.GYdF4y2Ba .GYdF4y2Ba

写整型变量的目标函数,向量和向量。GYdF4y2Ba

F = [-3; -2; -1];INTCON = 3;GYdF4y2Ba

写出线性不等式约束。GYdF4y2Ba

一个= (1 1 1);b = 7;GYdF4y2Ba

编写线性等式约束。GYdF4y2Ba

AEQ = [4,2,1];BEQ = 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停在根节点因为客观值是最佳值的间隙的容限内,options.AbsoluteGapTolerance = 0(缺省值)。将INTCON变量是容差范围内的整数,options.IntegerTolerance = 1E-05(默认值)。GYdF4y2Ba
x =GYdF4y2Ba3×1GYdF4y2Ba0 5.5000 1.0000GYdF4y2Ba

比较有和没有初始可行点的整数规划问题的步骤数。这个问题有8个变量,4个线性等式约束,并且所有变量都被限制为正。GYdF4y2Ba

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

Aeq=[2213263321314269162826263023414272730826264126283618381626];beq=[7872104661132212058];GYdF4y2Ba

设置下限,将所有变量限制为非负。GYdF4y2Ba

N = 8;1磅= 0 (N);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,说真的,磅);GYdF4y2Ba
LP:最佳目标值为1554.047531。切割世代:应用了8个强大的CG切割。下界是1591.000000。分支与Bound:节点总数int integer相对探索时间(s)解fval gap (%) 10000 0.80 0 - - 18027 1.31 1 2.906000e+03 4.509804e+01 21859 1.65 2 2.073000e+03 2.270974e+01 23546 1.78 3 1.854000e+03 1.180593e+01 24121 1.82 3 1.854000e+03 1.563342e+00 24294 1.84 3 1.854000e+03 0.000000e+00已找到最优解。Intlinprog停止,因为目标值是最佳值的间隙的容限内,options.AbsoluteGapTolerance = 0(缺省值)。将INTCON变量是容差范围内的整数,options.IntegerTolerance = 1E-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整数整数的相对探索时间(s)溶液FVAL间隙(%)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 + 031.455526e + 00 6400 0.66 3 1.854000e + 03 0.000000e + 00的最优解找到。Intlinprog停止,因为目标值是最佳值的间隙的容限内,options.AbsoluteGapTolerance = 0(缺省值)。将INTCON变量是容差范围内的整数,options.IntegerTolerance = 1E-05(默认值)。GYdF4y2Ba
  • 没有起始点,GYdF4y2BaintlinprogGYdF4y2Ba大概走了三万步。GYdF4y2Ba

  • 使用初始点,GYdF4y2BaintlinprogGYdF4y2Ba走了大约5000步。GYdF4y2Ba

给出一个起始点并不总是有帮助。对于这个问题,给出初始点可以节省时间和计算步骤。然而,对于某些问题,给出初始点可能会导致GYdF4y2BaintlinprogGYdF4y2Ba采取更多步骤。GYdF4y2Ba

解决这个问题GYdF4y2Ba

最小值GYdF4y2Ba xGYdF4y2Ba (GYdF4y2Ba -GYdF4y2Ba 3.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba -GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba -GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba )GYdF4y2Ba sGYdF4y2Ba UGYdF4y2Ba BGYdF4y2Ba JGYdF4y2Ba EGYdF4y2Ba CGYdF4y2Ba TGYdF4y2Ba TGYdF4y2Ba oGYdF4y2Ba {GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba BGYdF4y2Ba 我GYdF4y2Ba NGYdF4y2Ba A.GYdF4y2Ba RGYdF4y2Ba YGYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba ,GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba ≥GYdF4y2Ba 0GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba ≤.GYdF4y2Ba 7.GYdF4y2Ba 4.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba =GYdF4y2Ba 1.GYdF4y2Ba 2.GYdF4y2Ba

不显示迭代显示。GYdF4y2Ba

指定解算器输入。GYdF4y2Ba

f=[-3;-2;-1];intcon=3;A=[1,1,1];b=7;Aeq=[4,2,1];beq=12;lb=0(3,1);ub=[Inf;Inf;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

这个例子展示了如何使用基于问题的方法设置一个问题,然后使用基于求解器的方法解决它。现在的问题是GYdF4y2Ba

最小值GYdF4y2Ba xGYdF4y2Ba (GYdF4y2Ba -GYdF4y2Ba 3.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba -GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba -GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba )GYdF4y2Ba sGYdF4y2Ba UGYdF4y2Ba BGYdF4y2Ba JGYdF4y2Ba EGYdF4y2Ba CGYdF4y2Ba TGYdF4y2Ba TGYdF4y2Ba oGYdF4y2Ba {GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba BGYdF4y2Ba 我GYdF4y2Ba NGYdF4y2Ba A.GYdF4y2Ba RGYdF4y2Ba YGYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba ,GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba ≥GYdF4y2Ba 0GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba ≤.GYdF4y2Ba 7.GYdF4y2Ba 4.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba =GYdF4y2Ba 1.GYdF4y2Ba 2.GYdF4y2Ba

创建GYdF4y2BaOptimizationProblemGYdF4y2Ba对象命名GYdF4y2Ba概率GYdF4y2Ba表示此问题。若要指定二进制变量,请创建整数类型的优化变量,下界为0,上界为1。GYdF4y2Ba

x = optimvar (GYdF4y2Ba“x”GYdF4y2Ba,2,GYdF4y2Ba“下界”GYdF4y2Ba, 0);xb = optimvar (GYdF4y2Ba“xb”GYdF4y2Ba,GYdF4y2Ba“下界”GYdF4y2Ba,0,GYdF4y2Ba“上限”GYdF4y2Ba,1,GYdF4y2Ba“类型”GYdF4y2Ba,GYdF4y2Ba“整数”GYdF4y2Ba);概率= optimproblem (GYdF4y2Ba“目标”GYdF4y2Ba3 * x (1) 2 * (2) xb);Cons1 = sum(x) + xb <= 7;con2 = 4*x(1) + 2*x(2) + xb = 12;prob.Constraints。cons1 = cons1;prob.Constraints。cons2 = cons2;GYdF4y2Ba

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

问题= prob2struct(概率);GYdF4y2Ba

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

[溶胶,fval exitflag、输出]= intlinprog(问题)GYdF4y2Ba
LP:最优目标值是-12.000000。找到最优解。Intlinprog停在根节点因为客观值是最佳值的间隙的容限内,options.AbsoluteGapTolerance = 0(缺省值)。将INTCON变量是容差范围内的整数,options.IntegerTolerance = 1E-05(默认值)。GYdF4y2Ba
溶胶=GYdF4y2Ba3×1GYdF4y2Ba0 5.5000 1.0000GYdF4y2Ba
fval=-12GYdF4y2Ba
exitflag = 1GYdF4y2Ba
输出=GYdF4y2Ba带字段的结构:GYdF4y2Barelativegap:0 absolutegap:0 NumFasPoints:1 numnodes:0冲突:0消息:“找到最佳解决方案…”GYdF4y2Ba

这两个GYdF4y2Ba索尔(1)GYdF4y2Ba和GYdF4y2Ba索尔(3)GYdF4y2Ba是二进制值。哪个值对应于二进制优化变量GYdF4y2BaxbGYdF4y2Ba?GYdF4y2Ba

问题变量GYdF4y2Ba
ans=GYdF4y2Ba带字段的结构:GYdF4y2Bax:[2x1 optim.problemdef.OptimizationVariable]xb:[1x1 optim.problemdef.OptimizationVariable]GYdF4y2Ba

的变量GYdF4y2BaxbGYdF4y2Ba在列表中最后出现GYdF4y2Ba变量GYdF4y2Ba显示,所以GYdF4y2BaxbGYdF4y2Ba对应于GYdF4y2Ba索尔(3)= 1GYdF4y2Ba.看到GYdF4y2Ba算法GYdF4y2Ba.GYdF4y2Ba

调用GYdF4y2BaintlinprogGYdF4y2Ba有更多输出,以查看解决方案的细节和过程。GYdF4y2Ba

我们的目标是要解决的问题GYdF4y2Ba

最小值GYdF4y2Ba xGYdF4y2Ba (GYdF4y2Ba -GYdF4y2Ba 3.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba -GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba -GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba )GYdF4y2Ba sGYdF4y2Ba UGYdF4y2Ba BGYdF4y2Ba JGYdF4y2Ba EGYdF4y2Ba CGYdF4y2Ba TGYdF4y2Ba TGYdF4y2Ba oGYdF4y2Ba {GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba BGYdF4y2Ba 我GYdF4y2Ba NGYdF4y2Ba A.GYdF4y2Ba RGYdF4y2Ba YGYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba ,GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba ≥GYdF4y2Ba 0GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba ≤.GYdF4y2Ba 7.GYdF4y2Ba 4.GYdF4y2Ba xGYdF4y2Ba 1.GYdF4y2Ba +GYdF4y2Ba 2.GYdF4y2Ba xGYdF4y2Ba 2.GYdF4y2Ba +GYdF4y2Ba xGYdF4y2Ba 3.GYdF4y2Ba =GYdF4y2Ba 1.GYdF4y2Ba 2.GYdF4y2Ba .GYdF4y2Ba

指定解算器输入。GYdF4y2Ba

f=[-3;-2;-1];intcon=3;A=[1,1,1];b=7;Aeq=[4,2,1];beq=12;lb=0(3,1);ub=[Inf;Inf;1];GYdF4y2Ba%强制x(3)是二进制的GYdF4y2Ba

调用GYdF4y2BaintlinprogGYdF4y2Ba与所有输出。GYdF4y2Ba

[x,fval,exitflag,output]=intlinprog(f,intcon,A,b,Aeq,beq,lb,ub)GYdF4y2Ba
LP:最优目标值是-12.000000。找到最优解。Intlinprog停在根节点因为客观值是最佳值的间隙的容限内,options.AbsoluteGapTolerance = 0(缺省值)。将INTCON变量是容差范围内的整数,options.IntegerTolerance = 1E-05(默认值)。GYdF4y2Ba
x =GYdF4y2Ba3×1GYdF4y2Ba0 5.5000 1.0000GYdF4y2Ba
fval=-12GYdF4y2Ba
exitflag = 1GYdF4y2Ba
输出=GYdF4y2Ba带字段的结构:GYdF4y2Barelativegap:0 absolutegap:0 NumFasPoints:1 numnodes:0冲突:0消息:“找到最佳解决方案…”GYdF4y2Ba

输出结构显示GYdF4y2BanumnodesGYdF4y2Ba是GYdF4y2Ba0GYdF4y2Ba.这意味着GYdF4y2BaintlinprogGYdF4y2Ba在分支之前解决了问题。这是表明结果可靠的一个迹象。此外,GYdF4y2BaabsolutegapGYdF4y2Ba和GYdF4y2BarelativegapGYdF4y2Ba字段GYdF4y2Ba0GYdF4y2Ba.这是另一个迹象表明,结果是可靠的。GYdF4y2Ba

输入参数GYdF4y2Ba

全部折叠GYdF4y2Ba

系数向量,指定为实向量或实数组。系数向量表示目标函数GYdF4y2Baf ' * xGYdF4y2Ba.这个符号假设GYdF4y2BaFGYdF4y2Ba是列向量,但您可以自由使用行向量或数组。在内部,GYdF4y2Ba线性规划问题GYdF4y2Ba转换GYdF4y2BaFGYdF4y2Ba到列向量GYdF4y2BaF(:)GYdF4y2Ba.GYdF4y2Ba

如果您指定GYdF4y2BaF = []GYdF4y2Ba,GYdF4y2BaintlinprogGYdF4y2Ba试图找到一个可行点,而不试图最小化目标函数。GYdF4y2Ba

例子:GYdF4y2Baf=[4;2;-1.7];GYdF4y2Ba

数据类型:GYdF4y2Ba双倍的GYdF4y2Ba

整数约束向量,指定为正整数向量。中的值GYdF4y2BaintconGYdF4y2Ba指示决策变量的组成部分GYdF4y2BaxGYdF4y2Ba整数值。GYdF4y2BaintconGYdF4y2Ba具有来自的值GYdF4y2Ba1.GYdF4y2Ba通过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

线性不等式约束矩阵,指定为双精度矩阵。GYdF4y2BaA.GYdF4y2Ba表示约束条件下的线性系数GYdF4y2BaA*xGYdF4y2Ba≤.GYdF4y2BaBGYdF4y2Ba.GYdF4y2BaA.GYdF4y2Ba有尺寸GYdF4y2BaMGYdF4y2Ba——- - - - - -GYdF4y2BaNGYdF4y2Ba, 在哪里GYdF4y2BaMGYdF4y2Ba约束的数量是多少GYdF4y2BaNGYdF4y2Ba=GYdF4y2Ba元素个数(f)GYdF4y2Ba.节省内存,GYdF4y2BaA.GYdF4y2Ba可以是稀疏的。GYdF4y2Ba

例子:GYdF4y2Ba一个=[4 3;2、0;4、1];GYdF4y2Ba表示两个决策变量(两列)的三个线性不等式(三行)。GYdF4y2Ba

数据类型:GYdF4y2Ba双倍的GYdF4y2Ba

线性不等式约束向量,指定为双精度向量。GYdF4y2BaBGYdF4y2Ba表示约束中的常量向量GYdF4y2BaA*xGYdF4y2Ba≤.GYdF4y2BaBGYdF4y2Ba.GYdF4y2BaBGYdF4y2Ba有长度GYdF4y2BaMGYdF4y2Ba, 在哪里GYdF4y2BaA.GYdF4y2Ba是GYdF4y2BaMGYdF4y2Ba——- - - - - -GYdF4y2BaNGYdF4y2Ba.GYdF4y2Ba

例子:GYdF4y2Ba(4 0)GYdF4y2Ba

数据类型:GYdF4y2Ba双倍的GYdF4y2Ba

线性等式约束矩阵,指定为双精度矩阵。GYdF4y2BaAeqGYdF4y2Ba表示约束条件下的线性系数GYdF4y2BaAeq * xGYdF4y2Ba=GYdF4y2Ba说真的GYdF4y2Ba.GYdF4y2BaAeqGYdF4y2Ba有尺寸GYdF4y2Ba微地震GYdF4y2Ba——- - - - - -GYdF4y2BaNGYdF4y2Ba, 在哪里GYdF4y2Ba微地震GYdF4y2Ba约束的数量是多少GYdF4y2BaNGYdF4y2Ba=GYdF4y2Ba元素个数(f)GYdF4y2Ba.节省内存,GYdF4y2BaAeqGYdF4y2Ba可以是稀疏的。GYdF4y2Ba

例子:GYdF4y2Ba一个=[4 3;2、0;4、1];GYdF4y2Ba表示两个决策变量(两列)的三个线性不等式(三行)。GYdF4y2Ba

数据类型:GYdF4y2Ba双倍的GYdF4y2Ba

线性等式约束向量,指定为双精度向量。GYdF4y2Ba说真的GYdF4y2Ba表示约束中的常量向量GYdF4y2BaAeq * xGYdF4y2Ba=GYdF4y2Ba说真的GYdF4y2Ba.GYdF4y2Ba说真的GYdF4y2Ba有长度GYdF4y2Ba微地震GYdF4y2Ba, 在哪里GYdF4y2BaAeqGYdF4y2Ba是GYdF4y2Ba微地震GYdF4y2Ba——- - - - - -GYdF4y2BaNGYdF4y2Ba.GYdF4y2Ba

例子:GYdF4y2Ba(4 0)GYdF4y2Ba

数据类型:GYdF4y2Ba双倍的GYdF4y2Ba

下界,指定为双精度向量或数组。GYdF4y2Ba磅GYdF4y2Ba表示元素方向的下界GYdF4y2Ba磅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表示元素的上界GYdF4y2Ba磅GYdF4y2Ba≤.GYdF4y2BaxGYdF4y2Ba≤.GYdF4y2Ba乌兰巴托GYdF4y2Ba.GYdF4y2Ba

在内部,GYdF4y2BaintlinprogGYdF4y2Ba转换数组GYdF4y2Ba乌兰巴托GYdF4y2Ba的向量GYdF4y2Baub(:)GYdF4y2Ba.GYdF4y2Ba

例子:GYdF4y2Ba乌兰巴托= (Inf; 4; 10)GYdF4y2Ba意味着GYdF4y2BaX(2)≤4GYdF4y2Ba,GYdF4y2Bax(3)≤ 10GYdF4y2Ba.GYdF4y2Ba

数据类型:GYdF4y2Ba双倍的GYdF4y2Ba

初始点,指定为实数组。元素的数量GYdF4y2Bax0GYdF4y2Ba等于元素的个数吗GYdF4y2BaFGYdF4y2Ba,当GYdF4y2BaFGYdF4y2Ba的存在。否则,该数与的列数相同GYdF4y2BaA.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,指定为的输出GYdF4y2Ba最佳选择GYdF4y2Ba.GYdF4y2Ba

有些选项不在计划中GYdF4y2Ba最佳选择GYdF4y2Ba显示。这些选项在下表中以斜体显示。有关详细信息,请参见GYdF4y2Ba视图选项GYdF4y2Ba.GYdF4y2Ba

选项GYdF4y2Ba 描述GYdF4y2Ba 违约GYdF4y2Ba
AbsoluteGapToleranceGYdF4y2Ba

非负实。GYdF4y2BaintlinprogGYdF4y2Ba停止时,如果内部计算的上限(GYdF4y2BaUGYdF4y2Ba)及下(GYdF4y2BaLGYdF4y2Ba)的边界小于或等于GYdF4y2BaAbsoluteGapToleranceGYdF4y2Ba:GYdF4y2Ba

üL - <= AbsoluteGapToleranceGYdF4y2Ba.GYdF4y2Ba

0GYdF4y2Ba
BranchRuleGYdF4y2Ba

选择分支组件的规则:GYdF4y2Ba

  • “maxpscost”GYdF4y2Ba-具有最大伪成本的部分。看到GYdF4y2Ba分支界限法GYdF4y2Ba.GYdF4y2Ba

  • “strongpscost”GYdF4y2Ba-具有最大伪成本和比in更准确的伪成本估计的小数部分GYdF4y2Ba“maxpscost”GYdF4y2Ba.看到GYdF4y2Ba分支界限法GYdF4y2Ba.GYdF4y2Ba

  • “可靠性”GYdF4y2Ba-具有最大伪成本的小数部分,伪成本的估计甚至比in更准确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 在进入分支定界阶段之前通过所有切割生成方法的次数,为整数GYdF4y2Ba1.GYdF4y2Ba通过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跳水”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

max(3e4, 10*(numberOfEqualities + numberOfInequalities + numberOfVariables))GYdF4y2Ba

在这个表达式,GYdF4y2BanumberOfEqualitiesGYdF4y2Ba是指数据的行数GYdF4y2BaAeqGYdF4y2Ba,GYdF4y2BanumberOfInequalitiesGYdF4y2Ba是指数据的行数GYdF4y2BaA.GYdF4y2Ba,GYdF4y2BanumberOfVariablesGYdF4y2Ba表示的元素数GYdF4y2BaFGYdF4y2Ba.GYdF4y2Ba

LPOptimalityToleranceGYdF4y2Ba 非负实,即减少的成本必须超过GYdF4y2BaLPOptimalityToleranceGYdF4y2Ba作为基数的变量。GYdF4y2Ba 1 e -GYdF4y2Ba
LPS预处理GYdF4y2Ba

为松弛线性程序解的预处理类型(见GYdF4y2Ba线性规划预处理GYdF4y2Ba):GYdF4y2Ba

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

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

“基本”GYdF4y2Ba
MaxNodesGYdF4y2Ba 严格正整数,即最大节点数GYdF4y2BaintlinprogGYdF4y2Ba在其分支和约束过程中进行探讨。GYdF4y2Ba 1 e7GYdF4y2Ba
MaxFeasiblePointsGYdF4y2Ba 严格正整数。GYdF4y2BaintlinprogGYdF4y2Ba如果找到,则停止GYdF4y2BaMaxFeasiblePointsGYdF4y2Ba整数可行点。GYdF4y2Ba 正GYdF4y2Ba
MaxTimeGYdF4y2Ba 正实数是最大时间,以秒为单位GYdF4y2BaintlinprogGYdF4y2Ba运行。GYdF4y2Ba 7200.GYdF4y2Ba
节点选择GYdF4y2Ba

选择下一步探索的节点。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(fold - fnew)/(1 + |fold|) > ObjectiveImprovementThresholdGYdF4y2Ba.GYdF4y2Ba 0GYdF4y2Ba
OutputFcnGYdF4y2Ba

优化函数在事件时调用的一个或多个函数。指定为GYdF4y2Ba“保存牛奶解决方案万博 尤文图斯”GYdF4y2Ba、函数句柄或函数句柄的单元格数组。对于自定义输出函数,传递函数句柄。输出函数可以停止求解器。GYdF4y2Ba

  • “保存牛奶解决方案万博 尤文图斯”GYdF4y2Ba收集模型中的整数可行点GYdF4y2BaxIntSolGYdF4y2Ba矩阵,其中每列是一个整数可行点。GYdF4y2Ba

有关编写自定义输出函数的信息,请参阅GYdF4y2Baintlinprog输出函数和绘图函数语法GYdF4y2Ba.GYdF4y2Ba

[]GYdF4y2Ba
绘图仪GYdF4y2Ba

在算法执行时绘制各种进度度量;从预定义的绘图中选择或编写自己的。通过GYdF4y2Ba“米尔普”GYdF4y2Ba、函数句柄或函数句柄的单元格数组。对于定制的绘图函数,传递函数句柄。默认为none (GYdF4y2Ba[]GYdF4y2Ba):GYdF4y2Ba

  • “米尔普”GYdF4y2Ba在解的目标值上绘制内部计算的上下限。GYdF4y2Ba

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

[]GYdF4y2Ba
相对宽容GYdF4y2Ba

真实来源GYdF4y2Ba0GYdF4y2Ba通过GYdF4y2Ba1.GYdF4y2Ba.GYdF4y2BaintlinprogGYdF4y2Ba停止时,如果内部计算的上部(GYdF4y2BaUGYdF4y2Ba)及下(GYdF4y2BaLGYdF4y2Ba)的边界小于或等于GYdF4y2Ba相对宽容GYdF4y2Ba:GYdF4y2Ba

(U-L)/(abs(U)+1)<=相对耐受性GYdF4y2Ba.GYdF4y2Ba

intlinprogGYdF4y2Ba自动修改为大公差GYdF4y2BaLGYdF4y2Ba大小:GYdF4y2Ba

宽容=GYdF4y2Ba分钟(1 /(1+ | L |),RelativeGapTolerance)GYdF4y2Ba

请注意GYdF4y2Ba

虽然你指定GYdF4y2Ba相对宽容GYdF4y2Ba作为十进制数,迭代显示和GYdF4y2Baoutput.egapGYdF4y2Ba报告的间隙为百分比,这意味着100次测量的相对间隙。如果退出消息指的是相对间隙,该值是测得的相对间隙,而不是一个百分比。GYdF4y2Ba

1的军医GYdF4y2Ba
RootLPAlgorithmGYdF4y2Ba

求解线性规划的算法:GYdF4y2Ba

  • 对偶单纯形的GYdF4y2Ba—对偶单纯形算法GYdF4y2Ba

  • “原始单纯形”GYdF4y2Ba-原始单纯形算法GYdF4y2Ba

对偶单纯形的GYdF4y2Ba
RootLPMaxIterationsGYdF4y2Ba 非负整数,它是单纯形算法的迭代求解的初始线性规划问题的最大数量。GYdF4y2Ba

max(3e4, 10*(numberOfEqualities + numberOfInequalities + numberOfVariables))GYdF4y2Ba

在这个表达式,GYdF4y2BanumberOfEqualitiesGYdF4y2Ba是指数据的行数GYdF4y2BaAeqGYdF4y2Ba,GYdF4y2BanumberOfInequalitiesGYdF4y2Ba是指数据的行数GYdF4y2BaA.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

选择使用GYdF4y2Ba最佳选择GYdF4y2Ba(必选)GYdF4y2Ba

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

  • FGYdF4y2Ba

  • intconGYdF4y2Ba

  • 求解GYdF4y2Ba

  • 选项GYdF4y2Ba

例子:GYdF4y2Ba问题f=[1,2,3];GYdF4y2Ba
problem.intcon=[2,3];GYdF4y2Ba
problem.options=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

算法停止条件,作为标识算法停止原因的整数返回。的值如下所示GYdF4y2Ba出口滞后GYdF4y2Ba以及相应的原因GYdF4y2BaintlinprogGYdF4y2Ba停止了。GYdF4y2Ba

3.GYdF4y2Ba

这个解相对于相对值是可行的GYdF4y2BaConstraintToleranceGYdF4y2Ba公差,但相对于绝对公差而言不可行。GYdF4y2Ba

2.GYdF4y2Ba

intlinprogGYdF4y2Ba过早地停止。找到整数可行点。GYdF4y2Ba

1.GYdF4y2Ba

intlinprogGYdF4y2Ba收敛到解GYdF4y2BaxGYdF4y2Ba.GYdF4y2Ba

0GYdF4y2Ba

intlinprogGYdF4y2Ba过早地停止。未找到整数可行点。GYdF4y2Ba

1GYdF4y2Ba

intlinprogGYdF4y2Ba被输出函数或绘图函数停止。GYdF4y2Ba

-2GYdF4y2Ba

没有找到可行点。GYdF4y2Ba

-3GYdF4y2Ba

根LP问题是无界的。GYdF4y2Ba

-9GYdF4y2Ba

解决了可行性。GYdF4y2Ba

退出消息可以给的原因的详细信息GYdF4y2BaintlinprogGYdF4y2Ba停止,如超过公差。GYdF4y2Ba

ExitflagsGYdF4y2Ba3.GYdF4y2Ba和GYdF4y2Ba-9GYdF4y2Ba与具有很大不可行性的万博 尤文图斯解决方案相关。这些通常是由具有较大条件数的线性约束矩阵或具有较大解分量的问题产生的。为了纠正这些问题,尝试缩放系数矩阵,消除冗余的线性约束,或给变量更严格的界限。GYdF4y2Ba

解决方案流程总结,作为包含优化流程信息的结构返回。GYdF4y2Ba

relativegapGYdF4y2Ba

上半部分之间的相对百分比差异(GYdF4y2BaUGYdF4y2Ba)及下(GYdF4y2BaLGYdF4y2Ba)界定所述目标函数的GYdF4y2BaintlinprogGYdF4y2Ba计算其分支定界算法。GYdF4y2Ba

相对加速度=100*(U-L)/(绝对加速度(U)+1)GYdF4y2Ba

如果GYdF4y2Baintcon = []GYdF4y2Ba,GYdF4y2Barelativegap = []GYdF4y2Ba.GYdF4y2Ba

请注意GYdF4y2Ba

虽然你指定GYdF4y2Ba相对宽容GYdF4y2Ba作为十进制数,迭代显示和GYdF4y2Baoutput.egapGYdF4y2Ba报告的间隙为百分比,这意味着100次测量的相对间隙。如果退出消息指的是相对间隙,该值是测得的相对间隙,而不是一个百分比。GYdF4y2Ba

absolutegapGYdF4y2Ba

的目标函数的上限和下限之间的差值GYdF4y2BaintlinprogGYdF4y2Ba计算其分支定界算法。GYdF4y2Ba

如果GYdF4y2Baintcon = []GYdF4y2Ba,GYdF4y2Ba绝对间隙=[]GYdF4y2Ba.GYdF4y2Ba

numfeaspointsGYdF4y2Ba

的整数可行点数量。GYdF4y2Ba

如果GYdF4y2Baintcon = []GYdF4y2Ba,GYdF4y2Banumfeaspoints=[]GYdF4y2Ba.同样,如果初始松弛问题是不可行的,GYdF4y2Banumfeaspoints=[]GYdF4y2Ba.GYdF4y2Ba

numnodesGYdF4y2Ba

分支定界算法中的节点数。如果在预处理或初始切割过程中找到了解决方案,GYdF4y2Ba纽结=0GYdF4y2Ba.GYdF4y2Ba

如果GYdF4y2Baintcon = []GYdF4y2Ba,GYdF4y2Banumnodes = []GYdF4y2Ba.GYdF4y2Ba

违反合同GYdF4y2Ba

约束冲突,对于冲突的约束为正。GYdF4y2Ba

constrviolation = max ([0;规范(Aeq * x-beq、正);(lb-x);(x-ub);(Ai * x-bi)])GYdF4y2Ba

消息GYdF4y2Ba

退出消息。GYdF4y2Ba

局限性GYdF4y2Ba

  • 通常,解决方案的某些假定整数值组件GYdF4y2Bax(国际电信展)GYdF4y2Ba不准确的整数。GYdF4y2BaintlinprogGYdF4y2Ba将其中的所有解值视为整数GYdF4y2BaIntegerToleranceGYdF4y2Ba的一个整数。GYdF4y2Ba

    要将所有假定的整数取整为整数,请使用GYdF4y2Ba圆形的GYdF4y2Ba作用GYdF4y2Ba

    x (intcon) =圆(x (intcon));GYdF4y2Ba

    警告GYdF4y2Ba

    四舍五入溶液可引起万博 尤文图斯解决方案变得不可行。检查后四舍五入的可行性:GYdF4y2Ba

    马克斯(A * x - b)GYdF4y2Ba%看看条目是不是太积极了,所以有小的不可行性GYdF4y2Ba马克斯(abs (Aeq * x - beq))GYdF4y2Ba%查看条目是否接近零GYdF4y2BaMAX(X  -  UB)GYdF4y2Ba阳性%条目侵犯边界GYdF4y2Ba马克斯(lb - x)GYdF4y2Ba阳性%条目侵犯边界GYdF4y2Ba
  • intlinprogGYdF4y2Ba不强制解决方案组件在其绝对值超过时为整数值GYdF4y2Ba2.1 e9GYdF4y2Ba。当您的解决方案包含此类组件时,GYdF4y2BaintlinprogGYdF4y2Ba发出警告。如果您收到此警告,检查解决方案看方案的所谓整数值的组件是否接近整数。GYdF4y2Ba

  • intlinprogGYdF4y2Ba不允许问题的分量,如系数在GYdF4y2BaFGYdF4y2Ba,GYdF4y2BaA.GYdF4y2Ba,或GYdF4y2Ba乌兰巴托GYdF4y2Ba,超过GYdF4y2Ba1 e25GYdF4y2Ba绝对值。如果您尝试运行GYdF4y2BaintlinprogGYdF4y2Ba面对这样的问题,GYdF4y2BaintlinprogGYdF4y2Ba一个错误的问题。GYdF4y2Ba

提示GYdF4y2Ba

  • 要指定二进制变量,请在中将变量设置为整数GYdF4y2BaintconGYdF4y2Ba,并给出它们的下界GYdF4y2Ba0GYdF4y2Ba和上界GYdF4y2Ba1.GYdF4y2Ba.GYdF4y2Ba

  • 通过指定稀疏线性约束矩阵来节省内存GYdF4y2BaA.GYdF4y2Ba和GYdF4y2BaAeqGYdF4y2Ba.然而,您不能使用稀疏矩阵GYdF4y2BaBGYdF4y2Ba和GYdF4y2Ba说真的GYdF4y2Ba.GYdF4y2Ba

  • 如果你包括GYdF4y2Bax0GYdF4y2Ba参数,GYdF4y2BaintlinprogGYdF4y2Ba在GYdF4y2Ba“rin”GYdF4y2Ba引导潜水启发式,直到找到更好的整数可行点。所以当你提供GYdF4y2Bax0GYdF4y2Ba,你可以通过设置获得好成绩GYdF4y2Ba“启发式”GYdF4y2Ba选项GYdF4y2Ba“RINS跳水”GYdF4y2Ba或者另一种设置GYdF4y2Ba“rin”GYdF4y2Ba.GYdF4y2Ba

  • 为整数分量提供逻辑索引,即具有GYdF4y2Ba1.GYdF4y2Ba表示整数,转换为GYdF4y2BaintconGYdF4y2Ba形式使用GYdF4y2Ba找到GYdF4y2Ba.例如,GYdF4y2Ba

    logicalindices = [1, 0, 0, 1, 1, 0, 0);intcon =找到(logicalindices)GYdF4y2Ba
    5 . n .复合体GYdF4y2Ba
  • intlinprogGYdF4y2Ba替换GYdF4y2BabintprogGYdF4y2Ba.更新旧的GYdF4y2BabintprogGYdF4y2Ba要使用的代码GYdF4y2BaintlinprogGYdF4y2Ba,进行以下更改:GYdF4y2Ba

    • 集GYdF4y2BaintconGYdF4y2Ba来GYdF4y2Ba1: numVarsGYdF4y2Ba, 在哪里GYdF4y2BanumVarsGYdF4y2Ba就是问题中变量的个数。GYdF4y2Ba

    • 集GYdF4y2Ba磅GYdF4y2Ba来GYdF4y2Ba0 (numVars, 1)GYdF4y2Ba.GYdF4y2Ba

    • 集GYdF4y2Ba乌兰巴托GYdF4y2Ba来GYdF4y2Ba一(numVars,1)GYdF4y2Ba.GYdF4y2Ba

    • 更新任何相关的选项。用GYdF4y2Ba最佳选择GYdF4y2Ba要创建以下选项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

全部展开GYdF4y2Ba

R2019a中的行为改变GYdF4y2Ba

介绍了在R2014aGYdF4y2Ba