grbmodel.setpwlobj()


grbmodel.setpwlobj()

设置变量的分段线性目标函数。

此方法的参数指定了一个点列表,用于为单个变量定义分段 - 线性目标函数。具体来说,这是<span> $ </ span> x <span> $ </ span><span> $ </ span> y <span> $ </ span>参数为函数的顶点提供坐标。

例如,假设我们想要定义该功能<span> $ </ span> f(x)<span> $ </ span>如下所示:

图片PWL.

该功能的顶点在点处发生<span> $ </ span>(1,1)<span> $ </ span><span> $ </ span>(3,2)<span> $ </ span><span> $ </ span>(5,4)<span> $ </ span>, 所以<span> $ </ span> x <span> $ </ span>是{1,3,5}和<span> $ </ span> y <span> $ </ span>是{1,2,4}。我们定义了这些论点<span> $ </ span> f(1)= 1 <span> $ </ span><span> $ </ span> f(3)= 2 <span> $ </ span><span> $ </ span> f(5)= 4 <span> $ </ span>。其他客观值在相邻点之间线性插值。第一对和最后一对点每个定义光线,所以指定的值<span> $ </ span> x <span> $ </ span>值从这些点外推。因此,在我们的示例中,<span> $ </ span> f(-1)= 0 <span> $ </ span><span> $ </ span> f(6)= 5 <span> $ </ span>

更正式,一套<span> $ </ span> n <span> $ </ span>

\ begin {displaymath} \ mathtt {x} = \ {x_1,\ ldots,x_n \},\ quad \ mathtt {y} = \ {y_1,\ ldots,y_n \} \ neg {displaymath}

定义以下分段 - 线性函数:

\ begin {displaymath} f(v)= \ left \ {\ begin {array} {ll} y_1 + \ frac {y_2-y_1} {x_2-y_1} {x_2-y_1} {x_2-y_1} {x_2-y_1} {x_2-y_1} {x_2-y_1},&x__n),&\ mathrm {如果} \;v \ ge x_n。\ [7pt] \结束{array} \右。\结束{displaymath}

<span> $ </ span> x <span> $ </ span>条目必须以非减少顺序出现。两点可以具有相同的<span> $ </ span> x <span> $ </ span>坐标 - 这对于指定目标函数中的离散跳转非常有用。

注意,分段线性目标可以改变模型的类型。具体地,包括在连续模型中的非凸分段线性物镜函数将将该模型变为MIP。这可以显着提高解决模型的成本。

为变量设置分段线性物镜将设置OBJ属性在该变量上为0.同样,设置obj.属性将删除该变量上的分段线性目标。

每个变量都可以具有自己的分段线性目标函数。即使多个变量共享相同的功能,也必须单独指定它们。

空白 setpwlobj. GRBVAR. var,
双倍的[] X,
双倍的[] y)
    设置变量的分段线性目标函数。

    论点:

    var.:设置目标函数的变量。

    X: 这<span> $ </ span> x <span> $ </ span>定义分段线函数的点的值。必须处于非减少秩序。

    y: 这<span> $ </ span> y <span> $ </ span>定义分段线函数的点的值。