找回密码
 注册
Simdroid-非首页
查看: 82|回复: 0

这是我写的一个优化程序,疑问在最后,希望各位高手能给解

[复制链接]
发表于 2012-7-22 11:50:34 | 显示全部楼层 |阅读模式 来自 安徽合肥
悬赏10仿真币未解决
目标函数文件
function f=myfun(x)
z(1)=x(8)*x(9)*x(12)/(2*cos(x(13)/57.3));
z(2)=x(12)*(x(8)+x(8)*x(9))/(2*cos(x(13)/57.3));
z(3)=x(3)/2;
y(1)=z(1)+z(2)+z(3);
y(2)=x(1)*x(6)/(2*cos(x(7)/57.3));
y(3)=(x(3)+x(10))/2;
f=y(1)*y(2)*y(3);
变量的取值范围文件
     x0=[38;0.55;73.5;30;20;3.5;30.22;59;0.48;56;49;2;23.5];
       a=zeros(26,13);
       a=[-1 0 0 0 0 0 0 0 0 0 0 0 0;
           1 0 0 0 0 0 0 0 0 0 0 0 0;
          0 -1 0 0 0 0 0 0 0 0 0 0 0;
          0 1 0 0 0 0 0 0 0 0 0 0 0;
          0 0 -1 0 0 0 0 0 0 0 0 0 0;
          0 0 1 0 0 0 0 0 0 0 0 0 0;
          0 0 0 -1 0 0 0 0 0 0 0 0 0;
          0 0 0 1 0 0 0 0 0 0 0 0 0;
          0 0 0 0 -1 0 0 0 0 0 0 0 0;
          0 0 0 0 1 0 0 0 0 0 0 0 0;
          0 0 0 0 0 -1 0 0 0 0 0 0 0;
          0 0 0 0 0 1 0 0 0 0 0 0 0;
          0 0 0 0 0 0 -1 0 0 0 0 0 0;
          0 0 0 0 0 0 1 0 0 0 0 0 0;
          0 0 0 0 0 0 0 -1 0 0 0 0 0;
          0 0 0 0 0 0 0 1 0 0 0 0 0;
          0 0 0 0 0 0 0 0 -1 0 0 0 0;
          0 0 0 0 0 0 0 0 1 0 0 0 0;
          0 0 0 0 0 0 0 0 0 -1 0 0 0;
          0 0 0 0 0 0 0 0 0 1 0 0 0;
          0 0 0 0 0 0 0 0 0 0 -1 0 0;
          0 0 0 0 0 0 0 0 0 0 1 0 0;
          0 0 0 0 0 0 0 0 0 0 0 -1 0;
          0 0 0 0 0 0 0 0 0 0 0 1 0;
          0 0 0 0 0 0 0 0 0 0 0 0 -1;
          0 0 0 0 0 0 0 0 0 0 0 0 1];
       b=[-31;46;-0.45;0.67;-58.8;88.2;-24;36;-16;24;-2.8;4.2;-24.18;36.27;-47;71;-0.38;0.57;-44.8;67.2;-39.2;58.8;-1.6;2.4;-18.8;28.2];
      [x,fval]=fmincon(@myfun1,x0,a,b,[],[],[],[],@confun)
约束条件文件
function[c,ceq]=confun(x)
c(1)=0.46-(2*x(4)*sin(atan(1/x(2))/57.3))/x(3);
c(2)=(2*x(4)*sin(atan(1/x(2))/57.3))/x(3)-1.12;
c(3)=0.26-(2*x(11)*cos(x(13)/57.3))/(x(12)*(x(8)+x(8)*x(9)));
c(4)=(2*x(11)*cos(x(13)/57.3))/(x(12)*(x(8)+x(8)*x(9)))-1.13;
c(5)=0.11-x(4)*x(6)^(-1)*((x(1)^2+(x(1)*x(2))^2)^0.5)^(-1);
c(6)=x(4)*x(6)^(-1)*((x(1)^2+(x(1)*x(2))^2)^0.5)^(-1)-0.37;
c(7)=17-x(2)*x(1);
c(8)=x(2)*x(1)-26;
c(9)=23-x(9)*x(8);
c(10)=x(9)*x(8)-34;
c(11)=0.12*x(3)-x(5);
c(12)=x(5)-0.2*x(3);
ceq=[];
matlab中最终的显示结果
x =

   38.0000
  -13.0182
   43.8601
   50.9240
   20.0000
    3.5000
   30.2200
   59.0000
    0.4800
   56.0000
   49.0000
    2.0000
   23.5000


fval =

  5.6879e+005

我疑惑的是最终的各个x的取值中 -13.0182  43.8601 50.9240,而我在变量的取值范围内对这三个值设定的范围分别是0.45到0.67  58.8到88.2   24到36  而其他的x值都在我设定的范围内,很疑惑  我自己新学  好久都没找到原因,谢谢各位了

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Simapps系列直播

Archiver|小黑屋|联系我们|仿真互动网 ( 京ICP备15048925号-7 )

GMT+8, 2024-10-3 06:48 , Processed in 0.030626 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表