在做数值仿真的过程中,需要求解包含上下限为决策变量的目标函数的最优值,需求如下:
其中qr为决策变量。
设置qr为sdpvar,x为syms后,所得到的目标函数表达式仍为sym,因而无法通过optimize函数直接调用cplex求解。
syms x;
sdpvar qr;
F = int((x-qr)*exp(x),0,qr);
输出:
class(F)
ans =
'sym'
为解决这一问题,我前往yalmip官网搜索积分相关的表达案例,随后发现解决办法,如下:
sdpvar x qr;
F = int((x-qr)*exp(x),x,0,qr);
同时设置两个sdp变量,并在int中指定对x求积分,进而获得sdp形式的目标函数表达式F(qr)。
class(F)
ans =
'sdpvar'
解决方法其实很简单,但是由于一开始对int函数不够了解,因此一直没能想到如何去表达带积分的sdpvar类型的函数。在此将问题和解决思路记录下来,希望能够对大家有所帮助。