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 A*(星型)算法|有墙时如何返回?   java我可以在libGDX中使用透视摄影机渲染SpriteBatch吗?   java查找字符串中最长的单词   多种java servlet身份验证方法   java如何将意图从(添加)proximityalert获取到broadcastreceiver?   java如何连接到特定的wifi网络?   java使用jframe在mat中显示图像(OpenCV 3.00)   java获取字符串的偏移量   selenium如何在远程机器上使用java robot类   java Ilegal格式转换问题   java无法在新安装的mac上以调试模式在eclipse中启动应用程序   如何在ubuntu中安装java软件的依赖项。?   加密Bouncy Castle vs Java默认RSA with OAEP   打印printStackTrace方法时,java尝试块开始打印