qsopt_-ex的python绑定,一个精确的线性规划求解器

python-qsoptex的Python项目详细描述


Build StatusPyPI badge

用法

python模块还没有公开库的完整接口 但只有足够的资源来构建问题或加载 文件中的问题并解决它。求解后,的值 可以获得变量,如下所示。

这些值将作为fractions.Fraction返回,或者(如果 是一个整数)int。同样,当构建问题时 参数可以是fractions.Fractionint(或任何 其他numbers.Rational)或任何可以转换为 Fraction使用Fraction构造函数(即floatDecimal等)。

importqsopteximportlogginglogging.basicConfig(level=logging.DEBUG)p=qsoptex.ExactProblem()p.add_variable(name='x',objective=2,lower=3.5,upper=17.5)p.add_variable(name='y',objective=-1,lower=None,upper=2)p.add_linear_constraint(qsoptex.ConstraintSense.EQUAL,{'x':1,'y':1},rhs=0)p.set_objective_sense(qsoptex.ObjectiveSense.MAXIMIZE)p.set_param(qsoptex.Parameter.SIMPLEX_DISPLAY,1)status=p.solve()ifstatus==qsoptex.SolutionStatus.OPTIMAL:print('Optimal solution')print(p.get_objective_value())print(p.get_value('x'))

模块还可以从外部文件加载问题:

p=qsoptex.ExactProblem()p.read('netlib/cycle.mps',filetype='MPS')# 'LP' is also supportedp.set_param(qsoptex.Parameter.SIMPLEX_DISPLAY,1)status=p.solve()

已知问题

当使用qsopt_ex库创建问题时,变量和 如果 用户。变量将命名为xNx_N,约束将命名为 cNc_N(其中N是整数)。如果用户稍后添加 使用已在使用的名称的变量或约束 新变量或约束将由qsopt_ex自动更改 图书馆。例如,下面代码的最后一行将删除 问题的第一个约束,而不是第二个。

p=qsoptex.ExactProblem()p.add_variable(name='x',objective=2,lower=3.5,upper=17.5)p.add_variable(name='y',objective=-1,lower=None,upper=2)p.add_linear_constraint(qsoptex.ConstraintSense.EQUAL,{'x':1,'y':1},rhs=0)p.add_linear_constraint(qsoptex.ConstraintSense.LESS,{'x':1},rhs=15,name='c1')# Deletes the first constraint, not the secondp.delete_linear_constraint('c1')

通过始终为变量和 约束,或者避免使用与qsopt_ex用作默认值相同的名称 名字。

建筑

模块要求安装qsopt_ex库。目前, 在https://github.com/jonls/qsopt-ex处需要修改的版本 版本2.5.10.3或更高版本。

使用setup.py构建扩展。安装脚本基于 setuptools

$ ./setup install

如果gnump或qsopt_ex安装在非标准位置,则包括 并且可以使用环境变量设置库路径

  • gnump:GMP_INCLUDE_DIRGMP_LIBRARY_DIR
  • qsopt_ex:QSOPTEX_INCLUDE_DIRQSOPTEX_LIBRARY_DIR

例如,如果gnump安装在/opt/local前缀中

$ GMP_INCLUDE_DIR=/opt/local/include GMP_LIBRARY_DIR=/opt/local/lib \
        ./setup.py install

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
尝试通过java驱动程序连接时,mongodb服务器上的SSLhandshake失败   使用PlayFramework的Azure网站中的java Logback   java在另一个ArrayList中使用ArrayList处理复杂的JSON响应   java无法在另一台机器上运行eclipse tomcat中的war文件   java GZIPOutputStream有什么替代方案吗?   java Nashorn调试在Nashorn中运行的javascript   java文本短信未发送,即使toast显示已发送   java Hibernatesearch 5.0 spatial不确定是否在散列中存储lat/lon   java我想创建一个带有文本视图的计数器   java安卓:如何正确地同步资源   java使用mockito。当不知道方法调用的参数时   firebase Java使用HTTP v1发送错误字符的中文通知   java Hibernate无法映射到表?   java使用对象映射器解析复杂JSON   java Selenium Grid 2并行测试用例执行   java所有项目在列表视图中重复