Particle swarm optimization: Difference between revisions
Content added Content deleted
m (→{{header|REXX}}: added/changed whitespace and comments, added a comment to the REXX section header.) |
m (→{{header|REXX}}: changed use of single and double quote characters.) |
||
Line 426: | Line 426: | ||
numeric digits length(pi()) /*sDigs: is the # of displayed digits.*/ |
numeric digits length(pi()) /*sDigs: is the # of displayed digits.*/ |
||
parse arg x y d #part sDigs . /*obtain optional arguments from the CL*/ |
parse arg x y d #part sDigs . /*obtain optional arguments from the CL*/ |
||
if x=='' | x== |
if x=='' | x=="," then x= -0.5 /*Not specified? Then use the default.*/ |
||
if y=='' | y== |
if y=='' | y=="," then y= -1.5 /* " " " " " " */ |
||
if d=='' | d== |
if d=='' | d=="," then d= 1 /* " " " " " " */ |
||
if #part=='' | #part== |
if #part=='' | #part=="," then #part=1e12 /* " " " " " " */ |
||
if sDigs=='' | sDigs== |
if sDigs=='' | sDigs=="," then sDigs= 25 /* " " " " " " */ |
||
minF=#part; old= /*number of particles is one billion. */ |
minF=#part; old= /*number of particles is one billion. */ |
||
say center('X', sDigs+3, |
say center('X', sDigs+3, "═") center('Y', sDigs+3, "═") center('D', sDigs+3, "═") |
||
call refine x,y |
call refine x,y |
||
do until refine(minX,minY); d=d*.2 /*increase the difference.*/ |
do until refine(minX,minY); d=d*.2 /*increase the difference.*/ |
||
Line 452: | Line 452: | ||
/*──────────────────────────────────────────────────────────────────────────────────one─liner subroutines───────────────────────────────*/ |
/*──────────────────────────────────────────────────────────────────────────────────one─liner subroutines───────────────────────────────*/ |
||
f: procedure: parse arg a,b; return sin(a+b) + (a-b)**2 - 1.5*a + 2.5*b + 1 |
f: procedure: parse arg a,b; return sin(a+b) + (a-b)**2 - 1.5*a + 2.5*b + 1 |
||
fmt: parse arg ?; ?=format(?,,sDigs); L=length(?); if pos(.,?)\==0 then ?=strip(strip(?,'T',0), |
fmt: parse arg ?; ?=format(?,,sDigs); L=length(?); if pos(.,?)\==0 then ?=strip(strip(?,'T',0),"T",.); return left(?,L) |
||
pi: pi=3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068; return pi |
pi: pi=3.141592653589793238462643383279502884197169399375105820974944592307816406286208998628034825342117068; return pi |
||
r2r: return arg(1) // (pi()*2) /*normalize radians ───► a unit circle.*/ |
r2r: return arg(1) // (pi()*2) /*normalize radians ───► a unit circle.*/ |