为surrogateopt实现参数约束

3视图(30天)
你好,
我想要运行一个优化使用surrogateopt和我有约束,某些参数不能小于其他人。所以,我想其他方法我约束函数是这样的(?):
params = [param1 param2、param3 param4]
函数测查[c] = simple_constraint (params)
c = (params(2)参数(1);
参数(4)参数(3)];
测查= [];
结束
据我理解surrogateopt目标函数的约束集。
什么是最好的方法来实现这些参数的约束目标函数值是独立的?
只是设置和任意高值作为目标函数的值?所以,是这样的:
函数f = objFun_surrogateopt(参数)
如果参数(2)>参数(1)| | params (4) > params (3)
f。Fval = 1000;
其他的
f。Fval = objFun(参数);
结束
f。Ineq = (params(2)参数(1);
参数(4)参数(3)];
结束
或者有更聪明和更有效的方式吗?
我期待任何提示就如何改善这种!

接受的答案

艾伦·韦斯
艾伦·韦斯 2021年10月29日
答案取决于你的MATLAB版本。随着 发布说明 在R2021a节目,介绍了线性约束,在R2020a initroduced非线性约束。
  • R2021a或之后,参数(2)> =参数(1)相当于线性约束
一个= (1 1 0 0 0);
b = 0;%这意味着x(1) -(2) < = 0,或者x (1) < = x (2)
  • R2020a或R2020b,约束表示为一个非线性不等式约束:
函数F = objcon (x)
F。Ineq x = x (1) - (2);
F。Fval =%你的目标函数
结束
艾伦·韦斯
MATLAB数学工具箱文档
3评论

登录置评。

更多的答案(0)

类别

找到更多的在代理优化帮助中心文件交换

s manbetx 845


释放

R2020b

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!