hudu11111 发表于 2009-10-19 20:05

约束函数返回复数

function =myconfun(x)
w=-(3*pi/4)+acos((x(4)^2+x(5)^2-(x(3)+((-x(1))^2+x(2)^2)^ (1/2))^2)/(2*x(4)*x(5)));
weq=[];
处错误,说约束条件必须返回时数
怎么回事
帮助看下该怎么改

VibrationMaster 发表于 2009-10-19 20:23

w 究竟等于多少时出的错?

friendchj 发表于 2009-10-19 23:42

回复 楼主 hudu11111 的帖子

如果返回的是复数,acos后面的值超出了[-1,1]的范围,请检查一下x的取值是否合适。

hudu11111 发表于 2009-10-20 13:18

回复 板凳 friendchj 的帖子

目标函数可以随便给,在ga工具箱中输入下面的边界值就会出错,可是我把上下边界带入都不返回复数,是程序在优化时自动取到了一些数使结果为复数吗?
A= ;
b=;
lb= ;
ub=;

hudu11111 发表于 2009-10-22 09:09

回复 板凳 friendchj 的帖子

你好,按照你所说的约束acos后面的范围,我在w=【】里面直接约束的,这样还是不行,是不是在约束函数约束的条件不能对其他的约束条件起到作用

friendchj 发表于 2009-10-22 13:08

回复 5楼 hudu11111 的帖子

没有ga工具箱,不太清楚,你可以对acos取实部,看看程序能正确运行吗

hudu11111 发表于 2009-10-23 09:11

回复 6楼 friendchj 的帖子

你好,不用功工具箱用ga命令也可以,我试了,确定是acos后面的问题,现在我的问题就是怎么对约束函数的表达式在进行约束,和他并列在一起写约束表达式好像还是不行啊

yufeng 发表于 2009-10-23 09:50

约束一般采用惩罚因子方法

hudu11111 发表于 2009-10-27 20:00

几天没来,沉了好久了,仍未解决,自己顶起,希望多多帮忙
页: [1]
查看完整版本: 约束函数返回复数