در این بخش سورس کد الگوریتم پیروزی JAYA در پایتون Python قرار گرفته شده است. این سورس کد به زبان پایتون Python برای الگوریتم بهینه سازی الگوریتم JAYA در پایتون Python کد نویسی شده است. نام این الگوریتم از زبان سانسکریت برگرفته شده است و به معنای پیروزی یا victory می باشد. الگوریتم JAYA فرآیند ساده ای برای تعیین جواب های احتمالی خوب دارد و آن هم نزدیک شدن به جواب های خوب Best و دور شدن از جواب های بد worst است.
الگوریتم JAYA در پایتون
در این قسمت سورس کد الگوریتم JAYA در پایتون Python آماده شده است این سورس کد شامل 2 فایل می باشد که عبارتند از:
- benchmarks.py: این فایل شامل 23 تابع هزینه یا Fitness از توابع benchmark می باشد و در اکثر مقالات علمی از این توابع محک برای ارزیابی الگوریتم ها استفاده می کنند.
- JAYA.py: فایل اصلی برای اجرای الگوریتم JAYA در پایتون می باشد که فراخوانی ها از طریق این فایل انجام و اجرا خواهد شد.
قسمت هایی از سورس کد توابع محک
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 | import numpy import math # define the function blocks def prod( it ): p= 1 for n in it: p *= n return p def Ufun(x,a,k,m): y=k*((x-a)**m)*(x>a)+k*((-x-a)**m)*(x<(-a)); return y def F1(x): s=numpy.sum(x**2); return s def F2(x): o=sum(abs(x))+prod(abs(x)); return o; def F3(x): dim=len(x)+1; o=0; for i in range(1,dim): o=o+(numpy.sum(x[0:i]))**2; return o; def F4(x): o=max(abs(x)); return o; def F5(x): dim=len(x); o=numpy.sum(100*(x[1:dim]-(x[0:dim-1]**2))**2+(x[0:dim-1]-1)**2); return o; def F6(x): o=numpy.sum(abs((x+.5))**2); return o; def F7(x): dim=len(x); w=[i for i in range(len(x))] for i in range(0,dim): w[i]=i+1; o=numpy.sum(w*(x**4))+numpy.random.uniform(0,1); return o; def F8(x): o=sum(-x*(numpy.sin(numpy.sqrt(abs(x))))); return o; def F9(x): dim=len(x); o=numpy.sum(x**2-10*numpy.cos(2*math.pi*x))+10*dim; return o; def F10(x): dim=len(x); o=-20*numpy.exp(-.2*numpy.sqrt(numpy.sum(x**2)/dim))-numpy.exp(numpy.sum(numpy.cos(2*math.pi*x))/dim)+20+numpy.exp(1); return o; def F11(x): dim=len(x); w=[i for i in range(len(x))] w=[i+1 for i in w]; o=numpy.sum(x**2)/4000-prod(numpy.cos(x/numpy.sqrt(w)))+1; return o; def F12(x): dim=len(x); o=(math.pi/dim)*(10*((numpy.sin(math.pi*(1+(x[0]+1)/4)))**2)+numpy.sum((((x[1:dim-1]+1)/4)**2)*(1+10*((numpy.sin(math.pi*(1+(x[1:dim-1]+1)/4))))**2))+((x[dim-1]+1)/4)**2)+numpy.sum(Ufun(x,10,100,4)); return o; def F13(x): dim=len(x); o=.1*((numpy.sin(3*math.pi*x[1]))**2+sum((x[0:dim-2]-1)**2*(1+(numpy.sin(3*math.pi*x[1:dim-1]))**2))+ ((x[dim-1]-1)**2)*(1+(numpy.sin(2*math.pi*x[dim-1]))**2))+numpy.sum(Ufun(x,5,100,4)); return o; def F14(x): aS=[[-32,-16,0,16,32,-32,-16,0,16,32,-32,-16,0,16,32,-32,-16,0,16,32,-32,-16,0,16,32],[-32,-32,-32,-32,-32,-16,-16,-16,-16,-16,0,0,0,0,0,16,16,16,16,16,32,32,32,32,32]]; aS=numpy.asarray(aS); bS = numpy.zeros(25) v=numpy.matrix(x) for i in range(0,25): H=v-aS[:,i]; bS[i]=numpy.sum((numpy.power(H,6))); w=[i for i in range(25)] for i in range(0,24): w[i]=i+1; o=((1./500)+numpy.sum(1./(w+bS)))**(-1); return o; def F15(L): aK=[.1957,.1947,.1735,.16,.0844,.0627,.0456,.0342,.0323,.0235,.0246]; bK=[.25,.5,1,2,4,6,8,10,12,14,16]; aK=numpy.asarray(aK); bK=numpy.asarray(bK); bK = 1/bK; fit=numpy.sum((aK-((L[0]*(bK**2+L[1]*bK))/(bK**2+L[2]*bK+L[3])))**2); return fit def F16(L): o=4*(L[0]**2)-2.1*(L[0]**4)+(L[0]**6)/3+L[0]*L[1]-4*(L[1]**2)+4*(L[1]**4); return o def F17(L): o=(L[1]-(L[0]**2)*5.1/(4*(numpy.pi**2))+5/numpy.pi*L[0]-6)**2+10*(1-1/(8*numpy.pi))*numpy.cos(L[0])+10; return o def F18(L): o=(1+(L[0]+L[1]+1)**2*(19-14*L[0]+3*(L[0]**2)-14*L[1]+6*L[0]*L[1]+3*L[1]**2))*(30+(2*L[0]-3*L[1])**2*(18-32*L[0]+12*(L[0]**2)+48*L[1]-36*L[0]*L[1]+27*(L[1]**2))); return o # map the inputs to the function blocks def F19(L): aH=[[3,10,30],[.1,10,35],[3,10,30],[.1,10,35]]; aH=numpy.asarray(aH); cH=[1,1.2,3,3.2]; cH=numpy.asarray(cH); pH=[[.3689,.117,.2673],[.4699,.4387,.747],[.1091,.8732,.5547],[.03815,.5743,.8828]]; pH=numpy.asarray(pH); o=0; for i in range(0,4): o=o-cH[i]*numpy.exp(-(numpy.sum(aH[i,:]*((L-pH[i,:])**2)))); return o def F20(L): aH=[[10,3,17,3.5,1.7,8],[.05,10,17,.1,8,14],[3,3.5,1.7,10,17,8],[17,8,.05,10,.1,14]]; aH=numpy.asarray(aH); cH=[1,1.2,3,3.2]; cH=numpy.asarray(cH); pH=[[.1312,.1696,.5569,.0124,.8283,.5886],[.2329,.4135,.8307,.3736,.1004,.9991],[.2348,.1415,.3522,.2883,.3047,.6650],[.4047,.8828,.8732,.5743,.1091,.0381]]; pH=numpy.asarray(pH); o=0; for i in range(0,4): o=o-cH[i]*numpy.exp(-(numpy.sum(aH[i,:]*((L-pH[i,:])**2)))); return o def F21(L): aSH=[[4,4,4,4],[1,1,1,1],[8,8,8,8],[6,6,6,6],[3,7,3,7],[2,9,2,9],[5,5,3,3],[8,1,8,1],[6,2,6,2],[7,3.6,7,3.6]]; cSH=[.1,.2,.2,.4,.4,.6,.3,.7,.5,.5]; aSH=numpy.asarray(aSH); cSH=numpy.asarray(cSH); fit=0; for i in range(0,4): v=numpy.matrix(L-aSH[i,:]) fit=fit-((v)*(v.T)+cSH[i])**(-1); o=fit.item(0); return o def F22(L): aSH=[[4,4,4,4],[1,1,1,1],[8,8,8,8],[6,6,6,6],[3,7,3,7],[2,9,2,9],[5,5,3,3],[8,1,8,1],[6,2,6,2],[7,3.6,7,3.6]]; cSH=[.1,.2,.2,.4,.4,.6,.3,.7,.5,.5]; aSH=numpy.asarray(aSH); cSH=numpy.asarray(cSH); fit=0; for i in range(0,6): v=numpy.matrix(L-aSH[i,:]) fit=fit-((v)*(v.T)+cSH[i])**(-1); o=fit.item(0); return o def F23(L): aSH=[[4,4,4,4],[1,1,1,1],[8,8,8,8],[6,6,6,6],[3,7,3,7],[2,9,2,9],[5,5,3,3],[8,1,8,1],[6,2,6,2],[7,3.6,7,3.6]]; cSH=[.1,.2,.2,.4,.4,.6,.3,.7,.5,.5]; aSH=numpy.asarray(aSH); cSH=numpy.asarray(cSH); fit=0; for i in range(0,9): v=numpy.matrix(L-aSH[i,:]) fit=fit-((v)*(v.T)+cSH[i])**(-1); o=fit.item(0); return o |
*** توجه ***
قبل از اجرای سورس کد الگوریتم در محیط پایتون حتماً از نصب پکیج های مورد استفاده در این سورس کد در Python خود مطمئن شوید پکیج های استفاده شده در این سورس کد numpy و matplotlib می باشد که اولی پکیج مربوط به استفاده از آرایه ها و ماتریس ها در پایتون و دومی مربوط به عملیات های نموداری و Plot گرفتن می باشد. پیشنهاد ما نصب Anaconda می باشد که هم پایتون و پکیج های مختلف و هم IDE های مختلفی را همراه با امکان آپدیتشان نصب می کند. ما این سورس کد را با IDE اسپایدر (Spyder (Python 3.8 نوشته و اجرا کرده ایم.
ویدئوی معرفی
درباره محصول
الگوریتم پیروزی JAYA در پایتون Python عنوان محصولی است که در این پست به آن پرداخته شده است. محصول در پایتون و با IDE اسپایدر (Spyder (Python 3.8 نوشته شده و بصورت کامل توسط گروه پشتیبانی پی استور تست و اجرا شده است. محصول دارای نشان تضمین کیفیت پی استور می باشد. برای دانلود محصول آن را خریداری کنید.
امین جلیل زاده –
نظرات و پیشنهادات خود را با در میان بگذارید.