F# 和模糊逻辑

Posted

技术标签:

【中文标题】F# 和模糊逻辑【英文标题】:F# and Fuzzy Logic 【发布时间】:2011-05-17 01:02:23 【问题描述】:

我知道这听起来可能很奇怪,但我想知道在 Microsoft Visual F# 正在进入的这个新世界中的一件事。 这种语言有很多应用,我要学习,关于解析、函数式编程、结构化编程……但是人工智能呢?

模糊逻辑有什么应用吗? F# 是用于模糊逻辑应用程序的好语言吗?

在大学里,我们正在学习 Prolog 和类似的语言。 Prolog 能够以非常简单和简短的表达式创建复杂的查询(通过利用谓词和事实)。 F# 能做到这一点吗?

提前谢谢你。

【问题讨论】:

【参考方案1】:

模糊逻辑。 F# 没有提供任何类型来实现开箱即用的模糊逻辑计算,但在这个域中使用 F# 肯定是可能的。 F# 的简洁性和定义自定义重载运算符的能力应该使基于模糊逻辑的代码非常好。我快速搜索了一下,发现了几篇在 F# 中实现模糊逻辑的文章:

Fuzzy Logic in F#, Example 1 FuzzyAdvisor - A Simple Fuzzy Logic Expert System in F#

Prolog 是一个有点不同的问题。 Prolog 的强大(也是弱点)来自于它直接在语言中内置的回溯。这使得实现基于回溯的搜索算法非常好,但它也是一个限制。

F# 不直接支持回溯,但使用 recursion(这是 F# 和 Prolog 中的主要控制流机制)编写基于回溯的算法非常容易。

此外,还可以实现领域特定语言以在 F# 中进行逻辑编程。这意味着您将在 F# 中实现类似 Prolog 的东西,然后在 F# 中使用这种迷你语言编写搜索算法(可能根据需要使用其他 F# 功能)。你可以在this question找到更多类似问题的信息。

【讨论】:

谢谢...我已经看过你找到的文章,但只是想从其他人那里得到关于这个论点的意见。我还认为 F# 是一个非常强大的工具,因为这些天我将在其中发现... :) 嗯,感谢您的参考和为回答我的问题所做的努力。 啊,抱歉,还有一个问题……你说的使用迷你语言是什么意思? 我想补充一点,虽然我没有在我的博客中探讨它,但 F# 将是试验模糊逻辑的并行实现(包括使用图形适配器的实现)的绝佳选择。 F# 在这方面并不是独一无二的,但它确实提供了将并行性与特定领域语言相结合的绝佳机会。 另外,你可能想看看我在 GitHub 上的 Fuzzy 库:github.com/dsevastianov/FSharp.Fuzzy【参考方案2】:

F# 是一种通用语言,具有一些不错的语言特性,例如计算表达式/Monad 和引用。您可以假设它的功能与 C# 大致相同。

它不像 Matlab 或 R,其中内置了许多预先实现的库。如果您想从头开始实现模糊逻辑库或其他 AI 算法,F# 对您来说是一门非常好的语言,因为它的语言特性让生活更轻松。

但是如果你只是想使用一个模糊逻辑库,那么使用其他语言或专门的系统会更合适,因为 F# 或 .Net 通常在这方面没有质量非常好的库。

【讨论】:

谢谢尹朱...我希望 F# 有一些用于模糊的库,但即使没有也可以...好在我可以在 f# 中为模糊。嗯,我会试试的。再次感谢。

以上是关于F# 和模糊逻辑的主要内容,如果未能解决你的问题,请参考以下文章

模糊逻辑

使用模糊逻辑连接两个数据集

java中的模糊逻辑

模糊逻辑中范围约束的目的

模糊控制介绍

使用 Python 对大数据集进行模糊逻辑