kaiwu.common package#
Module contents#
通用工具集合
- kaiwu.common.hamiltonian(ising_matrix, c_list)#
计算哈密顿量.
- 参数:
ising_matrix (np.ndarray) -- Ising 矩阵.
c_list (np.ndarray) -- 要计算哈密顿量的变量组合集合.
- 返回:
哈密顿量集合.
- 返回类型:
np.ndarray
示例
>>> import numpy as np >>> from kaiwu.common import hamiltonian >>> ising_matrix = -np.array([[ 0. , 1. , 0. , 1. , 1. ], ... [ 1. , 0. , 0. , 1., 1. ], ... [ 0. , 0. , 0. , 1., 1. ], ... [ 1. , 1., 1. , 0. , 1. ], ... [ 1. , 1., 1. , 1. , 0. ]]) >>> c_list = np.array([[1, 1, 1, 1, 1], [1, -1, 1, -1, 1]]) >>> h = hamiltonian(ising_matrix, c_list)
- kaiwu.common.check_symmetric(mat, tolerance=1e-08)#
检查矩阵是否为对称矩阵,允许一定误差
- kaiwu.common.set_log_level(level)#
设置SDK日志输出级别
SDK默认输出INFO级别以上的日志,可通过此函数修改输出级别
- 参数:
level (str or int) -- 支持传入 logging.ERROR, logging.INFO、... 、logging.ERROR或字符串ERROR、INFO、... 、ERROR
示例
>>> import kaiwu as kw >>> kw.common.set_log_level(level="DEBUG")
- kaiwu.common.set_log_path(path='/tmp/output.log')#
设置SDK日志输出文件路径, 需要绝对路径.
- 参数:
path (str) -- 自定义日志文件输出路径
示例
>>> import kaiwu as kw >>> kw.common.set_log_path("/tmp/output.log")
- class kaiwu.common.CheckpointManager#
基类:
object管理 checkpoint, 保存对象的运行状态,用于后续断点处恢复运行 通过设置 CheckpointManager.save_dir,可以指定 checkpoint 的保存目录。
- 参数:
save_dir (str) -- checkpoint 的保存目录。
- save_dir = None#
- classmethod get_path(obj)#
获取对象checkpoint的路径
- 参数:
obj (Object) -- 保存的对象
- 返回:
checkpoint路径
- 返回类型:
str
- classmethod load(obj)#
加载串行化的对象
- 参数:
obj (Object) -- 保存的对象
- 返回:
json dict形式的对象
- 返回类型:
str
- classmethod dump(obj)#
对象串行化后存储在磁盘上
- 参数:
obj (Object) -- 保存的对象
- 返回:
None
- class kaiwu.common.BaseLoopController(max_repeat_step=inf, target_objective=-inf, no_improve_limit=inf, iterate_per_update=5)#
-
循环控制器,并计算时间。用于调试和测试算法
- 参数:
max_repeat_step -- 最大步数,默认值为math.inf
target_objective -- 目标优化函数,达到即停止,默认值为-math.inf
no_improve_limit -- 收敛条件,指定更新次数没有改进则停止,默认值为math.inf
iterate_per_update -- 每次更新哈密顿量前运行的次数,默认值为5
- update_status(objective, unsatisfied_constraints_count=None)#
在计算子问题后更新状态
- 参数:
objective (float) -- 目标函数值
unsatisfied_constraints_count (int) -- 未满足约束项的数量
- is_finished()#
判断是否应该停止
- 返回:
是否应该停止
- 返回类型:
bool
- restart()#
重新初始化计数
- to_json_dict(exclude_fields=('timer',))#
转化为json字典
- 返回:
json字典
- 返回类型:
dict
- load_json_dict(json_dict)#
从json文件读取的dict恢复对象
- 返回:
json字典
- 返回类型:
dict
- class kaiwu.common.OptimizerLoopController(max_repeat_step=inf, target_objective=-inf, no_improve_limit=20000, iterate_per_update=5)#
-
Optimizer循环控制器,并计算时间。用于调试和测试算法
- 参数:
max_repeat_step -- 最大步数,默认值为math.inf
target_objective -- 目标优化函数,达到即停止,默认值为-math.inf
no_improve_limit -- 收敛条件,指定更新次数没有改进则停止,默认值为20000
iterate_per_update -- 每次更新哈密顿量前运行的次数,默认值为5
- is_finished()#
判断是否应该停止
- 返回:
是否应该停止
- 返回类型:
bool
- load_json_dict(json_dict)#
从json文件读取的dict恢复对象
- 返回:
json字典
- 返回类型:
dict
- restart()#
重新初始化计数
- to_json_dict(exclude_fields=('timer',))#
转化为json字典
- 返回:
json字典
- 返回类型:
dict
- update_status(objective, unsatisfied_constraints_count=None)#
在计算子问题后更新状态
- 参数:
objective (float) -- 目标函数值
unsatisfied_constraints_count (int) -- 未满足约束项的数量
- class kaiwu.common.SolverLoopController(max_repeat_step=inf, target_objective=-inf, no_improve_limit=inf, iterate_per_update=5, stop_after_feasible_count=None)#
基类:
BaseLoopController,JsonSerializableMixinSolver循环控制器,并计算时间。用于调试和测试算法
- 参数:
max_repeat_step (int) -- 最大步数,默认值为math.inf
target_objective (float) -- 目标优化函数,达到即停止,默认值为-math.inf
no_improve_limit (int) -- 收敛条件,指定更新次数没有改进则停止,默认值为20000
iterate_per_update (int) -- 每次更新哈密顿量前运行的次数,默认值为5
stop_after_feasible_count (int) -- 找到指定数量的可行解后停止
- update_status(objective, unsatisfied_constraints_count=None)#
在计算子问题后更新状态
- 参数:
objective (float) -- 目标函数值
unsatisfied_constraints_count (int) -- 未满足约束项的数量
- is_finished()#
判断是否应该停止
- 返回:
是否应该停止
- 返回类型:
bool
- load_json_dict(json_dict)#
从json文件读取的dict恢复对象
- 返回:
json字典
- 返回类型:
dict
- restart()#
重新初始化计数
- to_json_dict(exclude_fields=('timer',))#
转化为json字典
- 返回:
json字典
- 返回类型:
dict
- class kaiwu.common.JsonSerializableMixin#
基类:
object序列化器
- to_json_dict(exclude_fields=('_optimizer',))#
转化为json字典
- 返回:
json字典
- 返回类型:
dict
- load_json_dict(json_dict)#
从json文件读取的dict恢复对象
- 返回:
json字典
- 返回类型:
dict
- class kaiwu.common.HeapUniquePool(mat, size, size_limit)#
-
解集。使用堆来进行维护
- extend(solutions)#
插入多个解
- push(solution, hamilton)#
添加一个解
- get_solutions()#
返回维护的解,个数为self.size_limit
- clear()#
清空解集
- to_json_dict(exclude_fields=None)#
转化为json字典
- 返回:
json字典
- 返回类型:
dict
- load_json_dict(json_dict)#
从json文件读取的dict构造HeapUniquePool对象
- 参数:
json_dict (dict) -- json字典
- 返回:
对象实例
- 返回类型:
- class kaiwu.common.ArgpartitionUniquePool(mat, size, size_limit)#
基类:
object解集。使用argpartition的线性期望复杂度k小值来进行维护
- extend(solutions, final=False)#
插入多个解
- get_solutions()#
获取解集
- clear()#
清空解集
- to_json_dict()#
转化为json字典
- 返回:
json字典
- 返回类型:
dict
- classmethod from_json_dict(json_dict)#
从json文件读取的dict构造HeapUniquePool对象
- 参数:
json_dict (dict) -- json字典
- 返回:
对象实例
- 返回类型: