grbsetpwlobj.
grbsetpwlobj.
int | grbsetpwlobj.( | grbmodel. | *模型, |
int | var, | ||
int | npoints, | ||
双倍的 | *X, | ||
双倍的 | * y) |
设置变量的分段线性目标函数。
此方法的参数指定了一个点列表,用于为单个变量定义分段 - 线性目标函数。具体来说,这是和参数为函数的顶点提供坐标。
例如,假设我们希望to define the functionshown below:
更正式,一套点
define the following piecewise-linear function:
这条目必须以非减少顺序出现。两点可以具有相同的坐标 - 这对于指定目标函数中的离散跳转非常有用。
注意,分段线性目标可以改变模型的类型。具体地,包括在连续模型中的非凸分段线性物镜函数将将该模型变为MIP。这可以显着提高解决模型的成本。
为变量设置分段线性物镜将设置OBJ属性在该变量上为0.同样,设置obj.
属性将删除该变量上的分段线性目标。
每个变量都可以具有自己的分段线性目标函数。即使多个变量共享相同的功能,也必须单独指定它们。
注意,由于我们的延迟更新方法,实际上不会添加新的分段线性目标,直到更新模型(使用grbupdatemodel.), optimize the model (usinggrboptimize.)或将模型写入磁盘(使用grbwrite.)。
返回值:
非零返回值表示设置分段线性目标时发生问题。参考错误代码表格有可能返回值列表。有关错误的详细信息可以通过呼叫获得grbgeterramsg.。
论点:
模型:修改模型。
var.:更改其目标函数的变量。
npiotts.:定义分段 - 线性函数的点数。
X: 这定义分段线函数的点的值。Must be in non-decreasing order.
y: 这定义分段线函数的点的值。
Example usage:
双X [] = {1,3,5};双y [] = {1,2,4};ERROR = GRBSETPWLOBJ(型号,var,3,x,y);