一个简单的约束满足求解器
pyconstraints的Python项目详细描述
pyconstraints
===
一个简单的、满足约束的问题求解器。用于[yacs][]课程
计划程序项目。
[yacs]:http://github.com/jeffh/yacs
usage
----
>问题是主界面:
>;
,然后指定要用各种约束解决的问题:
>;>;gt;gt;p.添加变量('x',范围(4));变量名,域
>;gt;p.添加变量('y',范围(4))
=y,['x,'y','y']
>>gt;p.添加约束条件(lambda x:x%2==0)
>然后得到你的解决方案:
>
>;p.获取解决方案:
>;p.获取解决方案:
>;({'y':0,'x''x':2},
{'y''y''1,'x''x''y''x''y''x''x''y''x''x''y''x''x''y''y''y''x''x''x''x''y''y''x''y''35;{'y':2,'x':0},
{'y':3,'x':0},
{'y':3,“x”:2})
使用另一个解算器
---------
只需将解算器传递给问题构造函数:
>;>;从pyconstraints导入bruteforcesolver,backtrackingsolver
>;>;p=问题(backtrackingsolver());bruteforcesolver是默认值
,因为bruteforcesolver使用itertools在某些情况下,它可能比backtrackingsolver快。
“返回解算器当前看到的解的数目。”
@abstractproperty
def solutions_at_points(self):
“返回迭代时所有已知解的{iteration_index:solution}字典。
“
@abstractmethod
def set_conditions(self,variables,约束:
“由problem类调用,为问题分配变量和约束。
variables={variable name:list of domain values}
constraints=[(constraint_function,
variable names,
默认变量值]
“
@abstractmethod
def restore_point(self,起始点=无):
“将迭代状态还原到给定的起始点。”
@abstractmethod
def save_au point(self):
“返回数据以指示还原到当前迭代点的方法。”解决方案。“
但是为了方便起见,您可以从“pyconstraints.solverbase”类继承,该类为所有接口方法提供了基本实现,除了为“iter”和“set”条件“
”提供了基本实现。
todo
----
-加快回溯解算器的速度
-添加更多解算器?
===
一个简单的、满足约束的问题求解器。用于[yacs][]课程
计划程序项目。
[yacs]:http://github.com/jeffh/yacs
usage
----
>问题是主界面:
>;
,然后指定要用各种约束解决的问题:
>;>;gt;gt;p.添加变量('x',范围(4));变量名,域
>;gt;p.添加变量('y',范围(4))
=y,['x,'y','y']
>>gt;p.添加约束条件(lambda x:x%2==0)
>然后得到你的解决方案:
>
>;p.获取解决方案:
>;p.获取解决方案:
>;({'y':0,'x''x':2},
{'y''y''1,'x''x''y''x''y''x''x''y''x''x''y''x''x''y''y''y''x''x''x''x''y''y''x''y''35;{'y':2,'x':0},
{'y':3,'x':0},
{'y':3,“x”:2})
使用另一个解算器
---------
只需将解算器传递给问题构造函数:
>;>;从pyconstraints导入bruteforcesolver,backtrackingsolver
>;>;p=问题(backtrackingsolver());bruteforcesolver是默认值
,因为bruteforcesolver使用itertools在某些情况下,它可能比backtrackingsolver快。
“返回解算器当前看到的解的数目。”
@abstractproperty
def solutions_at_points(self):
“返回迭代时所有已知解的{iteration_index:solution}字典。
“
@abstractmethod
def set_conditions(self,variables,约束:
“由problem类调用,为问题分配变量和约束。
variables={variable name:list of domain values}
constraints=[(constraint_function,
variable names,
默认变量值]
“
@abstractmethod
def restore_point(self,起始点=无):
“将迭代状态还原到给定的起始点。”
@abstractmethod
def save_au point(self):
“返回数据以指示还原到当前迭代点的方法。”解决方案。“
但是为了方便起见,您可以从“pyconstraints.solverbase”类继承,该类为所有接口方法提供了基本实现,除了为“iter”和“set”条件“
”提供了基本实现。
todo
----
-加快回溯解算器的速度
-添加更多解算器?