【发布时间】:2017-09-28 16:40:38
【问题描述】:
我正在尝试在 Matlab 中 fmincon 的帮助下优化具有 1500 个变量(瞬时相位)的非线性函数。对最佳变量的约束是获得的最佳变量中连续元素之间的差异应该大于0。如何在成本函数中实现这一点?我使用了非线性约束:
function [c,ceq] = insta_freq(phase)
f=diff(phase);
c=-1*double(min(f));
ceq = [];
优化由:
nonlcon=@insta_freq;
[variable_opt,fval,exitflag,output] = fmincon(fun,ph0,[],[],[],[],[],[],nonlcon,options);
优化应该是约束nonlcon<=0,但在使用fmincon 优化时,这些约束不满足。那么,有没有其他方法可以保证最优变量向量的差值总是大于0呢?
【问题讨论】:
-
您可以在您的函数中添加一个部分,如果违反这些效果,该部分会给出高错误值。我也遇到了 nonlcon 的问题,但我从来没有找到好的解决方案。
-
我试过了。但它再次涉及选择一些我想避免的惩罚项及其参数。总之非常感谢!!
标签: matlab constraints nonlinear-optimization