我有一个优化问题。 我的目标函数是线性函数,它是:
f=h(1)+h(2)+h(3)+h(4)+h(5)
其中h(i)=t(i+1)-t(i)
我的约束是非线性的:
v_{ji}-v_{max,j}<=0
和a_{ji}-a_{max,j}<=0
,其中
for m=1:6
for i=2:4
v_{ji}=abs(((ddq(m,i+1)*(t(i+1)-time(j))^2)/(2*h(i)))+((ddq(m,(i+3))*(time(j)-t(i))^2)/h(i))+((path(m,i+1)/h(i))-(h(i)*ddq(m,(i+3)))/6)-((path(m,i)/h(i))-(h(i)*(ddq(m,i+1))/6)))-v_{max,j};
end
end
和
for m=1:6
for i=2:4
a_{ji}=abs(((ddq(m,(i+2))/h(i))*(time(j)-t(i)))-((ddq(m,i+1)/h(i))*(time(j)-t(i+1))))-a_max(j);
end
end
时间(j)是t(i)和t(i + 1)之间的随机值。我使用fmincon函数来获取优化的h
值,其中我将选项设置为:
options=optimset('Algorithm','sqp','Display','iter','DiffMinChange',1e-6,'DiffMaxChange',1e-1,'TolFun',1e-10,'TolX',1e-16,'MaxFunEvals',10000,'MaxIter',250);
当我运行代码时,我得到了不同初始值的不同结果,例如:
for h_0=[1 1 1 1 1], h=[0.052 0.087 0.104 0.007 0.002]
for h_0=[0.5 0.5 0.5 0.5 0.5], h=[0.020 0.059 0.106 0.011 0.003]
for h_0=[0.1 0.1 0.1 0.1 0.1], h=[0.017 0.05 0.107 0.017 0.042]
我还试图用active-set
和interior-point
算法解决同样的问题,从active set
获得的值是
for h_0=[0.1 0.1 0.1 0.1 0.1], h=[0.094 0.106 0.1 0.1 0.1]
并且它不适用于不同的值。
内点算法也不起作用,我无法得到任何结果。
我的问题是: 1.为什么每个不同的初始值得到不同的结果? 2.为什么其他算法不适用于这个问题? 3.如果我必须更改算法哪个最适合这个问题,为什么?