明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1887|回复: 11

[自我挑战] 采用交叉熵算法求解0-1背包问题

[复制链接]
发表于 2020-12-15 23:22:46 | 显示全部楼层 |阅读模式
(defun c:tt()
(setq w_tol 700  wlst '(24   39   26   10   25   75   8   31  37   48   46    18   49   12    50    92    200    145    95   65)    ;;;各物品重量
                        clst '(100   120  70 26 60  150  16 60 70  90  78  30  80  19 75  120  240  160 100  25))   ;;;各物品价值
(setq n (length wlst) m 3000  r 0.9995 pflst nil pslst nil)
(repeat n
  (setq pflst (cons 0.5 pflst))
  (setq pslst (cons 1.0 pslst))
)
(defun rnd ()
  (*(rem (getvar "cputicks") 1e4) 1e-4)
)
(defun xfun(lst)
  (mapcar '(lambda (x) (if (< (rnd) x) 1 0)) lst)
)
(defun check(lst)
  (setq s 0 c 0)
  (mapcar '(lambda (x y) (if (<= (setq s (+ s (* x y))) w_tol) (progn (setq c s) y)(progn (setq s c) 0))) wlst lst)
)
(while (> (apply 'max (mapcar '(lambda (x y) (abs (- y x))) pflst pslst)) 0.0001)
(setq xlst nil)
(repeat m
  (setq xlst (cons (xfun pflst) xlst))
)
(setq xlst (mapcar 'check xlst))
(setq vlst (mapcar '(lambda (x) (apply '+ (mapcar '* x clst))) xlst))
(setq pt (nth (fix (* r m))
              (mapcar 'cadr (vl-sort (mapcar '(lambda (x) (list (float x) x)) vlst) '(lambda (ea eb) (< (car ea) (car eb)))))
          )
)
(setq evlst (mapcar '(lambda (y) (if (>= y pt) 1 0)) vlst) en (float (apply '+ evlst)))
(setq pslst (mapcar '(lambda (k) (/ k en)) (mapcar '(lambda (z) (apply '+ (mapcar '* z evlst)))  (apply 'mapcar (cons 'list xlst)))))
(setq pflst (mapcar '(lambda (x y) (+ (* 0.6 x) (* 0.4 y))) pslst pflst))
)
(setq xxlst (car (vl-remove nil (mapcar '(lambda (x) (if (= (apply 'max vlst) (apply '+ (mapcar '*  x clst))) x nil)) xlst))))
(list (apply '+ (mapcar '* clst xxlst))
      (apply '+ (mapcar '* wlst xxlst))
       xxlst
)
)

命令: tt
(1259 697 (1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0))

命令:
命令: tt
(1259 697 (1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0))

命令:
命令: tt
(1259 697 (1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0))

命令:
命令: tt
(1259 697 (1 1 1 1 1 1 0 1 1 1 1 0 1 0 1 1 0 1 0 0))

命令:
命令: tt
(1264 685 (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 1 0))

命令:
命令: tt
(1284 698 (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0))

命令:

评分

参与人数 1明经币 +3 金钱 +30 收起 理由
highflybird + 3 + 30

查看全部评分

 楼主| 发表于 2021-1-7 11:42:49 | 显示全部楼层
本帖最后由 mahuan1279 于 2021-1-7 11:51 编辑

(defun tt()
(setq w_tol 7718  
      clst '(597     596     593     586    581    568     567  560     549     548    547    529    529    527    520     491     482    478    475    475    466     462    459    458    454    451    449    443    442    421    410    409     395    394     390    377    375    366  361    347    334    322    315    313    311    309  296     295      294    289    285    279    277    276    272    248    246    245    238    237     232     231    230    225     192     184     183     176     174    171    169    165    165     154    153     150     149     147     143     140     138     134     132     127    124    123     114     111     104     89     74    63      62    58    55    48    27     22    12    6    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      60     58    56     50    30    20    15    10    8    5    3    1)   
      wlst '(54     183  106  82     30    58    71  166  117     190     90     191 205     128     110     89    63    6     140     86    30    91    156    31     70    199     142     98     178     16     140    31    24    197     101    73     169    73    92     159     71     102     144     151    27     131     209     164     177     177     129    146     17    53     164     146     43     170     180     171     130     183    5     113    207    57    13     163    20     63    12    24    9     42    6     109     170     108     46     69    43  175    81    5    34     146     148     114     160     174     156     82     47     126     102    83    58    34    21    14     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    25    30    45    30    60    50    20    65    20    25     30     10    20     25     15     10     10    10    4    4    2    1))
(setq n (length wlst) m 1000  r 0.9 pflst nil pslst nil)
(repeat n
  (setq pflst (cons 0.5 pflst))
  (setq pslst (cons 1.0 pslst))
)
(defun rnd ()
  (*(rem (getvar "cputicks") 1e4) 1e-4)
)
(defun xfun(lst)
  (mapcar '(lambda (x) (if (< (rnd) x) 1 0)) lst)
)
(defun check(lst)
  (setq s 0 c 0)
  (mapcar '(lambda (x y) (if (<= (setq s (+ s (* x y))) w_tol) (progn (setq c s) y)(progn (setq s c) 0))) wlst lst)
)
(setq valst '(0 0))
(while (> (apply 'max (mapcar '(lambda (x y) (abs (- y x))) pflst pslst)) 0.001)
(setq xlst nil)
(repeat m
  (setq xlst (cons (xfun pflst) xlst))
)
(setq xlst (mapcar 'check xlst))
(setq vlst (mapcar '(lambda (x) (apply '+ (mapcar '* x clst))) xlst))
(setq pt (nth (fix (* r m))
              (mapcar 'cadr (vl-sort (mapcar '(lambda (x) (list (float x) x)) vlst) '(lambda (ea eb) (< (car ea) (car eb)))))
          )
)
(setq evlst (mapcar '(lambda (y) (if (>= y pt) 1 0)) vlst) en (float (apply '+ evlst)))
(setq pslst (mapcar '(lambda (k) (/ k en)) (mapcar '(lambda (z) (apply '+ (mapcar '* z evlst)))  (apply 'mapcar (cons 'list xlst)))))
(setq pflst (mapcar '(lambda (x y z) (+ (* 0.9 x) (* 0.075 y) (* 0.025 z))) pslst pflst ylst))
(setq ylst (car (vl-remove nil (mapcar '(lambda (x) (if (= (apply 'max vlst) (apply '+ (mapcar '*  x clst))) x nil)) xlst))))
(setq vblst (list (apply '+ (mapcar '* clst ylst))
                  (apply '+ (mapcar '* wlst ylst))
                   ylst
                         )
)
(if (> (car vblst) (car valst))
    (setq valst vblst)
)
)
valst
)

_$ (repeat 5 (progn (princ (tt)) (princ " ")))
(29631 7718 (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0)) (29589 7717 (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 0 0 0 0 1 0 0 1 0 0 0 0 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 1 0)) (29283 7710 (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0)) (29531 7715 (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 0 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 1 1 0 1 0 1 1 0 1 1 0 0 1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0)) (29220 7718 (1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 0 0 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 0 0 0 1 1 1 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 0 1 1 1 1 1 1 0 0 0 1 1 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0)) " "
_$
 楼主| 发表于 2020-12-25 12:09:36 | 显示全部楼层
_$  (defun tt()
(setq w_tol 3820  
      wlst '(54 95 36 18  4 71 83 16 27 84 88 45 94 64 14 80  4 23 75 36
             90 20 77 32 58  6 14 86 84 59 71 21 30 22 96 49 81 48 37 28
              6 84 19 55 88 38 51 52 79 55 70 53 64 99 61 86  1 64 32 60
             42 45 34 22 49 37 33  1 78 43 85 24 96 32 99 57 23  8 10 74
             59 89 95 40 46 65  6 89 84 83  6 19 45 59 26 13  8 26  5  9)     ;;;各物品重量
      clst '(297 295 293 292 291 289 284 284 283 283 281 280 279 277 276 275 273 264 260 257  
             250 236 236 235 235 233 232 232 228 218 217 214 211 208 205 204 203 201 196 194
             193 193 192 191 190 187 187 184 184 184 181 179 176 173 172 171 160 128 123 114
             113 107 105 101 100 100  99  98  97  94  94  93  91  80  74  73  72  63  63  62
              61  60  56  53  52  50  48  46  40  40  35  28  22  22  18  15  12  11   6   5))  ;;;各物品价值
(setq n (length wlst) m 1000  r 0.9 pflst nil pslst nil)
(repeat n
  (setq pflst (cons 0.5 pflst))
  (setq pslst (cons 1.0 pslst))
)
(defun rnd ()
  (*(rem (getvar "cputicks") 1e4) 1e-4)
)
(defun xfun(lst)
  (mapcar '(lambda (x) (if (< (rnd) x) 1 0)) lst)
)
(defun check(lst)
  (setq s 0 c 0)
  (mapcar '(lambda (x y) (if (<= (setq s (+ s (* x y))) w_tol) (progn (setq c s) y)(progn (setq s c) 0))) wlst lst)
)
(setq valst '(0 0))
(while (> (apply 'max (mapcar '(lambda (x y) (abs (- y x))) pflst pslst)) 0.001)
(setq xlst nil)
(repeat m
  (setq xlst (cons (xfun pflst) xlst))
)
(setq xlst (mapcar 'check xlst))
(setq vlst (mapcar '(lambda (x) (apply '+ (mapcar '* x clst))) xlst))
(setq pt (nth (fix (* r m))
              (mapcar 'cadr (vl-sort (mapcar '(lambda (x) (list (float x) x)) vlst) '(lambda (ea eb) (< (car ea) (car eb)))))
          )
)
(setq evlst (mapcar '(lambda (y) (if (>= y pt) 1 0)) vlst) en (float (apply '+ evlst)))
(setq pslst (mapcar '(lambda (k) (/ k en)) (mapcar '(lambda (z) (apply '+ (mapcar '* z evlst)))  (apply 'mapcar (cons 'list xlst)))))
(setq pflst (mapcar '(lambda (x y z) (+ (* 0.75 x) (* 0.15 y) (* 0.1 z))) pslst pflst ylst))
(setq ylst (car (vl-remove nil (mapcar '(lambda (x) (if (= (apply 'max vlst) (apply '+ (mapcar '*  x clst))) x nil)) xlst))))
(setq vblst (list (apply '+ (mapcar '* clst ylst))
                  (apply '+ (mapcar '* wlst ylst))
                   ylst
                         )
)
(if (> (car vblst) (car valst))
    (setq valst vblst)
)
)
valst
)(repeat 10 (progn (princ (car (tt))) (princ " ")))
TT
15163 15163 15163 15163 15163 15163 15163 15163 15163 15163 " "
_$
 楼主| 发表于 2020-12-25 12:45:40 | 显示全部楼层
mahuan1279 发表于 2020-12-16 13:10
;;;采取精英保留策略,可大大提高最优解的命中几率
(defun c:tt()
(setq w_tol 878  wlst '(44   46   ...

_$ (defun tt()
(setq w_tol 878  wlst '(44   46   90  72 91 40  75  35  8   54  78   40   77   15    61    17    75  29   75   63)    ;;;各物品重量
                        clst '(92  4  43 83 84 68  92 82 6  44 32  18 56  83 25  96  70  48 14  58))   ;;;各物品价值
(setq n (length wlst) m 1000  r 0.9 pflst nil pslst nil)
(repeat n
  (setq pflst (cons 0.5 pflst))
  (setq pslst (cons 1.0 pslst))
)
(defun rnd ()
  (*(rem (getvar "cputicks") 1e4) 1e-4)
)
(defun xfun(lst)
  (mapcar '(lambda (x) (if (< (rnd) x) 1 0)) lst)
)
(defun check(lst)
  (setq s 0 c 0)
  (mapcar '(lambda (x y) (if (<= (setq s (+ s (* x y))) w_tol) (progn (setq c s) y)(progn (setq s c) 0))) wlst lst)
)
(setq valst '(0 0))
(while (> (apply 'max (mapcar '(lambda (x y) (abs (- y x))) pflst pslst)) 0.001)
(setq xlst nil)
(repeat m
  (setq xlst (cons (xfun pflst) xlst))
)
(setq xlst (mapcar 'check xlst))
(setq vlst (mapcar '(lambda (x) (apply '+ (mapcar '* x clst))) xlst))
(setq pt (nth (fix (* r m))
              (mapcar 'cadr (vl-sort (mapcar '(lambda (x) (list (float x) x)) vlst) '(lambda (ea eb) (< (car ea) (car eb)))))
          )
)
(setq evlst (mapcar '(lambda (y) (if (>= y pt) 1 0)) vlst) en (float (apply '+ evlst)))
(setq pslst (mapcar '(lambda (k) (/ k en)) (mapcar '(lambda (z) (apply '+ (mapcar '* z evlst)))  (apply 'mapcar (cons 'list xlst)))))
(setq pflst (mapcar '(lambda (x y z) (+ (* 0.75 x) (* 0.15 y) (* 0.1 z))) pslst pflst ylst))
(setq ylst (car (vl-remove nil (mapcar '(lambda (x) (if (= (apply 'max vlst) (apply '+ (mapcar '*  x clst))) x nil)) xlst))))
(setq vblst (list (apply '+ (mapcar '* clst ylst))
                  (apply '+ (mapcar '* wlst ylst))
                   ylst
                         )
)
(if (> (car vblst) (car valst))
    (setq valst vblst)
)
)
valst
)(repeat 10 (progn (princ (car (tt))) (princ " ")))
TT
1042 1042 1042 1042 1042 1042 1042 1042 1042 1042 " "
_$
发表于 2020-12-16 12:44:55 | 显示全部楼层
为钻研精神点赞,耶
 楼主| 发表于 2020-12-16 13:10:32 | 显示全部楼层

;;;采取精英保留策略,可大大提高最优解的命中几率
(defun c:tt()
(setq w_tol 878  wlst '(44   46   90  72 91 40  75  35  8   54  78   40   77   15    61    17    75  29   75   63)    ;;;各物品重量
                        clst '(92  4  43 83 84 68  92 82 6  44 32  18 56  83 25  96  70  48 14  58))   ;;;各物品价值
(setq n (length wlst) m 5000  r 0.9995 pflst nil pslst nil)
(repeat n
  (setq pflst (cons 0.5 pflst))
  (setq pslst (cons 1.0 pslst))
)
(defun rnd ()
  (*(rem (getvar "cputicks") 1e4) 1e-4)
)
(defun xfun(lst)
  (mapcar '(lambda (x) (if (< (rnd) x) 1 0)) lst)
)
(defun check(lst)
  (setq s 0 c 0)
  (mapcar '(lambda (x y) (if (<= (setq s (+ s (* x y))) w_tol) (progn (setq c s) y)(progn (setq s c) 0))) wlst lst)
)
(setq valst '(0 0))
(while (> (apply 'max (mapcar '(lambda (x y) (abs (- y x))) pflst pslst)) 0.0001)
(setq xlst nil)
(repeat m
  (setq xlst (cons (xfun pflst) xlst))
)
(setq xlst (mapcar 'check xlst))
(setq vlst (mapcar '(lambda (x) (apply '+ (mapcar '* x clst))) xlst))
(setq pt (nth (fix (* r m))
              (mapcar 'cadr (vl-sort (mapcar '(lambda (x) (list (float x) x)) vlst) '(lambda (ea eb) (< (car ea) (car eb)))))
          )
)
(setq evlst (mapcar '(lambda (y) (if (>= y pt) 1 0)) vlst) en (float (apply '+ evlst)))
(setq pslst (mapcar '(lambda (k) (/ k en)) (mapcar '(lambda (z) (apply '+ (mapcar '* z evlst)))  (apply 'mapcar (cons 'list xlst)))))
(setq pflst (mapcar '(lambda (x y) (+ (* 0.6 x) (* 0.4 y))) pslst pflst))
(setq ylst (car (vl-remove nil (mapcar '(lambda (x) (if (= (apply 'max vlst) (apply '+ (mapcar '*  x clst))) x nil)) xlst))))
(setq vblst (list (apply '+ (mapcar '* clst ylst))
                  (apply '+ (mapcar '* wlst ylst))
                   ylst
                         )
)
(if (> (car vblst) (car valst))
    (setq valst vblst)
)
)
valst
)


命令: tt
(1042 878 (1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 1))

命令:
命令: tt
(1037 863 (1 0 1 1 1 1 1 1 1 1 1 0 1 1 0 1 1 1 0 1))

命令:
命令: tt
(1042 878 (1 0 1 1 1 1 1 1 0 1 0 1 1 1 1 1 1 1 0 1))
发表于 2020-12-17 12:57:47 | 显示全部楼层
目前的水平还看不懂,只能纯支持一下了。
 楼主| 发表于 2020-12-21 23:23:31 | 显示全部楼层

(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 60 58 56 50 30 20 15 10 8 5 3 1))


命令:
命令: tt
(3096 1000 (1 1 0 1 0 1 0 1 1 1 1 0 1 0 1 1 1 0 1 1 0 1 1 1 1 1 1 1 0 1 0 0 0 0
1 0 1 0 0 1 1 0 0 0 0 0 0 0 1 0))

命令:
命令: tt
(3082 1000 (1 1 0 1 0 1 0 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0
1 0 0 0 0 1 0 0 0 0 0 0 1 0 0 0))

命令:
命令: 'VLIDE
命令:
命令: tt
(3096 1000 (1 0 0 1 0 1 1 1 1 1 1 0 1 1 0 1 1 0 1 1 1 1 1 1 1 1 1 1 0 1 0 0 0 0
1 0 1 0 0 1 0 0 0 0 0 0 0 0 0 0))
 楼主| 发表于 2020-12-25 13:42:48 | 显示全部楼层
mahuan1279 发表于 2020-12-21 23:23
(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  ...

_$ (defun tt()
(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 60 58 56 50 30 20 15 10 8 5 3 1)) ;;;各物品价值
(setq n (length wlst) m 1000  r 0.97 pflst nil pslst nil)
(repeat n
  (setq pflst (cons 0.5 pflst))
  (setq pslst (cons 1.0 pslst))
)
(defun rnd ()
  (*(rem (getvar "cputicks") 1e4) 1e-4)
)
(defun xfun(lst)
  (mapcar '(lambda (x) (if (< (rnd) x) 1 0)) lst)
)
(defun check(lst)
  (setq s 0 c 0)
  (mapcar '(lambda (x y) (if (<= (setq s (+ s (* x y))) w_tol) (progn (setq c s) y)(progn (setq s c) 0))) wlst lst)
)
(setq valst '(0 0))
(while (> (apply 'max (mapcar '(lambda (x y) (abs (- y x))) pflst pslst)) 0.001)
(setq xlst nil)
(repeat m
  (setq xlst (cons (xfun pflst) xlst))
)
(setq xlst (mapcar 'check xlst))
(setq vlst (mapcar '(lambda (x) (apply '+ (mapcar '* x clst))) xlst))
(setq pt (nth (fix (* r m))
              (mapcar 'cadr (vl-sort (mapcar '(lambda (x) (list (float x) x)) vlst) '(lambda (ea eb) (< (car ea) (car eb)))))
          )
)
(setq evlst (mapcar '(lambda (y) (if (>= y pt) 1 0)) vlst) en (float (apply '+ evlst)))
(setq pslst (mapcar '(lambda (k) (/ k en)) (mapcar '(lambda (z) (apply '+ (mapcar '* z evlst)))  (apply 'mapcar (cons 'list xlst)))))
(setq pflst (mapcar '(lambda (x y z) (+ (* 0.55 x) (* 0.375 y) (* 0.075 z))) pslst pflst ylst))
(setq ylst (car (vl-remove nil (mapcar '(lambda (x) (if (= (apply 'max vlst) (apply '+ (mapcar '*  x clst))) x nil)) xlst))))
(setq vblst (list (apply '+ (mapcar '* clst ylst))
                  (apply '+ (mapcar '* wlst ylst))
                   ylst
                         )
)
(if (> (car vblst) (car valst))
    (setq valst vblst)
)
)
valst
)(repeat 10 (progn (princ (car (tt))) (princ " ")))
TT
3097 3097 3097 3097 3084 3097 3097 3096 3096 3093 " "
发表于 2020-12-28 07:41:15 | 显示全部楼层
为钻研精神点赞,耶
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-23 22:09 , Processed in 0.200004 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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