0

我有一个音频处理应用程序,它接收一个输入音频文件,处理它,并且吐出一个修改后的输出音频文件。这个音频处理应用程序有10-15个参数影响它如何处理音频,从而影响输出音频文件的内容(它可能有不同的频率响应,更响亮,更安静等)。所有这些参数都有约束范围(例如,x0必须是< 1和> -1)。自动参数调整

输出音频文件由一个工具评估得分。该工具知道“理想”输出应该听起来像什么,并相应地对输出文件进行评分。得分为1.0意味着输出是理想的,即输入文件是用尽可能最好的参数集处理的。 0分表示输出完全错误。

因此,有10-15个参数与其有效范围,组合是无止境的!我会坐在这里手动调整这些参数,直到我得到最好的解决方案。我已经检查了一些LP/MIP解算器(CBC,MS Solver Foundation,GKLP),但它们使用一个数学公式作为目标函数......您不会“插入”外部评估函数,只要我能看到。

LP/MIP解算器是帮助参数调整的正确工具吗?有任何想法吗?

感谢,

akevan

回答

1

你可以使用一般的启发式,如模拟退火或遗传算法。您的评估过程将是健身/目标功能。

+0

我现在正在使用模拟退火......特别是从C中的数值食谱第10章开始。这绝对是正确的方法,但我必须找出向算法添加约束的最佳方法。 – akevan

0

如果你有目标函数,然后是LP将是理想的方法(和将给予理想的答案);该解决方案将纯粹是分析性的。但是在没有函数的情况下,似乎你已经正确地理解了这个问题变成了一个整数规划问题。我对整数规划的了解较少,但我相信这也是一个需要解决的目标函数。即使有功能,integer programs are NP-hard

因此,你似乎需要使用蛮力来检测本地最大值,然后调整它。我意识到这正是你不想做的,但是这是想到的。

0

您可以使用SPOT数据包(R编程语言)。它允许您使用明显少于强力的运行来找到(接近)最佳参数设置。你可以为你的健身功能代码使用任何编程语言,SPOT有一个适配器,并提供默认设置的自动模式(你不必担心设计类型和预测模型)。它有一个陡峭的学习曲线,但一旦你了解了基础知识,它就是一个强大的工具。 Here是一个快速指南;第2.6章提供了一个具体的例子。 SPOT包带有几个例子。