线性目标函数 - 非线性约束对不同初始值的不同结果

时间:2015-10-07 09:47:51

标签: matlab optimization nonlinear-optimization

我有一个优化问题。 我的目标函数是线性函数,它是:

f=h(1)+h(2)+h(3)+h(4)+h(5)

其中h(i)=t(i+1)-t(i)

我的约束是非线性的:

v_{ji}-v_{max,j}<=0a_{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-setinterior-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.如果我必须更改算法哪个最适合这个问题,为什么?

0 个答案:

没有答案