这是什么类型的优化问题?

数据挖掘 优化 matlab
2022-03-03 00:21:34

我们有一个可变形镜子,由 40 个执行器控制,输入电压从 -1V 到 1V。在撞击反射镜之前,光脉冲进入衍射光栅,然后光按波长在反射镜上传播。每个致动器对每个波长应用不同的相移。最后,光线重新会聚并由 CCD 读取。

我们的目标是最大化 CCD 读取的光谱相对于 40 个可变电压的积分。此优化将在 matlab 中完成。我主要只需要知道这是什么类型的问题......

该程序将执行以下操作:

  1. 测量频谱并积分
  2. 将新光谱输入到优化工具箱中。
  3. 输出一组新的电压试试
  4. 回到 1

由于我们的设置总是在变化,因此可能存在多个局部最大值,并且位置会每天变化。任何有关在哪里寻找更多信息的帮助将不胜感激!

2个回答

某种进化算法可能很适合您的问题,因为:

  • 目标函数的梯度不可用或无法计算。
  • 目标函数本身的计算成本有点高。
  • 目标函数可能有大量的局部最大值。

简而言之,进化算法通过生成候选解决方案并迭代地进行优化:

  1. 检查它们的“适合度”(目标函数的值)
  2. 选择最佳候选解决方案
  3. 以某种方式基于上一次迭代中的最佳候选者生成新的候选解决方案

自然,问题在于如何选择和组合最佳候选解决方案以生成新的候选解决方案的细节。这产生了大量的进化算法变体。两个流行的变体是遗传算法和进化策略。

遗传算法

标准遗传算法实现要求您以二进制方式对输入变量进行编码。这对于分类输入可能很好,但您的输入变量在区间中采用实际值。可以为您的问题实现遗传算法,但这并不理想。对于你的问题,我来看看...[1,1]

进化策略

另一方面,进化策略通过设计处理实值输入,并且在习惯了行话之后,相当容易实现。您提到您计划使用 MATLAB 进行优化。我在 FEX 上找到了这个工具箱,它实现了进化策略,但我自己并没有把它拿来试驾。无论如何,考虑到问题的动态性质,我认为进化策略是一个不错的选择。

对我来说,这听起来像是一个强化学习问题:

  • 这是一个具有非线性交互的高维输入空间
  • 从系统获取信息的唯一方法是使用它
  • 考虑到激光/光学设置的所有复杂性,它的行为是时间相关的
  • 短期和长期奖励之间存在相互作用(多个局部最大值与全局最大值)

您可以搜索“强化学习 matlab”和“马尔科夫决策过程”以获取一些可用的项目和教程。