24小时热门版块排行榜    

查看: 1764  |  回复: 17
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

xiashaoyan

新虫 (正式写手)

[求助] 用遗传算法求一个二元函数的最大值是一个复数范围的值,为什么会这样呢? 已有2人参与

求两个二元非线性方程组的解;
方程组为:
     1/x(1)+1/x(2)-1/t3=0,
    sqrt(a1+b1*f+(a2+b2*f)/(t3^2-a3^2)+(a4+b3*f)/(t3^2-a5^2)-a6*t3^2)/t3-sqrt(a1+b1*f+(a2+b2*f)/(X(i,2)^2-a3^2)+(a4+b3*f)/(X(i,2)^2-a5^2)-a6*X(i,2)^2)/X(i,2)-sqrt(a1+b1*f+(a2+b2*f)/(X(i,1)^2-a3^2)+(a4+b3*f)/(X(i,1)^2-a5^2)-a6*X(i,1)^2)/X(i,1)-1/z=0,
    方程中除了x(1),x(2)(是变量),其他参数都是已经的常数,现在我将两个方程转换成求一个函数的极大值 1-f^2-g^2,f为第一个方程组的左边,g为第二个方程组的左边,现在我用的是多种群遗传算法求解上述函数的最大值,但是运行的结果是
Warning: Imaginary parts of complex X and/or Y arguments ignored
> In MPGA at 51
最优值为:449451.5954+2663.266383i
对应的自变量取值:49.9593     0.316498
从结果来看,函数的最大值是449451.5954+2663.266383i,我很纳闷,最大值按理来说是1呀,怎么会是一个复数范围内的数值呢?为什么会出现呢?是因为在实数范围内找不到解吗?求计算的大神求助!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

【答案】应助回帖

★ ★ ★ ★ ★
感谢参与,应助指数 +1
xiashaoyan: 金币+5, ★★★很有帮助 2014-08-21 16:53:14
引用回帖:
10楼: Originally posted by xiashaoyan at 2014-08-21 15:01:34
那能具体说一下方法吗?...


Constant  T=50,
f=(T-24.5)/(T+570.82),
a1=5.319725,
a2=0.09147285,
a3=0.3165008,
a4=100.2028,
a5=11.37639,
a6=0.01497046,
//b1=4.753469*10^-7,
//b2=3.310965*10^-8,
b1=0,
b2=0,
b3=2.760513*10^-5,
t3=1.064,
z=31.5;
Parameters x1, x2, x3, x4, x5;
Function 1/x1+1/x2-1/t3=0;
x5/t3-x4/x2-x3/x1-1/z=0;
x3^2-(a1+b1*f+(a2+b2*f)/(x1^2-a3^2)+(a4+b3*f)/(x1^2-a5^2)-a6*x1^2)=0;
x4^2-(a1+b1*f+(a2+b2*f)/(x2^2-a3^2)+(a4+b3*f)/(x2^2-a5^2)-a6*x2^2)=0;
x5^2-(a1+b1*f+(a2+b2*f)/(t3^2-a3^2)+(a4+b3*f)/(t3^2-a5^2)-a6*t3^2)=0;

优化算法: 粒子群算法CFPSO 1
函数表达式 1: 1/x1+1/x2-1/1.064-(0)
         2: x5/1.064-x4/x2-x3/x1-1/31.5-(0)
         3: x3^2-(5.319725+0*0.0410747076447279+(0.09147285+0*0.0410747076447279)/(x1^2-0.3165008^2)+(100.2028+2.760513e
            -5*0.0410747076447279)/(x1^2-11.37639^2)-0.01497046*x1^2)-(0)
         4: x4^2-(5.319725+0*0.0410747076447279+(0.09147285+0*0.0410747076447279)/(x2^2-0.3165008^2)+(100.2028+2.760513e
            -5*0.0410747076447279)/(x2^2-11.37639^2)-0.01497046*x2^2)-(0)
         5: x5^2-(5.319725+0*0.0410747076447279+(0.09147285+0*0.0410747076447279)/(1.064^2-0.3165008^2)+(100.2028
            +2.760513e-5*0.0410747076447279)/(1.064^2-11.37639^2)-0.01497046*1.064^2)-(0)

目标函数值: 0.000393372471519715
x1: 2.14627793576053
x2: 2.11178358874413
x3: 2.11382505280947
x4: 2.11472993815495
x5: 2.1471740096698
====== 计算结束 ======
11楼2014-08-21 15:36:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 18 个回答

feixiaolin

荣誉版主 (文坛精英)

优秀版主

X(i,1), X(i,2) 什么意思?
2楼2014-08-20 20:58:24
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

xiashaoyan

新虫 (正式写手)

引用回帖:
2楼: Originally posted by feixiaolin at 2014-08-20 20:58:24
X(i,1), X(i,2) 什么意思?

我没说明白,X(i,1), X(i,2)分别表示x(1),x(2),我忘了改变量的符号了
3楼2014-08-20 21:25:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

feixiaolin

荣誉版主 (文坛精英)

优秀版主

引用回帖:
3楼: Originally posted by xiashaoyan at 2014-08-20 21:25:00
我没说明白,X(i,1), X(i,2)分别表示x(1),x(2),我忘了改变量的符号了...

你给出其它常数参数我处理一下看。
4楼2014-08-20 21:37:49
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
信息提示
请填处理意见