基于受控词汇表的表达式树构建与翻译

cvexp的Python项目详细描述


cvexp是“受控词汇表达式”的缩写。 python模块,允许抽象语法树(“表达式”)为 构造起来和编写普通的python代码一样简单。名字 抽象语法树中的函数的 词汇表,使用uri作为名称,就像w3c rdf那样。

cvexp的目的是让开发人员更容易 将第三方库集成到python中而不必指定 全新的API。特别关注的图书馆和语言是 计算机代数系统,线性规划和优化(如 lp_solve、glpk和cvxopt)和prolog。

下面是一个求解混合整数线性规划的例子 使用glpk作为后端时出现问题。为了让它起作用,你 显然必须安装必备的python包(即python glpk或 无论如何)因为这些不包括在cvexp中:

from cvexp.builders import var
from cvexp.builders import integer
from cvexp.builders import minimize
from cvexp.translate_glpk import solve

# You could also use lp_solve by doing this:
# from cvexp.translate_lpsolve55 import solve
# ...or you could use CVXOPT like this:
# from cvexp.translate_cvxopt import solve

X = var('X') # the 'X' name is optional
Y = var('Y') # ...and so is 'Y'

# Purely linear programming:
sol = solve((
             Y + 0.1 == X,
             Y >= 9.8 - X,
             minimize(Y),
           ), out_filename='problem.out') # out_filename is optional
print 'X =', sol[X] # >>> 4.95
print 'Y =', sol[Y] # >>> 4.85

# Mixed integer-linear programming:
sol = solve((
             Y + 0.1 == X,
             Y >= 9.8 - X,
             integer(Y),
             minimize(Y),
           ), out_filename='problem.out') # out_filename is optional
print 'X =', sol[X] # >>> 5.1
print 'Y =', sol[Y] # >>> 5

如果使用cvxopt,也可以解决二次规划问题。 例如:

from cvexp.builders import var
from cvexp.builders import integer
from cvexp.builders import minimize
from cvexp.translate_cvxopt import solve

X = var()
Y = var()

sol = solve((
            minimize((X - 5) ** 2 + (Y - 3) ** 2),
           ))
print 'X =', sol[X] # >>> 5.0
print 'Y =', sol[Y] # >>> 3.0

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

推荐PyPI第三方库


热门话题
java我能在这个程序中更好地使用内存吗?   为什么我的Java while循环迭代了一半   java IntelliJ IDEA不在构建时复制资源   socket仅在Java TCP服务器输出上检查客户端断开连接   java游戏物理摩擦   java片段onClick调用方法   symja数学分析器中无法识别java Abs[x]   java在使用泛型时创建二进制搜索树类的实例?   java在外键约束表上的添加和删除   语法java表达式的含义,如果有条件   java创建内联对象并作为参数传递   是否有相当于Redis排序集(zset)的Java数据结构   java找不到适合的方法(无参数)   音频文件操作给定字节帧的音量Java   Eclipse4不以JavaWebStart启动   java如何使用org在JSON对象中获取嵌套的键元素。json?   java与Jackson的反序列化:“org.codehaus.Jackson.map.JsonMappingException:无法反序列化[projectname]的实例。”   字符串的Java正则表达式   spring集成上的java检测缺火指令