- 积分
- 7
- 注册时间
- 2002-9-10
- 仿真币
-
- 最后登录
- 1970-1-1
|
发表于 2009-12-15 18:14:23
|
显示全部楼层
来自 山东淄博
谢谢messenger 版主的问题描述。
我的Forcal解法是这样的:将x1,x2,x3作为优化参数,则由5个等式解线性方程组得到x4,x5,x6,x7,x8,用于计算目标函数。在约束函数中,也解线性方程组得到x4,x5,x6,x7,x8,验证其是否均大于0。优化采用自己的优化函数ROptMin,输出优化参数及5个等式的值。
代码:
-
- x4_8(x1,x2,x3,x4,x5,x6,x7,x8:i:Ax55,Ax5)={ //求解线性方程组,x1,x2,x3为输入参数,x4,x5,x6,x7,x8为输出参数
- //E1=4.875, E2=27.375, E3=165.375, E4=1038.4,
- Ax55.XSLSF::setra[0, 4, 5, 6, 7, 8,
- (4-4.875)^2, (5-4.875)^2, (6-4.875)^2, (7-4.875)^2, (8-4.875)^2,
- (4-4.875)^3, (5-4.875)^3, (6-4.875)^3, (7-4.875)^3, (8-4.875)^3,
- (4-4.875)^4, (5-4.875)^4, (6-4.875)^4, (7-4.875)^4, (8-4.875)^4,
- 1, 1, 1, 1, 1],
- Ax5.XSLSF::setra{0, 4.875-[x1+2*x2+3*x3], 27.375-[x1*(1-4.875)^2+x2*(2-4.875)^2+x3*(3-4.875)^2], 165.375-[x1*(1-4.875)^3+x2*(2-4.875)^3+x3*(3-4.875)^3], 1038.4-[x1*(1-4.875)^4+x2*(2-4.875)^4+x3*(3-4.875)^4], 1-[x1+x2+x3]},
- i=XSLSF::egaus(Ax55,Ax5),
- Ax5.XSLSF::getra{0,&x4,&x5,&x6,&x7,&x8},i
- };
- f(x1,x2,x3:x4,x5,x6,x7,x8:Ax55,Ax5)= //目标函数定义
- {
- x4_8(x1,x2,x3,&x4,&x5,&x6,&x7,&x8),
- x1*ln(x1)+x2*ln(x2)+x3*ln(x3)+x4*ln(x4)+x5*ln(x5)+x6*ln(x6)+x7*ln(x7)+x8*ln(x8)
- };
- s(x1,x2,x3:x4,x5,x6,x7,x8,i:Ax55,Ax5)= //约束条件定义
- {
- i=x4_8(x1,x2,x3,&x4,&x5,&x6,&x7,&x8),
- if{x4>0 & x5>0 & x6>0 & x7>0 & x8>0 & i, return(1)},0
- };
- main(:k,d,x1,x2,x3,x4,x5,x6,x7,x8, E1,E2,E3,E4:Ax55,Ax5)=
- {
- E1=4.875, E2=27.375, E3=165.375, E4=1038.4,
- Ax55=new[rtoi(real_s),rtoi(5),rtoi(5)],
- Ax5=new[rtoi(real_s),rtoi(5)],
- k=50,x1=0.5,x2=0.3,x3=0.06, //初值
- d=fcopt::ROptMin[HFor("f"),HFor("s"),10000,&k,1e-9,0,1: &x1,1e-300,1, &x2,1e-300,1 &x3,1e-300,1],
- x4_8(x1,x2,x3,&x4,&x5,&x6,&x7,&x8),
- printff{"\r\nx1={1,r}, x2={2,r}, x3={3,r}, x4={4,r}, x5={5,r}, x6={6,r}, x7={7,r}, x8={8,r}, f={9,r}, k={10,i}\r\nf0={11,r}, f1={12,r}, f2={13,r}, f3={14,r}, f4={15,r}, f5={16,r}\r\n",
- x1,x2,x3,x4,x5,x6,x7,x8,d,k,
- x1*ln(x1)+x2*ln(x2)+x3*ln(x3)+x4*ln(x4)+x5*ln(x5)+x6*ln(x6)+x7*ln(x7)+x8*ln(x8),
- [x1+2*x2+3*x3+4*x4+5*x5+6*x6+7*x7+8*x8-E1],
- [x1*(1-E1)^2+x2*(2-E1)^2+x3*(3-E1)^2+x4*(4-E1)^2+x5*(5-E1)^2+x6*(6-E1)^2+x7*(7-E1)^2+x8*(8-E1)^2-E2],
- [x1*(1-E1)^3+x2*(2-E1)^3+x3*(3-E1)^3+x4*(4-E1)^3+x5*(5-E1)^3+x6*(6-E1)^3+x7*(7-E1)^3+x8*(8-E1)^3-E3],
- [x1*(1-E1)^4+x2*(2-E1)^4+x3*(3-E1)^4+x4*(4-E1)^4+x5*(5-E1)^4+x6*(6-E1)^4+x7*(7-E1)^4+x8*(8-E1)^4-E4],
- [x1+x2+x3+x4+x5+x6+x7+x8-1]
- },
- delete[Ax55],delete[Ax5]
- };
复制代码
问题:经多次尝试验证,无法获得一组符合约束条件的x1,x2,x3,x4,x5,x6,x7,x8,故求解无法进行。
楼主若能提供一组符合约束条件的x1,x2,x3,x4,x5,x6,x7,x8,估计优化可以进行下去。 |
|