明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 850|回复: 9

[源码] 采用萤火虫算法求解0-1背包问题

  [复制链接]
发表于 2019-12-15 16:54 | 显示全部楼层 |阅读模式
_$ (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 fitvalue  0)
)
)
(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))
_$
"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2019-12-15 20:51 | 显示全部楼层
_$ (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 fitvalue  0)
)
)
(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))
_$
 楼主| 发表于 2019-12-15 20:52 | 显示全部楼层
本帖最后由 mahuan1279 于 2019-12-15 20:55 编辑

适当调大M_pop 和 M_re ,可能会获得更好的解,但运行时间将会延长。当物品数量较多时,容易陷入局部最值处(非全局最大值处),所得结果质量很差(还不如按单价由高到低的贪心算法所得的结果好)。出发点仅仅是想实现萤火虫算法(运行结果质量很差),仅做萤火虫算法案例参考。
 楼主| 发表于 2019-12-16 00:08 | 显示全部楼层
_$ (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 fitvalue  0)
)
)
(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,结果好很多。
 楼主| 发表于 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 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 fitvalue  0)
)
)
(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))
_$
 楼主| 发表于 2019-12-16 00:11 | 显示全部楼层
看来p2微小变动对结果影响很大!!!
 楼主| 发表于 2019-12-23 09:22 | 显示全部楼层
被误认为是灌水刷屏,被禁言一周了,太受打击了。
发表于 2019-12-23 12:29 | 显示全部楼层
你的问题太高深了,版主都不懂!
发表于 2019-12-23 14:25 | 显示全部楼层
我比较好奇的是哪位版主出的手
主要是感觉不少版主现在很少出现了
 楼主| 发表于 2019-12-23 20:22 | 显示全部楼层
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
)
(setq  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)   
       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
        (setq  n1  (length pts_front))
    (setq  n2 (/ 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)))
_$
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-4-25 04:30 , Processed in 0.350127 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表