全部版块 我的主页
论坛 计量经济学与统计论坛 五区 计量经济学与统计软件
3437 5
2009-03-31

遗传算法求解

本人初学GA,绊倒在一个变量之和为1的约束条件~

附件是 目标函数、约束条件,及自己照葫芦画瓢的一段程序(缺少和为1的约束)

请各位前辈帮忙看下~

多谢多谢~~~

310256.rar
大小:(4.19 KB)

 马上下载


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-4-1 09:47:00

十万火急~~

只能投机了~~

各位帮下吧~~

对了解的来说很容易的~~

多谢多谢~

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-4-3 10:46:00

A = -[1 0 0 1 0 0 1 0 0 1 0 0;1 1 1 1 1 1 1 1 1 1 1 1];

b = [0.48;0];

Aeq = ones(1,12);

beq = 1;

[x fval exitflag] = ga(@myfun,12,A,b,Aeq,beq)

多次计算时 计算结果有两个 0.4 和100

至于取哪一个 视具体情况定

[此贴子已经被作者于2009-4-3 10:50:35编辑过]

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-4-3 20:21:00

多谢~~~

可是我在最后运行是出现

??? Error using ==> ga
Too many input arguments.

还望前辈再指点下~~送佛送到西~~小子多谢~~

另若用并列或混合法又当如何操作~~

----------------------------------------------------------------------------

function z=myfun(X)
f1=-(X(1)+(X(2)*1.01875+X(3)*0.932817)*0.949915+(X(4)*1.03+X(5)*1.0425+X(6)*0.968897)*1.010245+(X(7)*1.007+X(8)*1.008+X(9)*0.987951)*1.012696+(X(10)*1.0475+X(11)*1.05+X(12)*0.908637)*0.983461);
f2=0.0016*X(3)^2+0.0034*X(3)*X(6)+0.00115354*X(3)*X(9)+0.0032*X(3)*X(12)+0.0045*X(6)^2+0.002*X(6)*X(9)+0.0064*X(6)*X(9)+0.0015*X(9)^2+0.002*X(9)*X(12)+0.0045*X(12)^2;
f3=-.40614279896333138352535799517920e-4*X(9)*X(1)-.41397376849264255333517097623815e-4*X(7)*X(1)-.41438486458846444266320987492358e-4*X(8)*X(1)-.10532252726291778313313815758471e-3*X(12)*X(7)+.23051915467068295876203154097778e-2*X(8)*X(9)-.12170828793683690218403506071616e-3*X(11)*X(7)-.11940598289521941842067489798370e-3*X(11)*X(9)+.46476516547308598127796702618095e-3*X(5)*X(7)+.45597339622075547993003853176018e-3*X(5)*X(9)+.46522669989758755623454891995074e-3*X(5)*X(8)+.45919244166645425488374679804929e-3*X(4)*X(7)+.45050608931163371158555365727864e-3*X(4)*X(9)+.45964844210505053517658070748130e-3*X(4)*X(8)+.44063133949338490723274932230000e-2*X(10)*X(11)+.38130851278404836376499394853971e-2*X(10)*X(12)-.42173577665187960121020543204261e-4*X(2)*X(7)-.42215458079949815096314506007840e-4*X(2)*X(8)-.41375797644389384696645845758880e-4*X(2)*X(9)-.11315121597543324828357901515932e-3*X(2)*X(4)-.11452441034406714692779720709086e-3*X(2)*X(5)-.10643871233490227957496588063186e-3*X(2)*X(6)+.11479618008722570604048725433634e-4*X(2)*X(3)-.57705573793695132673540094904295e-4*X(2)*X(10)-.57843295926854309601161908973280e-4*X(2)*X(11)-.50055770362942018393400908079770e-4*X(2)*X(12)-.97460456759859180099416881348100e-4*X(3)*X(6)-.10360675124668045778075418521116e-3*X(3)*X(4)-.10486411473268386139459828940062e-3*X(3)*X(5)-.52838027219154171852891927075675e-4*X(3)*X(10)-.38616176880400134867445418454153e-4*X(3)*X(7)-.38654524623081763601176744589660e-4*X(3)*X(8)-.37885690730057789118597386898908e-4*X(3)*X(9)-.52964132296049527871633912581820e-4*X(3)*X(11)-.45833495501986242720664593739626e-4*X(3)*X(12)+.43195163024592478465446371008694e-3*X(6)*X(7)+.43238057923325936736017817255972e-3*X(6)*X(8)+.42378058098618831869330891444302e-3*X(6)*X(9)-.12141850629889205241693021533350e-3*X(10)*X(7)-.12153908078379661254842667036362e-3*X(10)*X(8)-.11912168293594508647205424346470e-3*X(10)*X(9)+.23496386840377482230734698559406e-2*X(7)*X(8)+.23029046503311283677913270016332e-2*X(7)*X(9)-.12182915018900853763804105382511e-3*X(11)*X(8)-.10542711765741919106077781811856e-3*X(12)*X(8)-.10333018483806046351953026407544e-3*X(12)*X(9)+.51950790092111191274345454445845e-2*X(6)*X(4)+.52581260845656230003403044912420e-2*X(6)*X(5)+.55897271506698768706586083205740e-2*X(4)*X(5)+.30570269403494631290161079708146e-2*X(10)*X(4)+.30941267818585585553391189898779e-2*X(10)*X(5)+.28756740110910425022469125869888e-2*X(10)*X(6)+.30643229473670036138108958180004e-2*X(11)*X(4)+.31015113326505837547552028060829e-2*X(11)*X(5)+.28825371948883958256412966265758e-2*X(11)*X(6)+.26517687713587733929926580413146e-2*X(12)*X(4)+.26839504312053604487328602020102e-2*X(12)*X(5)+.24944570944302926836411722313162e-2*X(12)*X(6)+.38221855696730384912004166679398e-2*X(11)*X(12)+.21979110862824794777443091195678e-2*X(10)^2+.62685718883693794189399630557305e-5*X(2)^2+.52556480157264108678070772578290e-5*X(3)^2+.11736538466398871332514802306210e-2*X(7)^2+.11759859947914847114488866011857e-2*X(8)^2+.11296707806351979156344634074432e-2*X(9)^2+.24434448867901095578708489211756e-2*X(6)^2+.27613520216738480464164827674780e-2*X(4)^2+.28287818226084206978939801816498e-2*X(5)^2+.22084148280098050243168820449402e-2*X(11)^2+.16537996330814288931089871428128e-2*X(12)^2-.56778695388323248688257088562730e-4*X(11)*X(1)-.49134498515771306398430339219404e-4*X(12)*X(1)-.56643508018351050477094571685200e-4*X(10)*X(1)-.10447971762935193087113215276748e-3*X(6)*X(1)+.60399503309216046190998176155185e-5*X(1)^2+.12306398799252769411415878391618e-4*X(1)*X(2)+.11268336695678596911949669137310e-4*X(1)*X(3)-.11106867825809398604523093512572e-3*X(4)*X(1)-.11241659911074075772053713579472e-3*X(5)*X(1)
 

z=0.4*f1+0.3*f2*50^(1/2)+0.3*f3

-----------------------------------------------------------------------------

然后 命令窗口输入:

A = -[1 0 0 1 0 0 1 0 0 1 0 0;1 1 1 1 1 1 1 1 1 1 1 1];

b = [0.48;0];

Aeq = ones(1,12);

beq = 1;

[x fval exitflag] = ga(@myfun,12,A,b,Aeq,beq)

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-4-3 21:35:00
怎么没见过ga(@myfun,12,A,b,Aeq,beq)这种调用法呢
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-4-4 20:38:00

我怀疑你的Matlab版本有问题,可能是你的一些无意识的操作改变了ga工具箱中的函数。

你换一个版本或者重装一下试试

@fun 是匿名函数法 这个在Matlab中用的很多

二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群