采用萤火虫算法求解0-1背包问题
_$ (setq n 17 ;;;物品总个数w_tol 385 ;;;背包总容量
wlst '(24 14 45 40 35 19 27 72 66 62 25 83 42 55 71 59 45) ;;;各物品重量
clst '(70 38 93 80 70 36 38 99 89 77 30 94 43 49 62 48 29) ;;;各物品价值
M_pop 200 ;;;萤火虫数量
M_re 300 ;;;循环次数
plst nil
)
(defun rnd ()
(* (rem (getvar "cputicks") 1e4) 1e-4)
)
(defun ff (n)
(setq lst '((0 5 1)(5 10 0)) vlst nil)
(repeat n
(setq num (fix (rem (getvar "CPUTICKS") 11)))
(setq vlst (cons (car (vl-remove nil (mapcar '(lambda (x) (if (<= (car x) num (cadr x)) (last x) nil)) lst))) vlst))
)
)
(defun dfun (e1 e2)
(apply '+ (mapcar '(lambda (x y) (boole 6 x y)) e1 e2))
)
(defun move (e1 e2)
(setq dis (dfun e1 e2) k (/ (fit e1) 1.0 (fit e2)) p2 0.95)
(mapcar '(lambda (x y) (if (< (setq p (rnd)) (+ (* k 0.4) (/ 1.0 (+ 2.0 dis)))) y (if (< (+ (* k 0.4) (/ 1.0 (+ 2.0 dis))) p p2) x(boole 7 y (fix (+ 0.5 (rnd))))))) e1 e2)
)
(defun fit (e)
(if (<= (apply '+ (mapcar '* wlst e)) w_tol)
(setq fitvalue(apply '+ (mapcar '* clst e)))
(setq fitvalue0)
)
)
(repeat M_pop
(setq plst (cons (ff n) plst))
)
(setq pest (cdr (car (vl-sort (mapcar '(lambda (x) (cons (fit x) x)) plst)'(lambda (e1 e2) (> (car e1) (car e2)))))))
(repeat M_re
(progn
(setq plst (mapcar '(lambda (x) (move x pest)) plst))
(setq pest_new (cdr (car (vl-sort (mapcar '(lambda (x) (cons (fit x) x)) plst)'(lambda (e1 e2) (> (car e1) (car e2)))))))
(if (> (fit pest_new) (fit pest)) (setq pest pest_new) (setq pest pest))
)
)
(list (fit pest) (apply '+ (mapcar '* wlst pest)) pest)
nil
RND
FF
DFUN
MOVE
FIT
((1 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1) (0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1) (1 0 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1) (1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 0) (0 1 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0) (1 0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1) (0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 0 1) (1 1 1 1 1 1 0 1 0 1 0 1 0 0 0 1 1) (1 1 1 1 1 1 0 1 0 1 0 0 0 1 1 1 1) (1 0 1 1 0 1 1 1 1 0 1 0 1 1 1 0 0) (0 0 1 1 1 1 1 0 1 0 0 1 0 1 0 0 1) (0 1 1 0 1 1 0 0 0 1 1 0 1 1 0 1 0) (1 0 1 1 1 1 0 0 0 1 0 1 1 1 1 1 1) (0 1 1 0 0 1 0 1 1 0 0 1 0 0 0 1 0) (1 0 1 1 0 0 1 1 0 0 1 1 1 1 0 1 1) (1 1 1 1 1 0 1 0 1 0 0 0 0 0 0 1 0) (1 0 1 1 1 0 1 1 0 1 1 1 0 0 1 1 1) (1 1 0 0 1 0 0 0 1 0 0 1 1 1 0 0 0) (1 0 0 1 0 1 0 1 1 0 0 1 0 1 1 1 1) (1 0 0 1 0 1 1 1 1 0 1 0 1 0 0 1 0) (1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 1 1) (1 1 1 0 0 1 0 0 1 0 1 1 0 1 1 0 0) (1 0 0 1 1 1 1 1 1 0 1 0 1 1 0 0 0) (0 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 0) (0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 1) (1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 0 1) (0 0 1 1 1 1 0 1 1 0 0 1 0 0 1 1 1) (0 1 0 1 1 1 0 0 1 0 0 1 0 0 1 1 0) (1 0 1 0 1 0 0 1 1 1 1 1 0 0 0 0 0) (0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 1 0) (1 0 1 0 0 0 0 0 1 0 0 0 1 1 0 0 0) (1 0 1 0 1 1 0 1 1 0 0 0 1 1 0 1 1) (0 0 0 0 1 1 1 1 1 1 0 1 0 1 0 0 1) (1 1 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1) (1 0 0 0 1 1 1 1 0 0 1 1 0 0 0 1 1) (0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1 1) (0 0 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0) (1 0 1 1 1 1 1 0 1 0 0 1 1 0 1 1 1) (1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 1) (0 1 0 1 0 1 1 1 0 1 0 1 0 0 0 0 0) (1 0 1 1 1 1 1 0 1 0 0 1 0 1 1 1 1) (0 1 0 0 0 0 0 1 1 1 0 1 1 1 1 0 1) (1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 0) (0 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0 1) (1 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1) (0 1 1 1 0 1 1 1 0 1 0 0 1 0 0 0 0) (1 1 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1) (1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0) (1 1 1 0 0 0 1 1 1 0 1 1 1 0 0 1 1) (0 1 1 1 1 0 1 1 0 0 1 0 1 0 0 1 0) (1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 1 0) (1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 0 1) (0 0 0 1 1 0 0 1 1 1 0 1 1 0 0 1 1) (0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 0 1) (1 1 1 1 1 0 0 0 1 1 1 1 1 0 0 0 0) (1 0 0 0 0 0 1 0 0 1 1 1 0 0 0 0 0) (1 1 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0) (1 0 1 0 0 1 0 0 1 0 0 1 1 1 0 0 1) (1 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0) (0 0 1 1 1 1 1 1 0 1 1 1 0 0 1 1 1) (1 1 1 1 1 1 0 0 0 1 1 1 1 0 0 0 1) (0 1 0 1 1 1 1 0 0 0 1 1 1 0 0 1 0) (0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1) (0 0 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1) (1 0 1 1 0 0 0 0 0 0 1 0 1 0 1 0 0) (1 1 0 1 0 1 1 1 1 0 0 1 0 1 0 0 1) (1 1 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0) (0 1 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0) (0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0) (0 0 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1) (1 1 0 1 1 0 0 1 1 1 1 1 0 1 0 0 1) (1 0 1 1 1 1 0 0 1 1 1 0 1 0 1 1 1) (1 0 1 0 1 0 1 0 1 1 1 1 0 1 1 0 0) (0 1 0 1 1 0 0 0 0 0 0 0 0 1 1 1 1) (0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 1 0) (0 1 0 1 0 0 1 1 0 0 0 0 0 1 1 0 0) (0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 0 0) (0 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 0) (1 0 1 1 1 0 1 1 1 1 1 0 0 0 1 0 1) (1 0 0 0 1 1 0 1 1 1 0 0 1 0 1 1 0) (1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 1) (1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 0) (0 1 1 0 0 1 0 1 0 0 1 1 1 1 1 1 1) (0 1 0 0 1 0 0 0 1 0 0 1 0 1 1 1 0) (0 1 0 1 1 1 0 1 1 1 0 0 0 1 1 0 1) (1 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 1) (0 0 0 0 1 0 1 1 0 0 0 1 1 0 0 1 1) (0 0 1 0 0 0 1 0 1 1 1 1 0 0 0 0 0) (0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 1 0) (0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 1) (0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 0 0) (0 1 1 0 1 0 0 1 0 0 1 0 0 1 1 1 1) (0 0 1 0 1 1 1 1 0 1 0 0 0 0 1 0 1) (1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 1 1) (1 0 0 0 1 1 1 1 0 0 1 1 0 1 0 1 1) (0 1 0 0 1 1 0 1 1 0 1 1 0 0 1 1 0) (0 0 0 1 0 0 1 1 0 0 1 0 1 0 0 0 1) (0 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0) (1 0 0 1 0 1 0 0 1 1 1 0 0 0 0 1 0) (1 0 0 1 0 1 0 1 0 0 1 1 1 1 1 1 0) (1 1 1 1 0 1 0 0 1 1 0 1 0 1 1 1 1) (0 1 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1) (1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 1 1) (1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 0 0) (1 0 1 0 0 0 0 1 0 1 1 0 0 1 1 1 1) (0 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0) (1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 0 0) (0 1 1 0 0 1 1 0 0 1 0 0 1 1 0 1 0) (1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0) (1 0 0 0 0 1 0 1 0 0 0 1 1 1 0 1 1) (0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 1 0) (1 0 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0) (1 1 0 1 0 0 0 1 0 1 0 1 0 0 1 0 1) (1 1 1 0 1 1 0 1 1 1 1 1 0 1 0 0 1) (1 1 0 0 0 0 1 0 0 1 1 1 1 1 1 0 1) (0 0 1 0 1 0 0 0 0 1 0 0 1 0 0 1 0) (1 1 0 0 1 0 0 1 1 0 0 0 0 0 1 1 0) (0 1 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0) (1 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0) (0 0 0 0 0 1 1 0 1 0 1 1 0 0 0 0 1) (0 1 0 1 1 0 0 0 1 1 0 0 0 0 1 0 1) (0 1 1 1 1 1 0 0 1 1 0 0 1 0 0 0 1) (0 0 1 0 1 1 1 0 1 0 1 0 1 1 1 0 0) (0 0 1 0 0 1 1 0 1 1 1 0 0 1 1 0 1) (1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 1 1) (0 0 1 1 1 1 0 0 1 1 0 1 0 1 1 1 1) (1 1 1 0 1 0 1 1 0 1 0 0 0 0 0 1 0) (0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 1) (1 0 1 0 0 1 1 1 0 1 1 0 0 1 0 0 1) (0 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 0) (1 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0) (0 1 0 1 1 1 0 1 1 1 1 1 0 0 0 1 1) (1 1 1 0 1 0 0 0 1 1 1 1 1 1 1 1 0) (0 1 1 1 1 1 1 1 0 0 1 1 0 1 1 1 1) (1 1 0 0 1 0 0 0 0 1 0 1 0 1 1 1 1) (1 1 0 0 1 1 1 1 1 0 0 0 1 1 0 1 0) (1 0 1 0 1 0 1 0 1 1 1 1 0 0 0 0 1) (0 1 0 1 0 1 0 0 0 0 0 1 1 1 1 1 0) (1 1 0 1 0 0 1 1 0 0 0 0 1 1 0 0 1) (0 0 0 1 0 1 0 0 1 1 0 1 1 0 1 1 1) (1 0 1 0 0 0 0 0 0 0 0 1 1 1 0 0 0) (0 1 0 0 0 1 1 1 0 0 1 0 1 0 1 1 1) (0 0 1 1 1 0 1 1 0 0 1 0 0 1 1 0 1) (1 0 0 1 0 1 0 1 0 0 1 1 0 0 1 0 0) (1 1 1 0 1 1 1 0 0 1 1 0 1 1 1 1 0) (1 0 1 0 0 1 1 1 0 1 0 0 1 0 1 1 1) (1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1) (1 0 0 0 0 1 0 0 0 1 1 0 0 1 1 0 1) (0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 1 0) (1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0) (1 1 1 0 1 0 1 0 0 1 1 1 1 0 1 1 0) (0 0 1 0 0 1 1 0 0 0 1 0 1 1 1 1 1) (1 1 1 1 0 0 0 1 0 1 1 0 0 1 0 1 0) (1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1) (0 1 0 1 1 0 1 1 1 1 0 0 1 0 0 0 0) (0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0) (0 1 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1) (0 1 0 1 0 0 1 1 1 0 1 0 0 1 1 0 1) (0 0 0 1 0 1 0 1 0 1 1 0 1 0 1 1 1) (1 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 0) (1 1 1 1 1 1 0 0 0 0 0 1 1 0 1 0 1) (0 1 0 0 0 1 0 0 1 1 0 0 1 1 0 1 1) (0 1 1 1 0 1 1 1 0 0 1 1 0 0 1 0 0) (1 1 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0) (1 0 0 0 0 1 0 1 0 1 0 0 1 1 0 1 1) (1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 1 0) (1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0) (1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 0 1) (1 1 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0) (0 1 1 1 1 1 1 1 0 1 1 0 1 0 0 0 1) (1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 1 0) (1 0 1 1 0 1 1 0 0 1 0 0 1 0 1 1 1) (0 0 0 0 1 0 1 0 0 1 1 0 1 0 0 1 1) (0 0 0 1 1 1 1 0 0 0 1 1 1 1 0 1 1) (0 1 1 0 1 1 0 0 1 0 0 0 0 0 1 0 0) (1 0 1 0 0 0 0 0 1 1 0 0 0 0 1 1 1) (0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 1 0) (0 1 1 0 1 1 1 1 0 0 0 1 0 0 0 0 1) (1 0 0 0 0 0 0 1 1 0 0 1 1 0 0 1 1) (1 0 1 1 0 0 1 1 1 0 0 0 1 1 0 1 1) (1 1 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1) (1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 1 1) (0 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 1) (0 1 0 0 0 1 0 0 0 0 1 1 1 1 1 1 1) (1 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1) (1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 0 1) (0 1 0 0 1 1 1 1 1 0 1 0 1 0 0 0 1) (0 0 1 1 0 0 0 0 0 1 0 0 1 0 0 1 1) (1 1 1 0 1 1 1 1 0 1 0 0 1 1 0 1 1) (0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1) (1 1 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1) (1 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0) (0 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1) (1 1 0 0 1 1 0 1 0 1 1 1 0 1 0 1 1) (1 1 1 1 0 1 1 1 1 0 0 0 0 0 1 1 1) (1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 1) (1 1 1 0 0 0 1 0 1 1 0 1 0 1 1 1 0) (1 0 1 1 1 1 1 0 0 1 0 1 1 0 1 1 0) (1 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1 0) (0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 1))
(1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 0)
(1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0)
(656 384 (1 1 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0))
_$
_$ (setq n 50 w_tol 1000 wlst '(80 82 85 70 72 70 66 50 55 25 50 55 40 48 50 32 22 60 30 32 40 38 35 32 25 28 30 22 50 30 45 30 60 50 20 65 20 25 30 10 20 25 15 10 10 10 4 4 2 1)clst '(220 208 198 192 180 180 165 162 160 158 155 130 125 122 120 118 115 110 105 101 100 100 98 96 95 90 88 82 80 77 75 73 72 70 69 66 65 63 58 56 50 30 20 15 10 8 5 3 1) M_pop 100 M_re 100 plst nil)
(defun rnd ()
(* (rem (getvar "cputicks") 1e4) 1e-4)
)
(defun ff (n)
(setq lst '((0 5 1)(5 10 0)) vlst nil)
(repeat n
(setq num (fix (rem (getvar "CPUTICKS") 11)))
(setq vlst (cons (car (vl-remove nil (mapcar '(lambda (x) (if (<= (car x) num (cadr x)) (last x) nil)) lst))) vlst))
)
)
(defun dfun (e1 e2)
(apply '+ (mapcar '(lambda (x y) (boole 6 x y)) e1 e2))
)
(defun move (e1 e2)
(setq dis (dfun e1 e2) k (/ (fit e1) 1.0 (fit e2)) p2 0.95)
(mapcar '(lambda (x y) (if (< (setq p (rnd)) (+ (* k 0.4) (/ 1.0 (+ 2.0 dis)))) y (if (< (+ (* k 0.4) (/ 1.0 (+ 2.0 dis))) p p2) x(boole 7 y (fix (+ 0.5 (rnd))))))) e1 e2)
)
(defun fit (e)
(if (<= (apply '+ (mapcar '* wlst e)) w_tol)
(setq fitvalue(apply '+ (mapcar '* clst e)))
(setq fitvalue0)
)
)
(repeat M_pop
(setq plst (cons (ff n) plst))
)
(setq pest (cdr (car (vl-sort (mapcar '(lambda (x) (cons (fit x) x)) plst)'(lambda (e1 e2) (> (car e1) (car e2)))))))
(repeat M_re
(progn
(setq plst (mapcar '(lambda (x) (move x pest)) plst))
(setq pest_new (cdr (car (vl-sort (mapcar '(lambda (x) (cons (fit x) x)) plst)'(lambda (e1 e2) (> (car e1) (car e2)))))))
(if (> (fit pest_new) (fit pest)) (setq pest pest_new) (setq pest pest))
)
)
(list (fit pest) (apply '+ (mapcar '* wlst pest)) pest)
nil
RND
FF
DFUN
MOVE
FIT
((0 0 1 0 0 0 0 0 0 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 1 0) (0 0 1 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1) (0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 1 1 1 1) (1 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 0 0 0 1 0 1 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1) (0 0 1 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 1 1 1 0 1 0 1 1 1 1 1 0 0 1 0 0 0 1 0 1 0 1 0 1) (1 1 0 0 1 0 0 1 1 1 1 1 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0) (0 0 0 1 0 0 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 0 0 1 0 1 1) (1 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 1 1 1 1 0 0 1 0 0 1 1 0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 0) (1 1 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1 1 1 1 0 0 1 0 0 1 0 1 1 0 0) (1 1 0 0 0 0 1 0 0 0 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0) (1 1 1 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1) (0 1 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 0 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 0 1 0 1 0 0 0 0 0 0) (0 0 0 1 0 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 0 0 1 0 1 0 0 0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 0) (0 0 1 0 0 1 0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0 0 0 1 1 1 1 1 0 1 0 1 0 0 0 0 1 0 0 1 1 1 0 0) (1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 0 1 0 1 1 1 1 1 0 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 1 1 0 1) (1 1 1 1 1 1 1 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 1 0 0) (1 1 1 1 1 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 1) (1 0 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 0 1 0 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0) (0 1 1 0 1 0 0 1 1 0 0 0 1 1 0 1 1 1 0 0 0 1 1 1 1 0 0 0 1 0 1 0 1 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 1) (1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 1 0 1 0 1 1 1 1 0 1) (0 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 0) (0 1 0 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 0 1 0 0 1 0 0 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 0 1) (0 0 1 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 0 1 0 0 1 0 1 0 0 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 1 0) (1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 0) (1 1 1 1 0 1 0 0 1 0 0 0 0 1 0 1 0 1 1 0 0 1 1 0 1 1 0 0 0 0 1 1 0 1 1 1 1 0 1 0 0 0 0 0 0 0 0 1 1 1) (1 1 0 0 1 1 1 0 0 1 1 0 0 0 0 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 1 0 0 0 0 1 1 1) (1 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 0 0 0 0 1 0 0 1 1 1 0 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 1) (1 0 1 1 0 1 0 1 1 1 1 0 0 0 1 1 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 0 0 1 0 1 0 1 1 1 1 0 1 1 0 1) (1 1 1 0 1 1 0 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 1 0 0 1 1 1 1 0 0 0 1 1 1 0 1) (0 0 1 1 0 0 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 0 1 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 0 0 1 0) (0 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 1 1 1 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 1 1) (0 1 1 1 1 0 0 1 1 1 1 1 1 0 0 1 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 1 0 0 1 0 1) (1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 0 1 0 1 0) (0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 1 0 1 0 0 0 1 0 1 0) (1 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1) (0 1 0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 0 0 1 0 1 1 1 0 1 1 0 1 0 1 0 1) (0 1 0 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 0 1 1 0 1 1 0 0 0) (0 0 1 0 1 1 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 1 0 0 0 1 1 0 0 1 0 0 1 1) (1 1 1 0 1 0 0 1 1 0 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1) (1 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0 1 0 0 1 1 1 1 0 0 1 0 0 1 0 1 0 0 0 0 0 0 0 1 1 0 0) (0 1 1 0 0 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 0 0 0 1 1 1 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 0) (0 0 1 0 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 1) (1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 0 0 1 1 1 1 1) (1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 0 0 1 1 1 0 0 1 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1) (1 1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0) (1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1) (0 1 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 0 1 1 0 0 1 1 1 0 1 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0) (0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 0 1 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 1 1 1 1 1 0 0 1 1 1) (1 0 0 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 1 0 1 1 0 0 0 0 0 0 0 1 0 0 1 0 1 0 1 1 1 1 1 1) (1 1 0 1 0 0 1 1 0 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 0 0 1 1 0 1 0 0 1 0 0 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0) (1 0 0 0 0 0 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 1 0) (1 0 1 0 0 1 1 1 1 0 1 1 0 0 0 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 0) (0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 1 0 1 1 1 1 1 1 1 0 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 1 1 0 0 0) (1 1 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1) (1 0 0 1 0 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 1 0 1 1 1 0 1 1 1 1 1 0 1 0 0 1) (1 1 0 1 1 0 0 1 1 1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 1 0 0 1 0 1 1 0 0 0) (0 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 1 1 1 1 1 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 0 1) (0 1 0 1 0 1 1 0 0 1 1 1 0 1 1 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1) (1 1 1 0 1 0 0 0 1 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 1 0 1 0 1 0 0 0 1) (1 0 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 1 1 0 0 0 0 1 1 0 0 1 0 0 0 1 0 1) (0 0 1 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 0 0 1 0 0 0 0) (1 0 0 1 1 0 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 0) (0 1 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 1 1 0 0 0 1 0 1 0 0 0 1 1 0 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1) (0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 1 0 1 0 0 1 0 1 0 0 1 1 1 0 1 1 0 0 1 0 0 0 1) (0 0 1 0 0 0 1 0 1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 1 1 0 0) (1 0 0 0 0 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1) (1 0 1 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 1 1 1 0 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1 1) (0 1 1 1 1 1 0 1 1 0 1 1 0 1 0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1) (0 1 1 1 1 0 0 0 1 1 0 1 0 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 0 1 0 1 0 1 0 1 1 1 0 1 1) (0 1 0 0 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 0) (0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 0 1 1 0 1 0 0 0 0 0 1 0 1 0 1 1 1 1 1 0 1 1 1 0 1 1 1) (1 1 1 1 0 0 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 1 1 0 0 1 0 1 0 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 0 1) (0 1 0 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 1 1 0 0 1 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1) (1 1 0 0 0 1 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 0 1 1 1 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 1 1 1 1 0 1 1) (1 1 1 0 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0 0 0 0) (1 1 0 0 1 1 0 0 1 0 1 1 1 1 1 0 1 0 1 1 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 0 1 1 1 1 0 1 0 1 0 0 1 0 0) (0 1 1 0 0 1 1 1 0 0 1 0 1 1 1 0 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 0 1 0 0 0 0 1 1 1 1 0 1 1 1 0) (1 1 1 0 0 0 1 0 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 1 0 1 1 0 1 1 1 0 1 0 0 1 0 0 1 0 0 1 1 1 1) (1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 0 0 1 0 1 1 1 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 0 0 0 1 0 0 0) (1 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1) (0 0 0 0 1 1 0 1 0 1 0 1 1 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 1 0 1 1 0 1 0 1 0 0 1 1 1 1) (0 1 0 1 1 1 0 0 1 0 1 0 0 0 0 0 0 1 0 1 1 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 1 0) (1 0 1 1 1 0 1 0 1 0 1 0 1 1 1 0 1 0 0 1 1 1 1 1 0 0 1 0 0 0 0 0 1 1 1 0 1 1 0 1 1 1 0 0 0 1 1 0 0 1) (1 1 0 0 0 0 0 1 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 1 1 1 0 1 1 0 0 1 1 1 1 0 0 0 0 0 0) (1 1 0 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 1 0 0 0 0 0) (1 0 1 0 0 1 1 1 1 1 0 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 0 1 1 1 1 1 0 1 0 1 1 0 1 1 0 1 0 0 1 1 1 1 1 1) (0 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 0 1 0 1 0 1 0 1 0 1 0 0) (0 1 1 0 1 1 1 0 1 1 0 0 1 1 1 0 0 0 1 0 1 1 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 1 0 0) (0 1 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 1 1 0 0 1 1 0 0 1 0 1 1 1 0 1 1 1 1 0 1 0 1 0 1 1 1 1 0 0 1 1 0 1) (1 0 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 1 1 1 1 1 0 1 0 0 1 0 1 0 0 0 0 1 1 1 1 1 1 1 1 0 1) (1 0 0 1 1 1 1 1 1 1 0 1 1 1 0 1 0 0 0 1 1 1 0 1 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 0) (1 0 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 0 1 0 1 0 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 0 1 1 0 1 0 0 0 0 0 1 1 1) (0 1 1 0 1 0 0 1 1 1 0 0 1 0 0 0 1 1 0 0 1 1 0 1 1 1 0 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1) (0 1 1 0 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 0 1 0 1 0 0 1 0 0 1 0 1 0 0 1 1 1 1 1 0 1 1 1 0 0 1 0 1 0 0) (1 0 1 0 1 0 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 1 1 0 1 0) (1 1 1 1 0 0 0 1 1 1 0 1 1 0 1 1 0 0 0 1 0 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 0 0 1 1 0) (1 1 1 1 1 0 0 0 0 0 1 1 0 1 1 1 0 1 1 1 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1) (0 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 1 0) (1 0 1 0 1 0 0 0 1 0 0 0 0 1 0 0 1 1 0 0 0 0 1 1 0 0 0 1 0 0 1 1 1 0 0 0 0 0 1 0 1 1 1 0 1 1 0 1 1 0) (1 0 1 0 1 0 0 1 0 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0))
(1 1 0 1 0 1 0 0 1 1 1 0 0 1 1 1 0 1 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 1)
(0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 1 1)
(2823 997 (0 1 0 1 0 1 1 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 0 1 1 1 1))
_$ 本帖最后由 mahuan1279 于 2019-12-15 20:55 编辑
适当调大M_pop 和 M_re ,可能会获得更好的解,但运行时间将会延长。当物品数量较多时,容易陷入局部最值处(非全局最大值处),所得结果质量很差(还不如按单价由高到低的贪心算法所得的结果好)。出发点仅仅是想实现萤火虫算法(运行结果质量很差),仅做萤火虫算法案例参考。
_$ (setq n 50 w_tol 1000 wlst '(80 82 85 70 72 70 66 50 55 25 50 55 40 48 50 32 22 60 30 32 40 38 35 32 25 28 30 22 50 30 45 30 60 50 20 65 20 25 30 10 20 25 15 10 10 10 4 4 2 1)clst '(220 208 198 192 180 180 165 162 160 158 155 130 125 122 120 118 115 110 105 101 100 100 98 96 95 90 88 82 80 77 75 73 72 70 69 66 65 63 58 56 50 30 20 15 10 8 5 3 1) M_pop 100 M_re 400 plst nil)
(defun rnd ()
(* (rem (getvar "cputicks") 1e4) 1e-4)
)
(defun ff (n)
(setq lst '((0 5 1)(5 10 0)) vlst nil)
(repeat n
(setq num (fix (rem (getvar "CPUTICKS") 11)))
(setq vlst (cons (car (vl-remove nil (mapcar '(lambda (x) (if (<= (car x) num (cadr x)) (last x) nil)) lst))) vlst))
)
)
(defun dfun (e1 e2)
(apply '+ (mapcar '(lambda (x y) (boole 6 x y)) e1 e2))
)
(defun move (e1 e2)
(setq dis (dfun e1 e2) k (/ (fit e1) 1.0 (fit e2)) p2 0.99)
(mapcar '(lambda (x y) (if (< (setq p (rnd)) (+ (* k 0.4) (/ 1.0 (+ 2.0 dis)))) y (if (< (+ (* k 0.4) (/ 1.0 (+ 2.0 dis))) p p2) x(boole 7 y (fix (+ 0.5 (rnd))))))) e1 e2)
)
(defun fit (e)
(if (<= (apply '+ (mapcar '* wlst e)) w_tol)
(setq fitvalue(apply '+ (mapcar '* clst e)))
(setq fitvalue0)
)
)
(repeat M_pop
(setq plst (cons (ff n) plst))
)
(setq pest (cdr (car (vl-sort (mapcar '(lambda (x) (cons (fit x) x)) plst)'(lambda (e1 e2) (> (car e1) (car e2)))))))
(repeat M_re
(progn
(setq plst (mapcar '(lambda (x) (move x pest)) plst))
(setq pest_new (cdr (car (vl-sort (mapcar '(lambda (x) (cons (fit x) x)) plst)'(lambda (e1 e2) (> (car e1) (car e2)))))))
(if (> (fit pest_new) (fit pest)) (setq pest pest_new) (setq pest pest))
)
)
(list (fit pest) (apply '+ (mapcar '* wlst pest)) pest)
nil
RND
FF
DFUN
MOVE
FIT
((1 0 1 0 1 0 0 1 0 1 1 0 0 0 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 1 0 1 0 0 0 1 1 0 1) (0 0 1 0 1 0 0 0 1 1 1 0 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 0 1) (1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 0 0) (0 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 1 0 1 0 1 1 1 1 0) (0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 0 0 1 1 1 1 1 1 0 0 0 0 1 1 0 1 0 1 1 1 1 0 0 0 1 1 0 0 1 0 0 0 1) (0 1 1 0 1 1 1 0 0 1 0 0 0 1 0 0 1 0 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 1 1 1 1) (1 0 1 0 0 1 1 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 0) (0 1 1 1 1 0 1 0 1 0 0 1 0 0 1 0 1 1 1 1 0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 1 1) (0 1 1 1 1 1 0 1 1 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0) (1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 0 1 0 0 1 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 0 1 0 1 0 1 1 0 0 1 0 1 1) (0 1 0 0 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 1) (0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 0 1 0 1 0 1 1 1 1 1 0 1 0 0 0 0 0 1 1) (0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 1 1 0 0 1 0 0 1 0 1 1 0 0 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 1 1) (1 1 0 1 1 1 1 0 0 0 1 1 1 1 0 0 1 1 0 0 0 0 1 1 0 0 1 0 1 0 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 0 1) (1 0 1 0 0 1 1 1 1 0 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1) (0 1 0 1 1 1 0 0 1 0 1 1 0 1 1 1 1 1 0 0 0 1 1 0 0 0 1 0 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1) (0 1 1 0 0 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 1 0 0 0 0 0 1 1 0 0 0 1 0 1 1 0 0 0 1 0 1 0 1 1 1 0 1 1 1 0) (1 1 0 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 0 0 1) (1 0 1 0 0 0 1 1 0 1 1 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 0 0 1 1 0 1 0 1 0 1 0 0 1 1 0 0 1 1 0 1 0 0 0) (0 0 1 1 0 0 1 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 0 0 0) (1 1 0 0 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 0 0 0 0 1 0 0 1 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1) (1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 1 0 1 1 0 0 1 0 1 1 0) (1 1 1 1 0 1 1 1 1 0 0 0 1 1 0 0 1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 0 0 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 1 1) (1 1 0 0 1 1 0 1 1 1 1 0 0 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 0 0 1 1 0 1 1 0 1 1 1 0 1 1 0 0 1 0 1 0 0) (0 1 1 1 1 1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 0 0 1 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0) (0 1 0 1 0 1 1 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 0 1 1 0 0) (0 0 0 0 1 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 0 1 1 1 0 0 1 1 0 1 0 0 0 0 1 0 0 1 1 1 0 1 1 1 0 0 0 1 0) (0 0 0 1 1 0 1 0 0 0 1 0 0 1 1 0 1 1 0 1 1 0 1 0 0 0 1 0 1 0 1 0 1 1 0 1 1 1 1 0 1 1 1 0 0 1 0 0 0 1) (0 1 1 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 1 1 0 1 0 0 0 0 1 0 1 1 1 0 0 1 1 1 0 0 0 0 1 1 1) (0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 1 1 1 0 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 1 1) (1 1 0 1 0 1 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 0 1 0 1 0 1 1) (0 0 1 1 0 0 1 1 1 0 0 1 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 1 1 1 1 1 0 0 1 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1) (0 1 1 1 1 0 0 1 0 0 1 1 1 1 1 0 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 0 0 1 0 1 0 1 1 0 0 1 0 1 1 1 0) (1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 1 1 1 0 1) (0 0 1 0 0 1 1 1 0 1 1 1 0 1 0 1 0 0 1 1 1 1 1 0 1 0 1 0 1 1 0 0 1 1 0 0 0 0 1 0 1 0 0 1 1 0 1 1 1 0) (1 0 1 1 0 1 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 0 1 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1) (0 0 1 1 1 1 0 0 1 1 0 0 1 1 0 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 0 1 0 0 1 1 0 1 0 0 1 0) (1 0 0 0 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 0 1 1 0 0 0 1 1 1 1 1 0 0 0 1 1 1 1 0 1 1 0 0) (0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1 1 1 0 0 1 1 0 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 1 1 0 0 1 1 0 1 1 0 0) (0 0 0 0 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 0 1 0 0 1 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 0 1 1 1) (0 1 0 0 1 1 1 1 1 0 1 0 0 1 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 0 0 1 0 0 1 0 1 0 1 1 1 0 1 1 1 0 1 0 0) (1 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 1 1 1 1 0 0 1 1 1 1 0 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 1 0 1 1 0 1) (0 1 0 0 0 1 1 0 0 0 1 1 1 1 1 1 0 0 0 1 0 1 0 1 1 0 0 0 0 0 0 1 1 0 1 0 0 1 1 0 1 1 0 0 0 0 0 1 1 1) (1 1 0 1 1 0 1 0 1 1 1 0 1 0 1 0 0 0 1 1 1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1) (0 1 1 1 0 1 1 1 0 1 0 0 0 1 0 1 1 0 1 0 0 0 1 1 1 1 0 1 1 0 0 1 1 0 1 1 1 1 0 1 0 1 0 0 0 1 1 1 0 1) (0 0 0 1 0 0 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 0 1 1) (1 0 1 1 0 0 1 0 1 1 1 0 1 1 1 0 1 0 0 0 0 0 0 0 1 1 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 0 0 1 0 1 0 1 0) (0 1 1 0 1 1 1 0 1 0 1 0 1 0 0 1 1 1 0 1 0 1 0 1 0 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 1 0 1 0 1 1 1 0 0 0) (1 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 0 1 0 1 0 0 1 1 1 1 0 0 0 0 0 0 1 0 0 1 0 1 1) (0 1 1 1 0 0 1 0 1 0 1 0 0 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 1 1 0 1 1 0) (0 1 0 1 1 1 1 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 1 1 0 1 1 0 0) (1 1 0 0 0 0 1 1 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 0 0 0 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 0) (1 0 0 1 0 1 0 0 1 1 1 0 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 1 0 1 1) (1 1 0 1 0 1 0 0 0 1 0 0 0 0 1 1 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 0 1 0 1 1 1 0 1 1 0 1 0 0 1 1 1 1 1 0) (1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0) (1 1 1 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 0 1 1 1 1 1 0) (1 1 0 1 0 0 1 1 0 0 1 0 0 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1) (0 0 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 0 0 0 1 1 0 0 1 1 0 1 0 1 0 1 1 1 0 1 0 1 1 0 1 1 1 0 0 1 1 0 1 0) (1 0 1 1 0 1 1 0 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 0 0 1 1 0 1 1 1 0 0 1 0 1 0 1 1 1 1 1 0 1 1 0 0 0 1) (1 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 0 1 0 1 0 1 0 1 0 0 1 1 1 1 0) (1 0 1 0 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 1 1 1 1 0 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 0 0 1 0 0 1 0 1 0 1 1) (0 1 0 1 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 0 0 0 1 0 1 1 1 0 0 0 0 1 0 0 1 1 0 1 1 1 1 0 0 0 0 0 0 0 0 1) (0 1 0 1 1 0 0 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 1) (0 1 1 0 0 0 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 1) (1 0 1 1 0 0 0 0 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 0 1 0 1 1) (1 1 1 0 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 0 1 1 1 0 0 1 1 0 1 0 1 0 0 1 0 0 0 1 1 0 1 1 1 1 0 1 0 1 1 1) (0 1 1 1 1 1 0 1 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1 1 0 1 1 0 1 1 1 0 0 0 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 1) (1 0 0 0 0 0 0 0 1 0 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 1 0 0 1 1 1 0 1 1 0 0 1 0 1 0 0 1 0 1 0 0 1 0 1 0) (0 1 0 1 0 1 1 0 0 1 0 0 0 1 1 1 1 1 0 1 1 0 0 1 0 0 0 1 1 1 0 0 1 0 0 1 1 0 1 1 0 1 0 0 0 1 0 0 0 1) (0 1 1 1 1 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 1 0 1 1 0 1 0 1 1 1 0 0 0 0 0 0 0 1 1 1 0 0 0 0 1 1 0 0 1) (1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 1 0 1 1 1 1 1 0 1 1 0 0 0 0 0 0 1 1 1 1 1 0 1 1) (1 1 0 1 0 1 1 0 1 1 0 0 0 1 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1) (1 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 0 0 0 0 1 1 1 0 0 0 0 0 1 1 1 0 1 0 0 0 1 0 1 1 1 0 1 0 0 1 0 1 0 1) (1 1 1 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 1 1 1 0 1 0 0 0 0 1 0 1) (0 0 1 1 1 0 1 0 1 1 1 0 0 1 1 1 0 1 1 0 1 0 0 0 0 0 0 0 0 0 1 1 0 1 0 1 1 1 1 1 1 0 0 1 0 1 0 1 1 0) (0 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0 1 1 1 1 0 1 0 0 0 0 0 1 0 1 0 0 0 1 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0) (0 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 1 1 1 1 1 0 0 0 1 1 1 0 0 0 1 1 1 1 1 0 1 1 0 1 0 0 1 1 1 0 1 1 0 1) (1 0 0 1 0 0 1 1 1 0 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 0 0 1 1 1 1 0 1 0 1 1 0 0 1 0 1 1 0) (0 1 1 0 1 0 0 1 1 0 0 1 0 0 0 0 0 1 1 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 1 1 1 0 1 1 0 0 1 1 1 1 0) (0 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 0 1 1 0 1 1 1 1 1 0 0 1 0 0 0 1 1 0 1 1 0 1 1 0 0 1 1 0 0 0 0 1 1) (0 0 0 1 0 0 1 1 1 0 0 1 1 0 0 1 1 0 1 1 1 0 1 1 1 0 0 1 1 1 1 0 1 1 1 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1) (0 0 1 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 0 1 1 1 1 0 1 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 1 1) (1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 1 1 0 0 0 0 1 1 0 1 0 1 1 0) (1 0 0 1 1 1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 1 1 0 0 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 0 0 1 1 1 0) (0 1 0 0 1 1 0 1 1 0 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 1 1 1 1 0 1 1 1 1 1 0 0 1 0 1 0 1 0 0 0 0 1) (1 1 1 1 1 1 0 0 0 0 1 1 0 1 0 0 0 1 0 1 1 1 0 0 1 1 0 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 1 1) (0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 0 1 0 0 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 1 1 1 0 1 0 1 1 0 1) (0 0 0 0 0 0 1 1 0 1 0 0 0 1 1 1 0 1 1 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 1 0 1 1 1 0 1 0 0 1 0 0 1 0) (1 0 0 0 0 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 0 1 1 0 0 0) (1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 1 0 1 0 1 1 0 0 1 0 1 1 1 0 0 1 1 1 1 0 0 1) (0 1 1 1 1 0 1 1 1 0 1 0 1 1 0 0 0 0 0 1 0 1 0 0 0 0 0 0 1 0 0 1 0 1 0 0 1 0 0 0 1 0 0 1 0 0 0 1 1 1) (0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 0 1) (1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 0 0 1 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 0 0 1 1 1 0 0 1 0 0) (0 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 0 1 1 0 1 1 1 1 1 1 0 0 1 0 0 1 0 0 1 0 1 1 1 0 1 0 1 0 0 0 0 1 1) (0 1 0 1 1 1 1 0 1 0 1 0 0 1 1 0 0 1 0 1 0 0 1 0 1 1 0 0 1 1 0 1 0 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1) (0 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 0 1 0 1 1 1 0 0 1 0 1 0 0 1 0 0 1 1 1 0 0 1 0 1 0 0 0 0 1 1 1) (1 1 0 0 1 1 1 1 1 1 1 0 1 0 0 0 0 0 1 0 0 1 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 1 1 1 1 1 1 0 0 0 0 0 1 1) (0 1 1 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 0 0 1 1 1 1 1 1 1 0 0 1 0 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1) (0 1 0 0 1 1 1 0 1 0 1 1 1 0 1 0 0 1 1 1 1 1 0 0 1 1 1 0 0 0 0 1 0 1 0 1 1 1 0 1 0 1 1 0 0 0 1 0 0 0) (0 0 1 1 0 1 1 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0 0 0 1 0 1 1 1 0 0 0 1 1 1 0 1 0 0 1 1 0 1 1 1 1 0 0 1 1))
(0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 0 1 1 1 1 0 1 0 0 0 0 1 1 1 1 1 0 0 1 1 0 0 1 0 0 1)
(1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0)
(3027 999 (1 0 0 1 1 1 0 1 1 1 1 0 1 1 1 1 1 0 1 1 0 1 1 1 1 0 0 1 0 1 0 0 0 0 1 0 1 0 0 1 1 0 1 0 0 0 1 0 1 0))
_$
将p2由0.95调整到0.99,M_re由300调到400,结果好很多。 _$ _$ (setq n 50 w_tol 1000 wlst '(80 82 85 70 72 70 66 50 55 25 50 55 40 48 50 32 22 60 30 32 40 38 35 32 25 28 30 22 50 30 45 30 60 50 20 65 20 25 30 10 20 25 15 10 10 10 4 4 2 1)clst '(220 208 198 192 180 180 165 162 160 158 155 130 125 122 120 118 115 110 105 101 100 100 98 96 95 90 88 82 80 77 75 73 72 70 69 66 65 63 58 56 50 30 20 15 10 8 5 3 1) M_pop 100 M_re 400 plst nil)
(defun rnd ()
(* (rem (getvar "cputicks") 1e4) 1e-4)
)
(defun ff (n)
(setq lst '((0 5 1)(5 10 0)) vlst nil)
(repeat n
(setq num (fix (rem (getvar "CPUTICKS") 11)))
(setq vlst (cons (car (vl-remove nil (mapcar '(lambda (x) (if (<= (car x) num (cadr x)) (last x) nil)) lst))) vlst))
)
)
(defun dfun (e1 e2)
(apply '+ (mapcar '(lambda (x y) (boole 6 x y)) e1 e2))
)
(defun move (e1 e2)
(setq dis (dfun e1 e2) k (/ (fit e1) 1.0 (fit e2)) p2 0.991)
(mapcar '(lambda (x y) (if (< (setq p (rnd)) (+ (* k 0.4) (/ 1.0 (+ 2.0 dis)))) y (if (< (+ (* k 0.4) (/ 1.0 (+ 2.0 dis))) p p2) x(boole 7 y (fix (+ 0.5 (rnd))))))) e1 e2)
)
(defun fit (e)
(if (<= (apply '+ (mapcar '* wlst e)) w_tol)
(setq fitvalue(apply '+ (mapcar '* clst e)))
(setq fitvalue0)
)
)
(repeat M_pop
(setq plst (cons (ff n) plst))
)
(setq pest (cdr (car (vl-sort (mapcar '(lambda (x) (cons (fit x) x)) plst)'(lambda (e1 e2) (> (car e1) (car e2)))))))
(repeat M_re
(progn
(setq plst (mapcar '(lambda (x) (move x pest)) plst))
(setq pest_new (cdr (car (vl-sort (mapcar '(lambda (x) (cons (fit x) x)) plst)'(lambda (e1 e2) (> (car e1) (car e2)))))))
(if (> (fit pest_new) (fit pest)) (setq pest pest_new) (setq pest pest))
)
)
(list (fit pest) (apply '+ (mapcar '* wlst pest)) pest)
nil
nil
RND
FF
DFUN
MOVE
FIT
((1 1 0 1 0 0 0 0 1 1 1 1 1 1 1 0 1 0 0 1 0 1 0 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 1 1 0 0 1 1 1 1 0) (0 0 0 1 1 0 0 0 0 1 0 1 1 1 0 0 0 1 0 0 0 1 1 0 1 1 1 0 0 0 0 1 1 0 0 1 1 0 0 0 0 1 0 1 1 0 0 1 0 0) (0 0 1 1 0 1 1 0 1 1 1 0 1 0 0 0 0 1 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 0) (1 1 1 0 0 0 1 0 1 1 1 0 1 0 0 0 0 1 1 0 1 1 0 1 1 1 0 1 0 0 0 1 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 0 1 1) (0 0 0 0 1 0 0 0 1 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 0 1) (0 1 1 0 0 1 1 0 0 1 1 1 1 0 0 1 1 0 1 1 0 0 1 0 0 0 0 1 1 1 0 0 0 1 1 1 0 1 0 1 0 0 0 0 0 1 1 0 1 0) (0 0 1 0 1 0 0 0 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 1 0 0 0 1 1 0 1 1 1 0 0 0 0 0) (1 1 1 1 0 0 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 1 0 0 1 0 0 0 1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 0 1 1 0) (1 0 0 0 0 0 0 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 0 0 0 0 0 1 0 1 0 0 1 0 1 1 0 1 0 1 1 0 1 1 0 1 1 0 1 0) (0 0 0 0 1 0 1 0 1 0 1 1 0 0 0 0 1 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 0 0 0 1 0 0 1 1 1 0 1 0 0 1 1 1 1 1) (0 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 0 1 0 1 0 0 0 1 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 1) (0 0 0 1 1 1 0 0 1 1 1 1 0 1 0 1 0 1 1 1 1 1 0 1 0 0 1 1 1 1 1 0 1 0 1 0 0 1 0 1 1 0 0 1 0 0 1 1 1 1) (1 1 1 1 1 0 1 1 0 1 0 0 1 0 1 1 1 1 0 0 0 1 1 0 1 1 1 0 0 0 0 1 0 1 1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1) (1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0) (1 0 1 1 0 0 0 1 1 0 1 1 1 1 1 1 0 1 0 1 0 1 1 0 0 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 1 1 0 0 1 1 1 0 1 1) (1 1 1 1 1 0 1 1 0 1 0 1 0 1 1 0 1 0 1 0 1 1 0 0 0 1 1 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1) (0 1 0 1 1 0 0 1 1 1 0 1 0 1 1 1 1 0 1 0 1 1 1 1 1 0 1 1 1 1 0 0 1 0 0 0 0 1 0 0 1 0 0 0 0 1 1 0 1 0) (0 1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 1 1 0 1 0 1 0 1 0 0 1 0 0 1 1 0 0 1 1 0 1 1 0 1 1 1 1 1 0 0 1 0 1) (0 1 1 0 0 0 1 1 0 1 0 0 1 1 0 0 0 0 1 1 1 0 0 1 1 1 1 0 0 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 0 0 0 0 0) (0 0 0 1 0 0 0 0 1 1 1 1 1 0 0 0 0 1 1 0 1 0 0 0 0 0 0 1 1 1 1 1 1 0 0 1 0 1 0 0 1 1 0 0 1 1 1 0 1 0) (1 1 1 0 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 1 0 0 0 1 1 1 1 1 1 1 1 0 0 0 1 0 1 0 1) (0 0 0 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 0 0 1 1 0 0 0 0 1 1 0 1 0 1 0 0 0 0 1 1 0 0 1 0 1 0 0 0 0 0 1 1) (0 0 1 1 1 1 0 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 1 1 0 1 1 1 1 0 1 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 0 0 1 0) (0 1 1 1 0 1 1 1 1 0 1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 0 1 1 1 1 1 1 0 1 1 1 0 1 0 0 1 1 0 0 1 1 0 1 0 1) (0 0 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 0 0 1 1 1 0 0 1 0) (1 0 0 0 0 0 0 0 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 1 1 0 0 0 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 0 1 0) (1 0 0 1 1 0 1 0 0 1 0 0 1 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 1) (0 1 1 1 1 1 1 1 0 1 0 0 0 1 1 1 0 1 1 0 1 0 1 0 0 0 1 1 0 0 1 0 0 1 1 1 1 1 0 0 0 1 0 0 1 1 1 1 1 1) (1 1 0 1 1 1 0 0 0 0 0 1 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 1 0 1 1 1 0 1 0 1 1 1 1 0 0 1 0 1 1 0 0 1 1 1) (1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 0 0 0 1 0 1 0 1 0 0 1 1 0 0) (0 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 0 0 0 0 0 0 0 0 1 0 1 1 0 0 1 1 0 0 1 0 1 0 0 0 1 1 0 0 0 1 0 1 0 0) (0 1 1 0 1 0 0 1 1 1 1 0 1 1 1 1 1 1 1 1 1 0 1 0 1 0 0 1 1 1 1 0 0 1 0 1 1 1 0 1 0 1 0 0 0 1 0 1 0 0) (1 0 0 1 0 1 1 1 0 0 1 1 0 1 0 0 1 0 1 0 0 0 0 1 0 0 1 0 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 1 1 0 1 1 0 0) (1 0 1 1 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1) (0 0 1 0 1 0 0 0 0 0 1 1 0 0 1 1 1 0 0 1 0 0 1 1 1 0 1 0 0 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 1 1 1 1 1) (1 1 0 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 0 1 0 0 1 0 1 0 1 1 0 0 1 1 0 1 0 1 0 0 0 0 1 0) (0 1 1 1 1 0 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1 0 1 1 1 1) (1 0 1 0 0 1 1 1 1 1 1 1 1 0 0 1 0 0 1 1 1 0 1 1 0 0 0 1 0 1 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 1 0) (0 0 1 1 0 0 1 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 1 1 1 1 1 0 1 1 0 1 0 0 1 0 1 0 1 0 1) (0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 1 1 0 0 0 1 0 1 0 0 0 1 1 0 1 1 0 1 1 1 0 1 1 1 0 1 1 0 1 0 1) (0 1 0 0 1 0 0 0 0 1 0 1 1 0 1 0 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 0 0 1 0 0 1 1) (1 0 1 1 1 1 0 1 1 1 0 1 0 1 0 1 0 0 1 0 1 0 0 0 1 1 1 1 1 1 0 1 0 1 1 0 0 0 0 1 1 0 0 1 1 1 1 0 1 1) (0 0 0 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 0 0 1 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 0 1 0 0 1 0 1 0 1 1 0 1 1) (0 0 1 0 0 1 0 1 0 1 0 0 0 0 1 1 0 1 1 1 0 1 0 1 1 0 0 0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0) (1 1 1 1 0 1 1 1 1 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 1 1 0 0 1 1 0 0) (0 1 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 0 0 1 0 0 0 1 0 0 1 1 1 1 0 1 0 1 1 0 1 1 1 1 0 0 1 1 0 1) (1 0 0 1 1 0 1 0 1 1 1 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0 0 1 0 0 0 0 0 0 1 0 0 1 1 0 1 0 0 0 1 1 0 1 1 1) (0 1 0 0 0 1 1 0 1 0 1 0 1 0 0 1 1 1 0 0 1 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 0 0 1 0 0 1 0 0 1 1 1 0 0) (0 0 1 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 0 1 1 1 0 1 0 0 1 1 1 0 0 0 1 1 1 0 0 1 0 0 1 1 1 1) (1 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 0 0 0 1 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 0 0 1 1 1 0 1 1 0 0 0 1 1 0) (0 1 0 0 1 0 0 1 0 1 1 0 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 1 1 0 0 0 0 1 0 1 0 0 0 0 1 1) (1 0 0 0 0 0 1 1 0 1 1 1 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 1 1 1 0 1 0 1 1 0 0 1 1 0 1 1 0 0) (0 1 1 1 0 1 1 0 1 1 1 0 0 0 0 0 1 0 1 0 1 1 0 1 0 1 0 1 1 1 0 0 0 0 1 0 1 0 1 0 0 1 1 1 0 1 1 1 1 0) (0 0 1 0 0 0 0 0 0 0 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0 1 0 0 1 1 1 0 1 1 0 1 1 1 0 0 1 1 1 0 1 1 1 0 1) (0 0 0 1 0 0 0 0 1 0 1 1 0 1 0 1 1 1 0 0 1 1 1 1 0 1 0 1 1 0 0 0 0 1 1 1 0 0 0 1 0 1 0 0 1 1 0 1 1 1) (1 1 1 1 1 0 0 1 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 0 1 0 0 0 1 0 0 0 1 0 0 0 0 1 1 0 1) (1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 1 1 0 1 0 1 0 0 0 1 1 0 0 1 1 1 1 1 1 1 0 0 0 0 1 1 1 0 0 0 0) (1 0 0 1 1 0 1 1 0 0 0 0 0 0 0 1 0 1 1 1 1 0 1 1 0 0 0 0 0 1 1 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 0 1 1 0) (0 0 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 0 1 1 1 0 0 1 0 1 0 1 0 1 0 1 1 0 1 0 0 1 0 1 1 0 1 1 0 0 1 1 0 1) (0 0 1 1 0 1 1 1 1 0 1 1 0 0 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 0 0 1 0 0 0 1 1 0 1 0) (0 1 1 0 0 1 1 1 1 1 0 1 1 0 0 1 0 1 1 0 1 0 0 0 1 1 0 0 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 0 1 0 1 1 0 1) (1 0 1 0 1 1 1 1 1 1 1 0 1 0 1 0 1 1 1 1 1 1 1 1 0 1 0 1 1 0 0 1 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0) (0 0 1 0 1 0 0 0 1 1 1 1 1 0 1 1 1 0 1 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 0 0 0 0 1 1 1 1 1 1 0 0 1 1 1) (0 1 1 1 0 0 0 1 0 0 1 0 1 0 1 0 0 1 0 1 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 1 0 1 1 0 1 0 1 1 0 1 1 0 0 0) (0 1 1 1 1 0 0 1 1 1 1 1 0 0 1 0 1 1 1 1 0 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 0 1 0 1 0 1 1 0 0 0 1 1 0 0) (0 0 1 0 1 0 0 1 1 1 1 1 1 0 1 1 0 0 1 0 1 1 1 0 0 1 0 0 1 0 0 0 1 1 1 0 0 0 0 0 0 1 0 0 0 1 0 1 1 1) (0 1 1 1 0 1 1 0 1 1 0 0 0 1 1 0 1 0 1 1 1 0 1 1 1 1 1 1 1 1 1 0 0 1 1 0 0 1 1 0 0 1 1 0 1 0 1 0 1 0) (0 1 1 1 0 0 0 0 1 0 1 1 1 1 1 0 0 1 1 1 1 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 0 0 1 0 1 0 1 0 0 1 0 0 1) (0 0 1 0 1 1 0 0 1 0 1 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 1 0 1 1 1 0 0 1 0 0) (0 1 0 0 1 1 1 1 0 0 1 0 1 1 1 1 0 1 1 0 1 1 0 0 1 0 1 1 1 1 1 1 1 0 1 1 1 0 1 1 0 1 0 1 0 0 1 1 0 0) (1 1 0 0 1 0 1 0 1 1 1 0 1 1 0 1 1 1 0 1 0 1 1 1 0 0 0 1 0 0 1 1 1 0 1 0 0 0 1 1 0 1 1 1 1 0 0 0 0 1) (1 1 0 0 0 1 1 0 1 0 0 1 0 1 1 1 0 1 0 0 0 1 1 1 1 1 0 1 0 0 1 0 0 1 1 1 1 0 1 0 1 0 1 1 1 0 0 0 1 0) (0 1 0 1 0 1 1 0 0 0 0 0 0 0 1 1 0 0 1 1 0 1 1 1 1 0 1 1 0 1 0 0 1 0 1 0 0 0 0 0 1 1 0 1 0 1 0 0 0 1) (0 1 0 1 0 1 0 1 0 1 1 1 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 0 0 1 0 0 1 1 1 1 0 0 0 1 1 1 0 0 0 1 0 1 0) (1 1 1 0 0 1 0 0 1 1 1 0 0 0 1 1 0 1 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 1 0 0 0 0 0 0 1 1 0 1 1 0 1) (1 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 1 1 0 0 0 1 1 1 0 0 1 1 1 1 1 1 0 1 0 1 0 0 0 1 0 1 1 0 1 1 1) (1 1 1 0 0 0 0 0 0 0 1 0 1 1 0 1 1 0 0 1 1 1 1 1 1 0 1 0 0 1 0 0 0 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1) (0 1 0 0 1 0 0 0 1 1 1 1 0 1 0 1 0 0 0 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 0 1 0 1 1 0 0 0 1 0 0 1 1 0 0 0) (0 0 1 0 0 0 1 1 0 0 0 1 0 1 1 0 1 1 0 1 0 1 1 0 0 1 1 0 0 0 1 0 0 1 0 0 0 1 0 1 1 1 0 0 1 0 0 1 0 1) (1 1 1 1 1 1 0 0 0 1 0 1 1 1 1 0 1 0 1 0 1 0 0 1 1 0 1 0 0 0 1 1 1 1 0 0 1 0 1 0 0 1 0 0 0 0 1 1 1 1) (1 1 0 0 1 1 0 1 1 1 1 1 1 1 0 1 1 1 0 0 0 0 1 1 1 0 1 1 1 0 0 0 0 0 1 1 0 0 1 1 1 1 1 0 1 1 0 0 0 1) (1 0 1 1 0 0 1 0 0 0 1 0 0 0 0 0 1 0 0 1 1 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 0 0 0 0 1) (0 0 0 1 0 1 0 1 1 1 0 0 0 1 1 1 1 0 0 0 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 0 0 1 1 1 1 0 1 0 0 1 0) (1 1 1 0 1 0 0 0 0 1 1 0 1 1 1 1 1 0 1 1 0 0 0 1 0 0 0 1 1 1 1 1 1 1 0 1 0 1 1 1 0 0 0 0 0 1 0 0 1 1) (0 0 0 1 1 1 1 0 0 1 0 0 1 0 0 0 1 1 0 1 0 1 1 0 0 1 1 1 1 0 1 1 0 0 0 1 1 1 0 0 1 0 1 1 1 0 1 0 1 1) (1 1 1 1 0 1 1 1 1 1 1 0 0 1 0 0 0 0 1 0 1 0 0 1 1 1 1 0 0 0 0 1 0 0 0 1 1 1 0 1 1 1 1 1 0 1 1 0 0 0) (0 0 0 0 0 1 1 0 0 1 0 0 0 0 1 0 0 0 1 0 0 1 1 1 1 1 0 1 1 1 1 1 0 0 1 0 1 1 0 0 1 0 1 0 0 0 1 0 0 1) (1 1 1 1 1 1 0 1 0 0 1 0 0 1 1 0 1 0 1 1 0 0 1 0 0 1 0 1 0 1 1 0 1 1 0 1 1 1 1 0 1 1 0 0 0 1 1 1 1 0) (0 0 0 1 1 1 1 1 0 1 1 0 0 1 0 1 0 1 1 1 1 1 1 0 0 0 1 1 1 0 1 1 0 0 0 0 1 1 1 0 0 1 0 0 1 0 0 1 1 0) (1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 1 0 0 1 1 0 1 0 0 0 1 0 0 0 1 0 1 1 0 0 1 1 1 1 1 1 0 1 1 1 0 1 1 0 0) (1 1 0 0 0 1 1 1 1 0 0 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 1 1 0 0 1 1 1 1 0 0 0 1 0 0 1 0 0 1 0 1 0 1 1 0) (0 1 0 0 0 1 1 0 0 1 0 1 1 0 0 0 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 0 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 1) (0 1 0 1 0 1 0 0 0 1 0 1 0 0 1 0 1 1 1 1 0 0 1 0 1 1 1 1 1 0 0 1 1 1 0 1 1 1 0 1 0 1 0 1 1 0 1 0 0 1) (1 1 0 1 1 0 1 0 1 0 1 0 0 0 0 0 1 1 1 1 1 0 1 0 1 1 0 0 1 0 1 0 1 1 1 1 0 0 1 1 1 1 0 0 0 0 1 0 1 0) (1 0 0 0 1 0 1 0 1 1 1 1 1 0 0 0 0 1 1 1 1 0 0 0 0 0 1 1 1 0 0 1 1 1 0 1 0 0 0 1 1 0 0 0 0 0 0 0 0 0) (0 0 1 0 0 1 1 0 1 0 0 1 1 1 1 1 1 0 1 0 0 0 0 0 0 1 1 0 0 1 0 0 0 0 0 1 0 1 0 0 1 0 1 1 1 0 0 0 1 1) (0 1 1 1 1 0 0 0 1 0 1 1 1 0 1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 0 1 1 1 0 0 1 0 0 1 1 0 0 0 0 1 0 0 1 1 0) (1 1 0 1 1 1 1 1 0 1 1 1 0 1 1 0 0 0 0 0 1 1 0 1 1 0 1 0 1 1 0 1 0 1 1 1 1 0 1 0 0 1 1 1 1 1 1 1 0 1) (0 1 1 1 0 0 1 0 0 0 1 1 1 1 0 1 0 0 1 0 1 1 1 1 1 1 1 1 0 0 1 0 1 1 1 0 1 1 0 0 1 1 1 0 1 1 1 1 1 0) (1 1 1 1 0 0 0 1 1 1 1 1 0 1 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 1 0 1 0 1 0 0 0 0 1 1 1 0 1 0 1 1 0 1 1))
(1 0 0 1 1 0 0 0 1 1 1 0 1 0 1 1 1 0 0 0 0 0 1 1 1 0 1 1 1 0 1 1 0 1 1 0 1 0 1 1 1 1 1 1 1 1 1 1 1 0)
(1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 1 0)
(3054 1000 (1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 0 1 0 1 0 0 1 0 0 0 0 1 0 1 1 1 0))
_$ 看来p2微小变动对结果影响很大!!! :'(被误认为是灌水刷屏,被禁言一周了,太受打击了。 你的问题太高深了,版主都不懂! 我比较好奇的是哪位版主出的手
主要是感觉不少版主现在很少出现了 mahuan1279 发表于 2019-12-16 00:10
_$ _$ (setq n 50 w_tol 1000 wlst '(80 82 85 70 72 70 66 50 55 25 50 55 40 48 50 32 22 60 30 32 40 38 ...
_$ (defun ff(nn ww_tol ppts_front pt)
(setq k (- nn (length ppts_front)))
(setq pt0 (last ppts_front))
(setq ww_max (- (* (last pt)(- w_tol (apply '+ (mapcar 'car ppts_front)))) (* k (cadr pt))))
(if (>= ww_max 0)
(setq fva 0)
(setq fva (/ (* (abs (/ ww_max (- ww_tol (apply '+ (mapcar 'car ppts_front)) (* k (car pt))))) (last pt))
(last pt0)
)
)
)
fva
)
(setqw_tol 1000
wlst '(80 82 85 70 72 70 66 50 55 25 50 55 40 48 50 32 22 60 30 32 40 38 35 32 25 28 30 22 50 30 45 30 60 50 20 65 20 25 30 10 20 25 15 10 10 10 4 4 2 1)
clst '(220 208 198 192 180 180 165 162 160 158 155 130 125 122 120 118 115 110 105 101 100 100 98 96 95 90 88 82 80 77 75 73 72 70 69 66 65 63 58 56 50 30 20 15 10 8 5 3 1)
n(length wlst)
flag t
pts_lst nil
)
(setq rlst (mapcar '(lambda (wx wy) (/ wy 1.0 wx)) wlst clst))
(setq pts_front (vl-sort (mapcar '(lambda (x y z) (list x y z)) wlst clst rlst) '(lambda (ea eb) (> (caddr ea) (caddr eb)))))
(while flag
(setqn1(length pts_front))
(setqn2 (/ n1 2))
(setq pts_lst (append (member (nth n2 pts_front) pts_front) pts_lst))
(setq pts_front (reverse (member (nth (- n2 1) pts_front) (reverse pts_front))))
(if (<= (apply '+ (mapcar 'car pts_front)) w_tol)
(setq flag nil)
)
)
(while (<= (apply '+ (mapcar 'car pts_front)) w_tol)
(setq ptmax (cdr (car (vl-sort (mapcar '(lambda (ppt) (cons (ff n w_tol pts_front ppt) ppt)) pts_lst) '(lambda (ax bx) (> (car ax) (car bx)))))))
(setq pts_front (reverse (cons ptmax (reverse pts_front))))
(setq pts_lst (vl-remove ptmax pts_lst))
)
(list (apply '+ (mapcar 'car (reverse (cdr (reverse pts_front)))))
(apply '+ (mapcar 'cadr (reverse (cdr (reverse pts_front)))))
(reverse (cdr (reverse pts_front)))
)
FF
nil
(2.75 2.53659 2.32941 2.74286 2.5 2.57143 2.5 3.24 2.90909 6.32 3.1 2.36364 3.125 2.54167 2.4 3.6875 5.22727 1.83333 3.5 3.15625 2.5 2.63158 2.8 3.0 3.8 3.21429 2.93333 3.72727 1.6 2.56667 1.66667 2.43333 1.2 1.4 3.45 1.01538 3.25 2.52 1.93333 5.6 2.5 1.2 1.33333 1.5 1.0 0.8 1.25 0.75 0.5)
((25 158 6.32) (10 56 5.6) (22 115 5.22727) (25 95 3.8) (22 82 3.72727) (32 118 3.6875) (30 105 3.5) (20 69 3.45) (20 65 3.25) (50 162 3.24) (28 90 3.21429) (32 101 3.15625) (40 125 3.125) (50 155 3.1) (32 96 3.0) (30 88 2.93333) (55 160 2.90909) (35 98 2.8) (80 220 2.75) (70 192 2.74286) (38 100 2.63158) (70 180 2.57143) (30 77 2.56667) (48 122 2.54167) (82 208 2.53659) (25 63 2.52) (72 180 2.5) (66 165 2.5) (40 100 2.5) (20 50 2.5) (30 73 2.43333) (50 120 2.4) (55 130 2.36364) (85 198 2.32941) (30 58 1.93333) (60 110 1.83333) (45 75 1.66667) (50 80 1.6) (10 15 1.5) (50 70 1.4) (15 20 1.33333) (4 5 1.25) (60 72 1.2) (25 30 1.2) (65 66 1.01538) (10 10 1.0) (10 8 0.8) (4 3 0.75) (2 1 0.5))
nil
((72 180 2.5) (66 165 2.5) (40 100 2.5) (20 50 2.5) (30 73 2.43333) (50 120 2.4) (55 130 2.36364) (85 198 2.32941) (30 58 1.93333) (60 110 1.83333) (45 75 1.66667) (50 80 1.6) (10 15 1.5) (50 70 1.4) (15 20 1.33333) (4 5 1.25) (60 72 1.2) (25 30 1.2) (65 66 1.01538) (10 10 1.0) (10 8 0.8) (4 3 0.75) (2 1 0.5))
(976 3037 ((25 158 6.32) (10 56 5.6) (22 115 5.22727) (25 95 3.8) (22 82 3.72727) (32 118 3.6875) (30 105 3.5) (20 69 3.45) (20 65 3.25) (50 162 3.24) (28 90 3.21429) (32 101 3.15625) (40 125 3.125) (50 155 3.1) (32 96 3.0) (30 88 2.93333) (55 160 2.90909) (35 98 2.8) (80 220 2.75) (70 192 2.74286) (38 100 2.63158) (70 180 2.57143) (30 77 2.56667) (48 122 2.54167) (82 208 2.53659)))
_$
页:
[1]