分段线性函数和分步函数

描述与调度有关的分段线性函数和分步函数。

在 CP Optimizer 中,分段线性函数通常用于对已知时间函数建模,例如,已知日期 t 之后完成某个活动所引起的成本。分步函数通常用于对资源在一段时间内的效率建模。

分段线性函数 F(t) 由元组 F = piecewise(S, T, t0, v0) 定义,其中:

pwl_func

有关分段线性函数的 OPL 语法的完整描述,请参阅《OPL 语言快速参考》中的 piecewisepwlFunction

分步函数是分段线性函数的一种特殊情况,其中,所有斜率都等于 0,F 的域和映像是整数。 分步函数 F(t) 由元组 F = stepwise(V, T) 定义,其中:

sw_func

有关分步线性函数的 OPL 语法的完整描述,请参阅《OPL 语言快速参考》中的 stepwisestepFunction

示例

  • V 形函数,在 x = 10 处值为 0,在 x = 10 之前斜率为 -1,之后斜率为 s

    pwlFunction F1 = piecewise{ -1->10; s } (10, 0);

  • 按照 [1..n] 中的 i 编制索引的 V 形函数数组,其中在 T[i] 处值为 0,在 T[i] 之前斜率为 −U[i],之后斜率为 V [i]TUV 是数据整数数组):

    pwlFunction F[i in 1..n] = piecewise{ -U[i]->T[i]; V[i] } (T[i],0);

  • 分步函数,0 之前值为 0,[0, 20) 期间值为 100,[20, 30) 期间值为 60,之后值为 100:

    stepFunction F2 = stepwise{ 0->0; 100->20; 60->30; 100 };

  • 分步函数,在 [0, 51] 中的 i 的区间 [7i, 7i+5) 中,值为 100,除此之外的其余位置处值为 0:

    stepFunction F3 = stepwise(i in 0..51, p in 0..1) { 100*p -> (7*i)+(5*p) ; 0 };

下图描述了上述分段和分步函数。

函数