PySCIPOpt常用函数功能介绍(一)
以下代码段定义一个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常用函数功能介绍(一)相关推荐
- 【Pytorch】常用函数功能介绍和注意事项
[持续更新中-] 数据预处理 Variable from torch.autograd import Variable 作用:自动微分变量,用于构建计算图 网络层定义 torch.nn.BatchNo ...
- setsockopt()函数功能介绍
setsockopt()函数功能介绍 功能描述:获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字层. 用法: #include <sys/types.h ...
- setsocketopt()函数功能介绍
本文转自与启云的setsocketopt()函数功能介绍 setsocketopt()函数功能介绍 功能描述:获取或者设置与某个套接字关联的选项.选项可能存在于多层协议中,它们总会出现在最上面的套接字 ...
- 【工具小技巧】Cadence Virtuoso Calculator Function Panel计算器函数功能介绍(持续更新……)
在使用cadence virtuoso仿真过程中我们经常会关注一些电路指标,比如:运放的增益.带宽.相位裕度:bandgap的温漂系数.振荡器的振荡频率等.想要直观的知道这些指标的具体值,需要用到计算 ...
- Qt QString类及常用函数功能详解
QString 是 Qt 编程中常用的类,除了用作数字量的输入输出之外,QString 还有很多其他功能,熟悉这些常见的功能,有助于灵活地实现字符串处理功能. QString 存储字符串釆用的是 Un ...
- PowerBuilder常用函数功能和用法解析
郭宝利先生在他的帮助文档里总结的一个系统用到的所有函数,他们也是软件开发中常用的,为了方便查阅,我把这些函数按照字母顺序进行了整理并添加了使用方法,方便我和一些其他的初学者学习使用: 1.Accept ...
- tf.pad函数功能介绍
tf.pad()函数主要是对张量在各个维度上进行填充,该函数的参数如下所示: pad(tensor,paddings,mode='CONSTANT',name=None ) 其中: tensor是待填 ...
- C++ vector 使用方法(各种常用函数的介绍)
一.vector的基础介绍 0.数组基础 一维数组与多维数组,是C++中最常用的系列存储工具,数组的常规使用的基础上,STL的中自带多种升级版的容器与基础函数,vector则是其中一款. 1.vect ...
- EXCEL表格常用函数功能汇总
1.相对引用与绝对引用 相对引用:引用单元格的相对地址,即引用单元格的位置关系是相对的,默认情况下,新公式使用的是相对引用.填充柄无论向上,向下,向左,向右拖动,它会引用它相对位置的内容. 绝对引用: ...
最新文章
- 监督学习-逻辑回归及编程作业(一)
- java B2B2C 源码多租户电子商城系统-Spring Cloud组件详解...
- 基于深度学习和机器学习的心电图智能分析参赛总结
- linux服务器查询vdc等等,Linux云服务器
- 一个edit的学习笔记
- ORACLE数据库管理工具EM
- 媒体播放控件的引入 0131
- 失去循环标记的Python,我这样实现跳出外层循环
- 学地球物理的如何搞好软件开发
- 详解mysql事务_详解MySQL执行事务的语法和流程
- php 持久化对象,php-对类持久化的引用
- Oracle ora01410,一次ORA-01410故障的解决
- python︱大规模数据存储与读取、并行计算:Dask库简述
- 特征图注意力_CV注意力机制论文阅读笔记
- hdu 3926 hands in hands
- 阶段5 3.微服务项目【学成在线】_day01 搭建环境 CMS服务端开发_07-CMS需求分析-SSI服务端包含技术...
- 显示硬件发展与视频开发系列(4)----移动时代
- Spring Boot - Mybatis 缓存
- HPE comms CTO:我们的单位在增长,即使我们的客户不是
- HTML+CSS实现动态效果相册
热门文章
- csr8675高通qcc5125修改蓝牙的usb声卡的ID方法
- 杭州市发布:印发数据中心优化布局建设意见 新建数据中心PUE值不高于1.4
- 2019-12-03 Python3 作业 爬取豆瓣读书所有出版商信息
- 利用MATLAB编写单位冲激函数,熟悉MATLAB软件的相关函数的使用方法各种信号的时域波形.doc...
- margin-right右边距失效:CSS
- sap查询所有事物代码
- 16Aspx.com-书通网中小学生免费在线学习网站源码 带采集带手机版帝国cms内核
- Doris的基本概述
- rime|小狼毫 敏感词过滤效果
- 吴式太极拳老架(原乐志先生授)(2008.04.09修改)