#实用 #编程 #优化 #高级研究 #AI

advancedresearch-utility_programming

用于组合式实用程序设计的库

3 个版本 (重大变更)

使用旧的 Rust 2015

0.3.0 2018年5月29日
0.2.0 2018年5月29日
0.1.0 2018年5月28日

#28#高级研究

每月下载 27

MIT 许可证

14KB
96

实用程序设计:一个用于组合式实用程序设计的库。

此库由 AdvancedResearch 社区提供。

简介

实用程序设计可以被认为是一种具有软约束的编程形式。不是明确编程规则,而是将解决方案的各个方面分配一个效用。然后,优化算法生成和修改对象以最大化效用。

实用程序设计的优点是,一种特性可以与其他特性进行交换。通过调整各种特性的效用权重,可以修改优化对象以适应新标准,而无需重写算法。

实用程序设计与其他类型的机器学习的不同之处在于以下方面

  • 目标是开发基于一组通用抽象的可重用组合组件
  • 子组件的效用通常用于高级组件的策略中
  • 效用不是被视为最终目标,而是被视为优化和学习的技巧
  • 要优化的对象是虚拟的
  • 假设优化过程具有很少的副作用

这些属性导致通过调整效用而更加关注编程方面。

从库的角度来看,找到相互交互良好的效用定义是 API 设计者的挑战。

设计

实用程序设计的抽象由3部分组成

  • Utility 特性(由测量某些效用的对象实现)
  • Generator 特性(由生成某种对象的对象实现)
  • Modifier 特性(由修改其他对象的对象实现)

所有特性都针对 Vec<T> 实现,其中 T 实现了该特性

  • Vec<T: Utility> 求每个子效用的效用总和
  • Vec<T: Generator> 随机选择一个生成器来生成对象
  • Vec<T: Modifier> 随机选择一个修改器来修改对象

通常使用enum而不是struct来将变体与Vec<T>结合。

修改需要undoredo来回溯和复制。

效用认识论

认识论是知识哲学。效用认识论是效用知识哲学。

效用优化包括3个主要效率级别

  1. 对象生成(盲目效用)
  2. 修改(目标效用)
  3. 权衡预测(启发式效用)

优化解是上述3个级别的结果。用于评估效用的所有信息都存储在感兴趣的物体中。这意味着可以通过效用参数、生成器和修改器来预测优化解的某些方面。

第一级运行的优化代理需要具有最优的创造性行为。它能够想到给定问题可能的所有可能性。

第二级运行的优化代理需要具有工具理性行为。它能够以最有效的方式最大化其目标。

第三级运行的优化代理需要具有禅理性行为。它能够预测如果效用不同,优化解可能看起来像什么。

开发效用编程工具的一个动机是研究禅理性

依赖项

~390KB