​以下代码段定义一个SCIP程序变量:

def addVar( self, name = '', vtype = 'C', lb = 0.0, ub = None, obj = 0.0, pricedVar=False )

缺省状态下为非负且连续。其中:
param name: 变量名称,可以为空,缺省为:’’
param vtype: 变量类型,默认为:‘C’(连续型),其他可选:‘I’(整数型)、‘B’(0/1变量)
param lb: 变量下界,None表示负无穷,缺省为0.0
param ub: 变量上界,None表示正无穷,缺省为None
param obj: objective value of variable (Default value = 0.0)
param pricedVar: is the variable a pricing candidate? (Default value = False)

如果需要改变变量的上下界,可以使用以下函数进行修改:

def tightenVarLb( self, Variable, var, lb, force=False )

如果设置的新下界更紧,则在预处理节点或当前节点中收紧下界。其中:
param var: 需要重新设置下界的SCIP变量
param lb: 新的下界
param force: force tightening even if below bound strengthening tolerance
return: 两个布尔值组成的元组:(infeasible, tightened)
infeasible: 新域为空时,返回True;新域不为空时,返回False
tightened: 新域更紧时,返回True;否则返回False

def tightenVarLbGlobal( self, Variable, var, lb, force=False )

如果设置的新下界更紧,收紧全局下界。其中:
param var: 需要重新设置下界的SCIP变量
param lb: 新的下界
param force: force tightening even if below bound strengthening tolerance
return: 两个布尔值组成的元组:(infeasible, tightened)
infeasible: 新域为空时,返回True;新域不为空时,返回False
tightened: 新域更紧时,返回True;否则返回False

def tightenVarUb( self, Variable, var, ub, force = False )

如果设置的新上界更紧,则在预处理节点或当前节点中收紧上界。其中:
param var: 需要重新设置上界的SCIP变量
param ub: 新的上界
param force: force tightening even if below bound strengthening tolerance
return: 两个布尔值组成的元组:(infeasible, tightened)
infeasible: 新域为空时,返回True;新域不为空时,返回False
tightened: 新域更紧时,返回True;否则返回False

def tightenVarUbGlobal   ( self, Variable, var, ub, force = False )

如果设置的新上界更紧,收紧全局上界。其中:
param var: 需要重新设置上界的SCIP变量
param ub: 新的上界
param force: force tightening even if below bound strengthening tolerance
return: 两个布尔值组成的元组:(infeasible, tightened)
infeasible: 新域为空时,返回True;新域不为空时,返回False
tightened: 新域更紧时,返回True;否则返回False

def fixVar( self, Variable, var, val )

将SCIP变量Variable的值固定为val。其中:
param Variable var: 需要固定数值的SCIP变量
param val: 目标固定数值
return: 两个布尔值组成的元组:(infeasible, fixed)

def chgVarLbGlobal   ( self, Variable, var, lb )

更改指定变量的全局下界。其中:
param Variable var: 需要更改全局下界的变量
param lb: 新的下界 ,None表示负无穷

def chgVarUbGlobal   ( self, Variable, var, ub )

更改指定变量的全局上界。其中:
param Variable var: 需要更改全局上界的变量
param ub: 新的下界 ,None表示正无穷

def delVar( self, Variable, var )

删除一个SCIP变量。其中:
param var: 需要删除的SCIP变量
return: 返回一个布尔值,True:删除成功;False:删除失败

def chgVarType( self, Variable, var, vtype )

更改SCIP变量的类型。其中:
param Variable var: 需要更改类型的SCIP变量
param vtype: 新的变量类型

下面引用一个官方测试程序,给予说明:

from pyscipopt import Modeldef test_variablebounds():m = Model()x0 = m.addVar(lb=-5, ub=8)r1 = m.addVar()r2 = m.addVar()y0 = m.addVar(lb=3)t = m.addVar(lb=None)z = m.addVar()m.chgVarLbGlobal(x0, -2)m.chgVarUbGlobal(x0, 4)infeas, tightened = m.tightenVarLb(x0, -5)assert not infeas # infeas -> Falseassert not tightened # tightened -> Falseinfeas, tightened = m.tightenVarLbGlobal(x0, -1)assert not infeas # infeas -> Falseassert not tightened # tightened -> Trueinfeas, tightened = m.tightenVarUb(x0, 3)assert not infeas # infeas -> Falseassert not tightened # tightened -> Trueinfeas, tightened = m.tightenVarUbGlobal(x0, 9)assert not infeas # infeas -> Falseassert not tightened # tightened -> Falseinfeas, fixed = m.fixVar(z, 7)assert not infeas # infeas -> Falseassert fixed # fixed -> Truem.addCons(r1 >= x0)m.addCons(r2 >= -x0)m.addCons(y0 == r1 +r2)m.setObjective(t)m.addCons(t >= r1 * (r1 - x0) + r2 * (r2 + x0))m.optimize()print("x0", m.getVal(x0)) # -> 3.0print("r1", m.getVal(r1)) # -> 2.9999999956421113print("r2", m.getVal(r2)) # -> 0.0print("y0", m.getVal(y0)) # -> 2.9999999956421113print("t", m.getVal(t)) # -> -2.9991714960825667e-07print("z", m.getVal(z)) # -> 7.0def test_vtype():m = Model()x = m.addVar(vtype= 'C', lb=-5.5, ub=8)y = m.addVar(vtype= 'I', lb=-5.2, ub=8)z = m.addVar(vtype= 'B', lb=-5.2, ub=8)w = m.addVar(vtype= 'M', lb=-5.2, ub=8)assert x.vtype() == "CONTINUOUS"assert y.vtype() == "INTEGER"assert z.vtype() == "BINARY"assert w.vtype() == "IMPLINT"m.chgVarType(x, 'I')assert x.vtype() == "INTEGER"m.chgVarType(y, 'M')assert y.vtype() == "IMPLINT"if __name__ == "__main__":test_variablebounds()test_vtype()

References

[1] Maher, S., Miltenberger, M., Pedroso, J. P., Rehfeldt, D., Schwarz, R., & Serrano, F. (2016, July). PySCIPOpt: Mathematical programming in python with the SCIP optimization suite. In International Congress on Mathematical Software (pp. 301-307). Springer, Cham.

PySCIPOpt常用函数功能介绍(一)相关推荐

  1. 【Pytorch】常用函数功能介绍和注意事项

    [持续更新中-] 数据预处理 Variable from torch.autograd import Variable 作用:自动微分变量,用于构建计算图 网络层定义 torch.nn.BatchNo ...

  2. setsockopt()函数功能介绍

    setsockopt()函数功能介绍 功能描述:获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层. 用法: #include <sys/types.h ...

  3. setsocketopt()函数功能介绍

    本文转自与启云的setsocketopt()函数功能介绍 setsocketopt()函数功能介绍 功能描述:获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字 ...

  4. 【工具小技巧】Cadence Virtuoso Calculator Function Panel计算器函数功能介绍(持续更新……)

    在使用cadence virtuoso仿真过程中我们经常会关注一些电路指标,比如:运放的增益.带宽.相位裕度:bandgap的温漂系数.振荡器的振荡频率等.想要直观的知道这些指标的具体值,需要用到计算 ...

  5. Qt QString类及常用函数功能详解

    QString 是 Qt 编程中常用的类,除了用作数字量的输入输出之外,QString 还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能. QString 存储字符串釆用的是 Un ...

  6. PowerBuilder常用函数功能和用法解析

    郭宝利先生在他的帮助文档里总结的一个系统用到的所有函数,他们也是软件开发中常用的,为了方便查阅,我把这些函数按照字母顺序进行了整理并添加了使用方法,方便我和一些其他的初学者学习使用: 1.Accept ...

  7. tf.pad函数功能介绍

    tf.pad()函数主要是对张量在各个维度上进行填充,该函数的参数如下所示: pad(tensor,paddings,mode='CONSTANT',name=None ) 其中: tensor是待填 ...

  8. C++ vector 使用方法(各种常用函数的介绍)

    一.vector的基础介绍 0.数组基础 一维数组与多维数组,是C++中最常用的系列存储工具,数组的常规使用的基础上,STL的中自带多种升级版的容器与基础函数,vector则是其中一款. 1.vect ...

  9. EXCEL表格常用函数功能汇总

    1.相对引用与绝对引用 相对引用:引用单元格的相对地址,即引用单元格的位置关系是相对的,默认情况下,新公式使用的是相对引用.填充柄无论向上,向下,向左,向右拖动,它会引用它相对位置的内容. 绝对引用: ...

最新文章

  1. 监督学习-逻辑回归及编程作业(一)
  2. java B2B2C 源码多租户电子商城系统-Spring Cloud组件详解...
  3. 基于深度学习和机器学习的心电图智能分析参赛总结
  4. linux服务器查询vdc等等,Linux云服务器
  5. 一个edit的学习笔记
  6. ORACLE数据库管理工具EM
  7. 媒体播放控件的引入 0131
  8. 失去循环标记的Python,我这样实现跳出外层循环
  9. 学地球物理的如何搞好软件开发
  10. 详解mysql事务_详解MySQL执行事务的语法和流程
  11. php 持久化对象,php-对类持久化的引用
  12. Oracle ora01410,一次ORA-01410故障的解决
  13. python︱大规模数据存储与读取、并行计算:Dask库简述
  14. 特征图注意力_CV注意力机制论文阅读笔记
  15. hdu 3926 hands in hands
  16. 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_07-CMS需求分析-SSI服务端包含技术...
  17. 显示硬件发展与视频开发系列(4)----移动时代
  18. Spring Boot - Mybatis 缓存
  19. HPE comms CTO:我们的单位在增长,即使我们的客户不是
  20. HTML+CSS实现动态效果相册

热门文章

  1. csr8675高通qcc5125修改蓝牙的usb声卡的ID方法
  2. 杭州市发布:印发数据中心优化布局建设意见 新建数据中心PUE值不高于1.4
  3. 2019-12-03 Python3 作业 爬取豆瓣读书所有出版商信息
  4. 利用MATLAB编写单位冲激函数,熟悉MATLAB软件的相关函数的使用方法各种信号的时域波形.doc...
  5. margin-right右边距失效:CSS
  6. sap查询所有事物代码
  7. 16Aspx.com-书通网中小学生免费在线学习网站源码 带采集带手机版帝国cms内核
  8. Doris的基本概述
  9. rime|小狼毫 敏感词过滤效果
  10. 吴式太极拳老架(原乐志先生授)(2008.04.09修改)