我有一个音频处理应用程序,它获取输入音频文件,对其进行处理,然后输出修改后的输出音频文件。这个音频处理应用程序有10-15个参数,这些参数影响它如何处理音频,从而影响输出音频文件的内容(例如,它可能具有不同的频率响应,更大,更安静,等等)。所有这些参数都有受限制的范围(例如,x0必须小于1和> -1 )。
输出的音频文件由一个工具进行评估,并给出一个分数。这个工具知道“理想”的输出应该是什么样的,并相应地对输出文件进行评分。分数为1.0表示输出是理想的,即使用最佳参数集处理输入文件。得分为0表示输出完全错误。
因此,对于10-15个参数及其有效范围,组合是无穷无尽的!我会一直坐在这里手动调整这些参数,直到我得到最好的解决方案。我已经检查了一些LP/MIP解算器(CBC,MS Solver Foundation,GKLP),但这些解算器使用数学方程作为目标函数。据我所知,您不会“插入”外部求值函数。
LP/MIP求解器是辅助参数调整的正确工具吗?有什么想法吗?
谢谢,
akevan
发布于 2011-08-06 01:33:59
您可以使用通用启发式算法,如模拟退火或遗传算法。您的评估过程将是适应度/目标函数。
发布于 2011-08-06 01:30:13
如果您有目标函数,那么LP将是理想的方法(并且会给出理想的答案);解决方案将是纯解析的。但是在没有函数的情况下,似乎你已经正确地理解了这个问题变成了一个整数规划问题。我对整数规划的知识较少,但我认为它也需要一个目标函数来解决。即使使用函数integer programs are NP-hard也是如此。
因此,您似乎需要使用暴力来检测局部最大值,然后对其进行调整。我知道这正是你不想做的事情,但这正是你脑海中浮现的。
发布于 2012-11-30 04:22:59
您可以使用SPOT包(R编程语言)。它允许您使用比蛮力少得多的运行次数来查找(接近)最佳参数设置。你可以使用任何编程语言编写你的健身函数代码,SPOT提供了一个适配器,并提供了默认设置的自动模式(你不必担心设计类型和预测模型)。它有一个陡峭的学习曲线,但一旦你理解了基础知识,它就是一个强大的工具。Here是一个快速指南;第2.6章提供了一个具体的示例。SPOT包附带了几个示例。
https://stackoverflow.com/questions/6959928
复制相似问题