自动参数调整

时间:2011-08-05 17:01:31

标签: c# .net optimization constraint-programming ms-solver-foundation

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

输出音频文件由一个工具评估,该工具为其提供分数。此工具知道“理想”输出应该是什么样的,并相应地对输出文件进行评分。得分为1.0表示输出是理想的,即输入文件使用最佳可能的参数集进行处理。得分为0表示输出完全错误。

因此,10-15个参数及其有效范围,组合无穷无尽!我会坐在这里手动调整这些参数,直到我得到最好的解决方案。我已经检查了一些LP / MIP求解器(CBC,MS Solver Foundation,GKLP),但这些使用数学方程作为目标函数......就我所见,你不会“插入”外部评估函数

LP / MIP求解器是否是帮助参数调整的正确工具?有什么想法吗?

谢谢,

akevan

3 个答案:

答案 0 :(得分:1)

你可以使用像模拟退火或遗传算法这样的通用启发式算法。您的评估过程将是健身/目标函数。

答案 1 :(得分:0)

如果你有目标函数,那么是LP将是理想的方法(并且会给出理想的答案);解决方案纯粹是分析性的。但是在缺少函数的情况下,您似乎正确地理解了问题变成了整数编程问题。我对整数编程知之甚少,但我相信这也是一个客观函数需要解决的问题。即使使用函数integer programs are NP-hard

因此,您似乎需要使用蛮力来检测局部最大值,然后进行调整。我意识到这正是你不想做的事情,但这就是我想到的。

答案 2 :(得分:0)

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