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

matlab 优化问题 目标函数 非线性约束优化---优化编程请教

[复制链接]
发表于 2017-1-5 10:26:19 | 显示全部楼层 |阅读模式 来自 山东青岛
请大家帮帮忙看下我的目标函数编程对不对,谢谢(约束条件先不管!)

1、目标函数,求速度波动最小值
            
其中 为平均速度
2、设计变量
            X=[ x2, x3, x4,x5,x6, x1,x7,x8,x9,x10]—----我没有按顺序排列,为了方便
3、约束条件

我的问题是:目标函数不太会编程.有几个问题没解决。
我的编程思路:
             第一,求vi
              第二,求
              第三,求目标函数f)。
注意到,vi是时间t的函数,所以每次循环得到的vi不一样
疑问 1目标函数中的 n,如何确定? 是设置循环时间的步长吗?
疑问  2我编写了一个小程序,发现 ,即平均速度不是定值!!
下面是我的程序:请大神帮忙看看,提提改进意见。谢谢
function f=mubiao(x)                           %目标函数名称
syms t
f=0;                                                 %目标函数初值
v01=0;                                              %vi的初值设置为0
%以下程序是求 位移、速度(主要是求速度)
tt=11:0.1:12;                                     %设置循环时间11s-12s,步长0.1,分成10
for j=1:length(tt)                               %第一个for循环
    t=tt(j)
l1=50/1000;                                      %已知条件
d=pi/180;
%%%%以下求速度vi(程序中v8表示)------过程可以不用管

v8=((x(1)/1000))*w61*sin(theta61+x(8))+(x(7)/1000)*w7*sin(theta7);   %得到v8,即目标函数中的vi
%%求速度之和
v01=v01+v8;
End                                                  %第一个for循环结束
v0=v01/10;                                      %求平均速度
%以下求目标函数f
for i=1:length(tt)                            %第二个for循环
     t=tt(i)
v8=(x(1)/1000)*w61*sin(theta61+x(8))+(x(7)/1000)*w7*sin(theta7);
f=f+sqrt((v8-v0)^2/10);            %目标函数f
end                                                           %第二个for循环结束

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

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

GMT+8, 2024-3-29 20:14 , Processed in 0.029639 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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