如何使用优化变量确定数学函数?

时间:2019-03-19 19:37:17

标签: matlab optimization nonlinear-optimization

我有一个开放变量,可以通过基本算术确定其他三个参数。

opening = optimvar('opening','LowerBound', -30, 'UpperBound', 30);
opening_zero_geo_def = -(e+temp_thickness)/2;
geo_def_des_load = -opening + opening_zero_geo_def;
geo_def_rebound = geo_def_des_load - rebound;
geo_def_jounce = geo_def_des_load + m_2_m_clear;
po_k = (design_load/spring_rate)+geo_def_des_load;
po_kl = po_k/spring_length;

两个参数geo_def_jounce和geo_def_rebound用于形成域。

 h = .1
 travel = geo_def_rebound:h:geo_def_jounce;

目标是使用po_kl和另一个参数选择将要操纵值的函数。

例如

if po_kl is close to .7
     rate = .5*travel^3 
 if po_kl is close to .3 
     rate = .1*travel^3 + .4*travel^2
(pseudo code)
然后,对多项式应用多项式拟合,并计算拟合的均方根误差,RMSE是最小化目标。

我的问题是如何做到这一点。我已经尝试按照Alan Weiss(https://www.mathworks.com/matlabcentral/answers/374059-how-can-i-set-an-optimization-variable-to-be-an-element-of-a-set-categorical)的建议使用整数优化变量作为索引,但这无法正常工作,因为MATLAB给出了一个错误,即优化变量不能用作索引。

我还尝试过仅传递所有内容,而不考虑它是一个optimvar,这也不起作用,因为optimvar不能用作条件语句。

我认为这可能是非线性的,然后我将不得不采用基于求解器的方法,但我不确定。

0 个答案:

没有答案