3 个版本 (重大变更)
使用旧的 Rust 2015
0.3.0 | 2018年5月29日 |
---|---|
0.2.0 | 2018年5月29日 |
0.1.0 | 2018年5月28日 |
#28 在 #高级研究
每月下载 27 次
14KB
96 行
实用程序设计:一个用于组合式实用程序设计的库。
此库由 AdvancedResearch 社区提供。
简介
实用程序设计可以被认为是一种具有软约束的编程形式。不是明确编程规则,而是将解决方案的各个方面分配一个效用。然后,优化算法生成和修改对象以最大化效用。
实用程序设计的优点是,一种特性可以与其他特性进行交换。通过调整各种特性的效用权重,可以修改优化对象以适应新标准,而无需重写算法。
实用程序设计与其他类型的机器学习的不同之处在于以下方面
- 目标是开发基于一组通用抽象的可重用组合组件
- 子组件的效用通常用于高级组件的策略中
- 效用不是被视为最终目标,而是被视为优化和学习的技巧
- 要优化的对象是虚拟的
- 假设优化过程具有很少的副作用
这些属性导致通过调整效用而更加关注编程方面。
从库的角度来看,找到相互交互良好的效用定义是 API 设计者的挑战。
设计
实用程序设计的抽象由3部分组成
Utility
特性(由测量某些效用的对象实现)Generator
特性(由生成某种对象的对象实现)Modifier
特性(由修改其他对象的对象实现)
所有特性都针对 Vec<T>
实现,其中 T
实现了该特性
Vec<T: Utility>
求每个子效用的效用总和Vec<T: Generator>
随机选择一个生成器来生成对象Vec<T: Modifier>
随机选择一个修改器来修改对象
通常使用enum
而不是struct
来将变体与Vec<T>
结合。
修改需要undo
和redo
来回溯和复制。
效用认识论
认识论是知识哲学。效用认识论是效用知识哲学。
效用优化包括3个主要效率级别
- 对象生成(盲目效用)
- 修改(目标效用)
- 权衡预测(启发式效用)
优化解是上述3个级别的结果。用于评估效用的所有信息都存储在感兴趣的物体中。这意味着可以通过效用参数、生成器和修改器来预测优化解的某些方面。
第一级运行的优化代理需要具有最优的创造性行为。它能够想到给定问题可能的所有可能性。
第二级运行的优化代理需要具有工具理性行为。它能够以最有效的方式最大化其目标。
第三级运行的优化代理需要具有禅理性行为。它能够预测如果效用不同,优化解可能看起来像什么。
开发效用编程工具的一个动机是研究禅理性。
依赖项
~390KB