我期待创造一个人工智能环境,用户可以提交他们自己的代码为人工智能和让他们竞争。这种语言可以是任何语言,但学习起来容易的东西(比如JavaScript或Python )是首选。
基本上,我看到了三个有几个变体的选项:
if (user.id = 0)
)。我设想2.2的工作方式是这样的:在虚拟机(或其他什么地方)中运行两个a,并限制它只与主机通信(没有其他Internet或LAN访问)。两个人工智能在一个单独的机器中运行,并通过运行在主机上的API相互通信(嗯,与运动场,从而他们看到彼此的位置)。
选项2.2似乎是最可行的,但也相对比较烦琐.我让某个人的代码在一个虚拟化或锁定的环境中释放,希望这能让他们继续工作,同时给他们提供免费的游戏给DoS,或者让他们脱离环境。话又说回来,大多数其他选择也不会更好。
TL;DR:,本质上我的问题是:我如何让人们给我一个AI的“逻辑”(我认为这是最容易使用代码完成的),然后在不损害系统功能的情况下运行它呢?必须有至少2名认可机构在同一运动场上工作。
发布于 2015-07-14 15:22:37
这实际上只是一个插件系统,因此研究其他人如何实现插件是一个很好的起点。特别是,我会看看浏览器,如Chrome和Safari以及他们的插件系统。
在现代插件系统中,一个常见的主题是进程隔离。理想情况下,您应该在沙箱中运行它自己的进程空间中的插件。在OS中,看看XPC,它是针对这个问题明确设计的。在Linux (或者更可移植)上,我可能会查看NaCl (本地客户端)。JVM还被设计为提供沙箱,并提供了丰富的语言选择。(也就是说,我个人并不认为JVM是一个非常强大的沙箱。它有过安全问题的历史。)
总的来说,我对这类项目的偏好是语言无关的API。我经常使用REST (或“REST类”)。这允许插件受到高度限制,同时又不限制语言选择。只要有可能,我就喜欢简单的HTTP通信,因为它在许多语言中都有丰富的支持,所以它对插件没有什么限制。事实上,根据您的描述,您甚至不必在硬件上运行插件(当然也不必在主服务器上运行)。使插件远程客户端消除了许多潜在的问题。
但最终,我认为像你的"2.2“是正确的方向。
https://stackoverflow.com/questions/31410214
复制相似问题