Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/loveboyme/inventoryoptimizer

使用遗传算法,对 Minecraft 玩家背包物品进行偏好性排序。| Utilizing genetic algorithms to perform preference-based sorting of items in a Minecraft player's inventory.
https://github.com/loveboyme/inventoryoptimizer

ai algorithm automatic based bukkit genetic inventory item management minecraft optimization plugin preference smart sort sorting spigot

Last synced: 5 days ago
JSON representation

使用遗传算法,对 Minecraft 玩家背包物品进行偏好性排序。| Utilizing genetic algorithms to perform preference-based sorting of items in a Minecraft player's inventory.

Awesome Lists containing this project

README

        

# 📦 InventoryOptimizer ⚙️

✨ **智能优化你的 Minecraft 背包!** ✨

InventoryOptimizer 是一款 Bukkit 插件,利用遗传算法来学习你的物品使用习惯,并智能地重新排列你的背包,让你常用的物品触手可及!再也不用在杂乱的背包里翻箱倒柜啦!

## 🌟 主要特性

* **🧠 智能学习:** 插件会默默观察你的物品交互行为,学习你常用的物品以及你习惯放置它们的位置。
* **🧬 遗传算法优化:** 基于你的使用习惯,使用强大的遗传算法找出最优的背包排列方案。
* **🪄 一键优化:** 只需一个命令 ` /optimize `,即可让插件为你整理背包。
* **🛠️ 可配置性:** 可以自定义遗传算法的参数,如种群大小、变异率等,以适应不同的优化需求。
* **📊 数据驱动:** 插件会存储玩家的物品使用数据,以便进行更精准的优化。
* **🔔 学习完成通知:** 当插件完成学习后会通知玩家,可以开始使用优化功能。

## ⚙️ 工作原理

1. **数据收集:** 当玩家与背包物品交互时(如点击、移动物品),插件会记录物品的使用频率和偏好放置的槽位。
2. **遗传算法应用:** 当玩家执行 `/optimize` 命令时,插件会:
* **初始化种群:** 创建多个随机的背包排列方案。
* **评估适应度:** 根据玩家的学习数据(物品使用频率和槽位偏好),评估每个排列方案的“好坏”。
* **选择:** 选择适应度较高的排列方案作为“父母”。
* **交叉:** 将“父母”的排列方案进行组合,产生新的“后代”排列方案。
* **变异:** 对部分“后代”排列方案进行随机调整,引入多样性。
* **迭代:** 重复选择、交叉和变异过程多次,不断进化,直到找到最优的背包排列。
3. **应用优化:** 将找到的最优背包排列应用到玩家的背包中。

## 🛠️ 安装

1. 将 `InventoryOptimizer.jar` 文件放入你的 Bukkit/Spigot 服务器的 `plugins` 文件夹中。
2. 重启你的服务器。

## 🎮 使用方法

* **`/optimize`**: 执行此命令来优化你的背包。插件会根据你的学习数据,自动排列你的物品。

## ⚙️ 配置

插件的配置文件位于 `plugins/InventoryOptimizer/config.yml`。你可以修改以下选项:

```yaml
# 遗传算法参数
genetic_algorithm:
population_size: 50 # 每一代的个体数量
mutation_rate: 0.05 # 基因变异的概率 (0.0 到 1.0)
elite_size: 5 # 保留的精英个体数量

# 学习阶段参数
learning_threshold: 200 # 玩家需要进行多少次物品交互后才认为学习完成
learning_check_interval: 300 # (秒) 定期检查玩家学习状态的间隔
```

- **genetic_algorithm.population_size**: 遗传算法中每一代产生的候选背包排列方案的数量。数值越大,搜索空间越大,可能找到更优解,但计算时间也会增加。
- **genetic_algorithm.mutation_rate**: 在遗传算法中,新的背包排列方案发生随机变化的概率。较高的变异率可以引入更多多样性,但也可能破坏好的排列。
- **genetic_algorithm.elite_size**: 每一代中保留的适应度最高的个体数量,这些个体将直接进入下一代,保证优秀基因的传承。
- **learning_threshold**: 玩家需要进行多少次物品交互(拾取、放置、移动物品等)后,插件才会认为学习完成,并允许使用 /optimize 命令。
- **learning_check_interval**: 插件每隔多少秒检查一次在线玩家的学习状态,如果达到学习阈值,则通知玩家学习完成。

## 🤝 贡献

欢迎提交 Issues 和 Pull Requests!如果你有任何改进建议或者发现了 bug,请在 GitHub 上提出。

## 📄 许可证

本项目使用 [MIT License](https://www.google.com/url?sa=E&q=LICENSE)。