OperantKit

Build Status Swift platform MIT License CocoaPods Carthage compatible Swift Package Manager compatible

OperantKit 是一个用 Swift 编写的用于操作性条件反射 (工具性条件反射) 实验的工具包。

日本語:jp:: README_JP.md

用法

import OperantKit
import RxSwift

func main() {
	let schedule = FR(5) // Fixed ratio 5 schedule
	let events: Observable<Void> = ... // Observable events
	schedule.decision(events)
		.filter { $0.isReinforcement } // Filtering responses of reinforcement
		.subscribe(onNext: {
			print("Reinforcement")
		})
		.disposed(by: DisposeBag())
}

示例

支持的程序表

简单程序表

固定程序表

程序表名称 代码
固定比率程序表 FR(5)
可变比率程序表 VR(5)
随机比率程序表 RR(5)

※ 默认情况下,可变程序表的迭代次数为 "12",

VR(10, iterations: 12)

也可以更改迭代次数等等。

间隔程序表

程序表名称 代码
固定间隔程序表 FI(5)
可变间隔程序表 VI(5)
随机间隔程序表 RI(5)

时间间隔默认为 .seconds

FI(5, unit: .minutes)

也可以以某种方式更改单位。

时间程序表

程序表名称 代码
固定时间程序表 FT(5)
可变时间程序表 VT(5)
随机时间程序表 RT(5)

时间间隔默认为 .seconds

FI(5, unit: .minutes)

也可以以某种方式更改单位。

其他程序表

程序表名称 代码
连续强化 CRF()
消退程序表 EXT()

复合程序表

程序表名称 代码
并发程序表 Conc(FR(5), VI(10))

※ 当一个通用程序表应用于两个或多个操作数类型时,例如并发链接程序表中的内部链接,可以使用 Shared() 关键字来处理。例如:Conc(Shared(VI(10)))

安装

CocoaPods

将此添加到你的 Podfile

pod 'OperantKit'

并且

$ pod install

Carthage

将此添加到你的 Cartfile

github "YutoMizutani/OperantKit"

并且

$ carthage update

Swift Package Manager

将此添加到你的 Package.swift

dependencies: [
    .package(url: "https://github.com/YutoMizutani/OperantKit.git", "0.0.1" ..< "1.0.0"),
]

并且

$ swift build

依赖

文档

请参阅 https://yutomizutani.github.io/OperantKit/

操作性条件反射 (工具性条件反射)

整洁架构

响应式编程

开发安装

克隆此仓库,

$ git clone https://github.com/YutoMizutani/OperantKit.git

然后使用 make 命令,

$ make deps-all
$ make open

参考

作者

Yuto Mizutani, yuto.mizutani.dev@gmail.com

捐赠

我的“动力”完全由连续强化 (FR1) 程序表控制 :)

许可证

OperantKit 在 MIT 许可证下可用。