声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 3069|回复: 4

[1stopt] 求助,优化问题,希望好心人帮帮忙,谢谢

[复制链接]
发表于 2011-4-8 15:21 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
最近在做一个优化问题,用matlab写的程序如下:
lb=[17,6,250,23.5,17.5];%设计变量下限
ub=[40,20,400,26.5,21.5];%设计变量上限
x0=[27,13,370,25.22,21.78];%变量初始值
options=optimset('LargeScale','off','display','off');
[x,fval,exitflag,output]=fmincon(@mubiao,x0,[],[],[],[],lb,ub,@yueshu,options)

约束条件 yueshu.m
function [C,Ceq]=yueshu(x)
zp=((4.333*x(1)*cosd(x(4))-(x(1)*cosd(x(5))))/(cosd(x(4))+cosd(x(5))))
zr=(4.333*x(1));
as=(acosd((x(1)*cosd(22.5))/(x(1)+2.8)));
ap=(acosd((zp*cosd(22.5))/(zp+2.8)));
ar=(acosd((zr*cosd(22.5))/(zr+2.8)));
e1=(((2*pi)^(-1))*(x(1)*(tand(as)-tand(x(4)))+zp*(tand(ap)-tand(x(4)))));
e2=(((2*pi)^(-1))*(zp*(tand(ap)-tand(x(5)))-zr*(tand(ar)-tand(x(5)))));
C(1)=x(1)*(4.333*cosd(x(4))-cosd(x(5)))/cosd(x(4)+cosd(x(5)))*(1-0.5*3^0.5)+3-(0.5*3^0.5)*x(1);
C(2)=0.4-(x(3)/(x(2)*x(1)));
C(3)=(x(3)/(x(2)*x(1)))-0.9;
C(4)=2.33-6.8587*log((2.4998e-004)/(((4.333*x(1)*cosd(x(4))-(x(1)*cosd(x(5))))/(cosd(x(4))+cosd(x(5)))+x(1))/(x(3)*(x(2)^2)*(x(1)^4)*(4.333*x(1)*cosd(x(4))-(x(1)*cosd(x(5))))/(cosd(x(4))+cosd(x(5))))^0.5));
C(5)=2.33-5.4213*log((2.27e-6)*x(3)*(x(2)^2)*x(1));
C(6)=2.33-5.4213*log((1.5895e-6)*x(3)*(x(2)^2)*(4.333*x(1)*cosd(x(4))-(x(1)*cosd(x(5))))/(cosd(x(4))+cosd(x(5))));
C(7)=1.2-e1;
C(8)=1.2-e2;
C(9)=e1-2.7;
C(10)=e2;
Ceq=[]

目标函数 mubiao.m
function f=mubiao(x);
zp=((4.333*x(1)*cosd(x(4))-(x(1)*cosd(x(5))))/(cosd(x(4))+cosd(x(5))))
zr=(4.333*x(1));
as=(acosd((x(1)*cosd(22.5))/(x(1)+2.8)));
ap=(acosd((zp*cosd(22.5))/(zp+2.8)));
ar=(acosd((zr*cosd(22.5))/(zr+2.8)));
e1=(((2*pi)^(-1))*(x(1)*(tand(as)-tand(x(4)))+zp*(tand(ap)-tand(x(4)))));
e2=(((2*pi)^(-1))*(zp*(tand(ap)-tand(x(5)))-zr*(tand(ar)-tand(x(5)))));
f=-(e1+e2)

我算出来的结果 x =

   42.1760   12.7096  370.0277   27.3494   23.6760  超过了变量和约束限制范围,不知道为什么,有人可以帮忙看看么?  
1stopt算的时候总有函数表达式错误是为什么呢?0.4-(x3/(x2*x1))<=0 这样的表达式都有错误为什么呢?
希望大家能帮帮忙,在这里先谢谢了
回复
分享到:

使用道具 举报

 楼主| 发表于 2011-4-10 13:26 | 显示全部楼层
还是没人回答啊。好心人帮帮忙吧
发表于 2011-4-10 21:42 | 显示全部楼层
1stopt好像不支持“acosd”这样的函数吧?
 楼主| 发表于 2011-4-11 12:39 | 显示全部楼层
恩,我的代码是matlab里面的,acosd在1stop里面是arccosh 我改过来了,想问一下,前面那些zp,zr,as,ap等式子怎样才能直接用在约束里面去呢?需要怎么定义一下,好心人帮帮忙看看,谢谢了
发表于 2011-4-11 17:31 | 显示全部楼层
你把完整的1stOpt代码贴出来!
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-23 11:46 , Processed in 0.094376 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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