質問編集履歴

2

皆さまありがとうございます。遺伝的アルゴリズムを学ぶには時間が足りないので問題を小さくして4個の組み合わせのみで考えることにしました。もともと自分で最適解を設定していたのでその答えが出たら成功ですが…

2017/12/06 08:57

投稿

Looove
Looove

スコア11

test CHANGED
File without changes
test CHANGED
@@ -72,6 +72,8 @@
72
72
 
73
73
  kekkalist = []
74
74
 
75
+ kekkalist4 = []
76
+
75
77
 
76
78
 
77
79
  for r in range(0, nrows):
@@ -112,7 +114,7 @@
112
114
 
113
115
 
114
116
 
115
- kekkalist.append(j)
117
+ # kekkalist.append(j)
116
118
 
117
119
  pass
118
120
 
@@ -128,7 +130,7 @@
128
130
 
129
131
  if data[o,3] == data[p,3] and data[o,3] == data[v,3] and data[p,3] == data[v,3] and data[o,2] + data[p,2] + data[v,2] <= 2.0 and data[o,5] + data[p,5] + data[v,5] <= 2.56:
130
132
 
131
- kekkalist.append(j)
133
+ # kekkalist.append(j)
132
134
 
133
135
  pass
134
136
 
@@ -148,7 +150,7 @@
148
150
 
149
151
  if data[g,3] == data[u,3] and data[g,3] == data[a,3] and data[g,3] == data[z,3] and data[u,3] == data[z,3] and data[a,3] == data[u,3] and data[z,3] == data[a,3] and data[g,2] + data[u,2] + data[z,2] + data[a,2] <= 2.0 and data[g,5] + data[u,5] + data[z,5] + data[a,5] <= 2.56:
150
152
 
151
- kekkalist.append(j)
153
+ kekkalist4.append(j)
152
154
 
153
155
 
154
156
 
@@ -170,7 +172,9 @@
170
172
 
171
173
 
172
174
 
173
- kekkalist.reverse()
175
+
176
+
177
+
174
178
 
175
179
 
176
180
 
@@ -184,9 +188,79 @@
184
188
 
185
189
  a = 0
186
190
 
187
-
191
+ b = 0
192
+
188
-
193
+ c = 0
194
+
195
+ d = 0
196
+
197
+ e = 0
198
+
199
+ f = 0
200
+
201
+ g = 0
202
+
203
+ h = 0
204
+
205
+ j = 0
206
+
207
+ l = 0
208
+
209
+ m = 0
210
+
211
+ n = 0
212
+
213
+ o = 0
214
+
215
+ p = 0
216
+
217
+ q = 0
218
+
219
+ r = 0
220
+
221
+ s = 0
222
+
223
+ t = 0
224
+
225
+ u = 0
226
+
227
+ v = 0
228
+
229
+ w = 0
230
+
231
+ x = 0
232
+
233
+ ab=0
234
+
235
+ ac=0
236
+
237
+ ad=0
238
+
239
+ ae=0
240
+
241
+ af=0
242
+
243
+ ag=0
244
+
245
+ ah=0
246
+
247
+ ai=0
248
+
249
+ aj=0
250
+
251
+ ak=0
252
+
253
+ al=0
254
+
255
+ am=0
256
+
257
+ an=0
258
+
259
+ ao=0
260
+
261
+
262
+
189
- for i, _ in enumerate(kekkalist,9):
263
+ for i, _ in enumerate(kekkalist4,9):
190
264
 
191
265
  if i == 10:
192
266
 
@@ -194,19 +268,19 @@
194
268
 
195
269
 
196
270
 
197
- for k in itertools.combinations(kekkalist, r=i):
271
+ for k in itertools.combinations(kekkalist4, r=i):
198
-
272
+
199
- for y in range(0,i):
273
+ for y in range(0,9):
200
274
 
201
275
  z += len(k[y])
202
276
 
203
- if z == 36:
277
+ # if z == 43:
204
-
278
+
205
- print(k)
279
+ # print(k)
206
280
 
207
281
 
208
282
 
209
- if y == 0:
283
+ if y == 0:
210
284
 
211
285
  z = 0
212
286
 
@@ -280,158 +354,156 @@
280
354
 
281
355
  an=0
282
356
 
283
- ao=0
357
+ ao=0
284
-
285
-
286
-
287
-
288
-
358
+
359
+
360
+
289
- if k[y].count(1.0) == 1:
361
+ if k[y].count(1.0) == 1:
290
362
 
291
363
  a += 1
292
364
 
293
- if k[y].count(2.0) == 1:
365
+ if k[y].count(2.0) == 1:
294
366
 
295
367
  b += 1
296
368
 
297
- if k[y].count(3.0) == 1:
369
+ if k[y].count(3.0) == 1:
298
370
 
299
371
  c += 1
300
372
 
301
- if k[y].count(4.0) == 1:
373
+ if k[y].count(4.0) == 1:
302
374
 
303
375
  d += 1
304
376
 
305
- if k[y].count(5.0) == 1:
377
+ if k[y].count(5.0) == 1:
306
378
 
307
379
  e += 1
308
380
 
309
- if k[y].count(6.0) == 1:
381
+ if k[y].count(6.0) == 1:
310
382
 
311
383
  f += 1
312
384
 
313
- if k[y].count(7.0) == 1:
385
+ if k[y].count(7.0) == 1:
314
386
 
315
387
  g += 1
316
388
 
317
- if k[y].count(8.0) == 1:
389
+ if k[y].count(8.0) == 1:
318
390
 
319
391
  h += 1
320
392
 
321
- if k[y].count(9.0) == 1:
393
+ if k[y].count(9.0) == 1:
322
394
 
323
395
  j += 1
324
396
 
325
- if k[y].count(10.0) == 1:
397
+ if k[y].count(10.0) == 1:
326
398
 
327
399
  l += 1
328
400
 
329
- if k[y].count(11.0) == 1:
401
+ if k[y].count(11.0) == 1:
330
402
 
331
403
  m += 1
332
404
 
333
- if k[y].count(12.0) == 1:
405
+ if k[y].count(12.0) == 1:
334
406
 
335
407
  n += 1
336
408
 
337
- if k[y].count(13.0) == 1:
409
+ if k[y].count(13.0) == 1:
338
410
 
339
411
  o += 1
340
412
 
341
- if k[y].count(14.0) == 1:
413
+ if k[y].count(14.0) == 1:
342
414
 
343
415
  p += 1
344
416
 
345
- if k[y].count(15.0) == 1:
417
+ if k[y].count(15.0) == 1:
346
418
 
347
419
  q += 1
348
420
 
349
- if k[y].count(16.0) == 1:
421
+ if k[y].count(16.0) == 1:
350
422
 
351
423
  r += 1
352
424
 
353
- if k[y].count(17.0) == 1:
425
+ if k[y].count(17.0) == 1:
354
426
 
355
427
  s += 1
356
428
 
357
- if k[y].count(18.0) == 1:
429
+ if k[y].count(18.0) == 1:
358
430
 
359
431
  t += 1
360
432
 
361
- if k[y].count(19.0) == 1:
433
+ if k[y].count(19.0) == 1:
362
434
 
363
435
  u += 1
364
436
 
365
- if k[y].count(20.0) == 1:
437
+ if k[y].count(20.0) == 1:
366
438
 
367
439
  v += 1
368
440
 
369
- if k[y].count(21.0) == 1:
441
+ if k[y].count(21.0) == 1:
370
442
 
371
443
  w += 1
372
444
 
373
- if k[y].count(22.0) == 1:
445
+ if k[y].count(22.0) == 1:
374
446
 
375
447
  x += 1
376
448
 
377
- if k[y].count(23.0) == 1:
449
+ if k[y].count(23.0) == 1:
378
450
 
379
451
  ab += 1
380
452
 
381
- if k[y].count(24.0) == 1:
453
+ if k[y].count(24.0) == 1:
382
454
 
383
455
  ac += 1
384
456
 
385
- if k[y].count(25.0) == 1:
457
+ if k[y].count(25.0) == 1:
386
458
 
387
459
  ad+= 1
388
460
 
389
- if k[y].count(26.0) == 1:
461
+ if k[y].count(26.0) == 1:
390
462
 
391
463
  ae += 1
392
464
 
393
- if k[y].count(27.0) == 1:
465
+ if k[y].count(27.0) == 1:
394
466
 
395
467
  af += 1
396
468
 
397
- if k[y].count(28.0) == 1:
469
+ if k[y].count(28.0) == 1:
398
470
 
399
471
  ag += 1
400
472
 
401
- if k[y].count(29.0) == 1:
473
+ if k[y].count(29.0) == 1:
402
474
 
403
475
  ah += 1
404
476
 
405
- if k[y].count(30.0) == 1:
477
+ if k[y].count(30.0) == 1:
406
478
 
407
479
  ai += 1
408
480
 
409
- if k[y].count(31.0) == 1:
481
+ if k[y].count(31.0) == 1:
410
482
 
411
483
  aj += 1
412
484
 
413
- if k[y].count(32.0) == 1:
485
+ if k[y].count(32.0) == 1:
414
486
 
415
487
  ak += 1
416
488
 
417
- if k[y].count(33.0) == 1:
489
+ if k[y].count(33.0) == 1:
418
490
 
419
491
  al += 1
420
492
 
421
- if k[y].count(34.0) == 1:
493
+ if k[y].count(34.0) == 1:
422
494
 
423
495
  am += 1
424
496
 
425
- if k[y].count(35.0) == 1:
497
+ if k[y].count(35.0) == 1:
426
498
 
427
499
  an += 1
428
500
 
429
- if k[y].count(36.0) == 1:
501
+ if k[y].count(36.0) == 1:
430
502
 
431
503
  ao += 1
432
504
 
433
-
434
-
435
- print(a,b,c,d,e,f,g,h,j,l,m,n,o,p,q,r,s,t,u,v,w,x,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao)
505
+ if all([a,b,c,d,e,f,g,h,j,l,m,n,o,p,q,r,s,t,u,v,w,x,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao]) == True:
506
+
507
+ print (k)
436
508
 
437
509
  ```

1

皆さんのアドバイスを踏まえコードを書き直しました。処理に時間がかかり計算結果は出ていません。

2017/12/06 08:57

投稿

Looove
Looove

スコア11

test CHANGED
File without changes
test CHANGED
@@ -68,9 +68,11 @@
68
68
 
69
69
  seibunlist = []
70
70
 
71
+ taisekilist = []
72
+
71
73
  kekkalist = []
72
74
 
73
- b = range(1,37)
75
+
74
76
 
75
77
  for r in range(0, nrows):
76
78
 
@@ -88,6 +90,8 @@
88
90
 
89
91
  seibunlist.append(data[r,3])
90
92
 
93
+ taisekilist.append(data[r,5])
94
+
91
95
 
92
96
 
93
97
  for i, _ in enumerate(surablist, 2):
@@ -104,10 +108,14 @@
104
108
 
105
109
  m = int(j[1]-1)
106
110
 
107
- if data[n,3] == data[m,3] and data[n,2] + data[m,2] <= 2.0:
111
+ if data[n,3] == data[m,3] and data[n,2] + data[m,2] <= 2.0 and data[n,5] + data[m,5] <=2.56:
112
+
113
+
108
114
 
109
115
  kekkalist.append(j)
110
116
 
117
+ pass
118
+
111
119
 
112
120
 
113
121
  elif i == 3:
@@ -118,10 +126,14 @@
118
126
 
119
127
  v = int(j[2]-1)
120
128
 
121
- if data[o,3] == data[p,3] and data[o,3] == data[v,3] and data[p,3] == data[v,3] and data[o,2] + data[p,2] + data[v,2] <= 2.0:
129
+ if data[o,3] == data[p,3] and data[o,3] == data[v,3] and data[p,3] == data[v,3] and data[o,2] + data[p,2] + data[v,2] <= 2.0 and data[o,5] + data[p,5] + data[v,5] <= 2.56:
122
130
 
123
131
  kekkalist.append(j)
124
132
 
133
+ pass
134
+
135
+
136
+
125
137
 
126
138
 
127
139
  elif i == 4:
@@ -134,7 +146,7 @@
134
146
 
135
147
  a = int(j[3]-1)
136
148
 
137
- if data[g,3] == data[u,3] and data[g,3] == data[a,3] and data[g,3] == data[z,3] and data[u,3] == data[z,3] and data[a,3] == data[u,3] and data[z,3] == data[a,3] and data[g,2] + data[u,2] + data[z,2] + data[a,2] <= 2.0:
149
+ if data[g,3] == data[u,3] and data[g,3] == data[a,3] and data[g,3] == data[z,3] and data[u,3] == data[z,3] and data[a,3] == data[u,3] and data[z,3] == data[a,3] and data[g,2] + data[u,2] + data[z,2] + data[a,2] <= 2.0 and data[g,5] + data[u,5] + data[z,5] + data[a,5] <= 2.56:
138
150
 
139
151
  kekkalist.append(j)
140
152
 
@@ -152,28 +164,274 @@
152
164
 
153
165
  h = int(j[4]-1)
154
166
 
155
- if data[q,3] == data[w,3] and data[q,3] == data[f,3] and data[q,3] == data[e,3] and data[q,3] == data[h,3] and data[w,3] == data[e,3] and data[f,3] == data[w,3] and data[h,3] == data[w,3] and data[e,3] == data[f,3] and data[e,3] == data[h,3] and data[f,3] == data[h,3] and data[q,2] + data[w,2] + data[e,2] + data[f,2] + data[h,2] <= 2.0:
167
+ if data[q,3] == data[w,3] and data[q,3] == data[f,3] and data[q,3] == data[e,3] and data[q,3] == data[h,3] and data[w,3] == data[e,3] and data[f,3] == data[w,3] and data[h,3] == data[w,3] and data[e,3] == data[f,3] and data[e,3] == data[h,3] and data[f,3] == data[h,3] and data[q,2] + data[w,2] + data[e,2] + data[f,2] + data[h,2] <= 2.0 and data[q,5] + data[w,5] + data[e,5] + data[f,5] + data[h,5] <= 2.56:
156
168
 
157
169
  kekkalist.append(j)
158
170
 
159
171
 
160
172
 
161
- for i, _ in enumerate(kekkalist,8):
162
-
163
- if i == 19:
164
-
165
- break
166
-
167
- for k in itertools.combinations(kekkalist, r=i):
168
-
169
- if k[1][0] == k[2][0]:
170
-
171
- pass
172
-
173
- else:
174
-
175
- print(k)
176
-
177
-
173
+ kekkalist.reverse()
174
+
175
+
176
+
177
+
178
+
179
+
180
+
181
+
182
+
183
+ z = 0
184
+
185
+ a = 0
186
+
187
+
188
+
189
+ for i, _ in enumerate(kekkalist,9):
190
+
191
+ if i == 10:
192
+
193
+ break
194
+
195
+
196
+
197
+ for k in itertools.combinations(kekkalist, r=i):
198
+
199
+ for y in range(0,i):
200
+
201
+ z += len(k[y])
202
+
203
+ if z == 36:
204
+
205
+ print(k)
206
+
207
+
208
+
209
+ if y == 0:
210
+
211
+ z = 0
212
+
213
+ a = 0
214
+
215
+ b = 0
216
+
217
+ c = 0
218
+
219
+ d = 0
220
+
221
+ e = 0
222
+
223
+ f = 0
224
+
225
+ g = 0
226
+
227
+ h = 0
228
+
229
+ j = 0
230
+
231
+ l = 0
232
+
233
+ m = 0
234
+
235
+ n = 0
236
+
237
+ o = 0
238
+
239
+ p = 0
240
+
241
+ q = 0
242
+
243
+ r = 0
244
+
245
+ s = 0
246
+
247
+ t = 0
248
+
249
+ u = 0
250
+
251
+ v = 0
252
+
253
+ w = 0
254
+
255
+ x = 0
256
+
257
+ ab=0
258
+
259
+ ac=0
260
+
261
+ ad=0
262
+
263
+ ae=0
264
+
265
+ af=0
266
+
267
+ ag=0
268
+
269
+ ah=0
270
+
271
+ ai=0
272
+
273
+ aj=0
274
+
275
+ ak=0
276
+
277
+ al=0
278
+
279
+ am=0
280
+
281
+ an=0
282
+
283
+ ao=0
284
+
285
+
286
+
287
+
288
+
289
+ if k[y].count(1.0) == 1:
290
+
291
+ a += 1
292
+
293
+ if k[y].count(2.0) == 1:
294
+
295
+ b += 1
296
+
297
+ if k[y].count(3.0) == 1:
298
+
299
+ c += 1
300
+
301
+ if k[y].count(4.0) == 1:
302
+
303
+ d += 1
304
+
305
+ if k[y].count(5.0) == 1:
306
+
307
+ e += 1
308
+
309
+ if k[y].count(6.0) == 1:
310
+
311
+ f += 1
312
+
313
+ if k[y].count(7.0) == 1:
314
+
315
+ g += 1
316
+
317
+ if k[y].count(8.0) == 1:
318
+
319
+ h += 1
320
+
321
+ if k[y].count(9.0) == 1:
322
+
323
+ j += 1
324
+
325
+ if k[y].count(10.0) == 1:
326
+
327
+ l += 1
328
+
329
+ if k[y].count(11.0) == 1:
330
+
331
+ m += 1
332
+
333
+ if k[y].count(12.0) == 1:
334
+
335
+ n += 1
336
+
337
+ if k[y].count(13.0) == 1:
338
+
339
+ o += 1
340
+
341
+ if k[y].count(14.0) == 1:
342
+
343
+ p += 1
344
+
345
+ if k[y].count(15.0) == 1:
346
+
347
+ q += 1
348
+
349
+ if k[y].count(16.0) == 1:
350
+
351
+ r += 1
352
+
353
+ if k[y].count(17.0) == 1:
354
+
355
+ s += 1
356
+
357
+ if k[y].count(18.0) == 1:
358
+
359
+ t += 1
360
+
361
+ if k[y].count(19.0) == 1:
362
+
363
+ u += 1
364
+
365
+ if k[y].count(20.0) == 1:
366
+
367
+ v += 1
368
+
369
+ if k[y].count(21.0) == 1:
370
+
371
+ w += 1
372
+
373
+ if k[y].count(22.0) == 1:
374
+
375
+ x += 1
376
+
377
+ if k[y].count(23.0) == 1:
378
+
379
+ ab += 1
380
+
381
+ if k[y].count(24.0) == 1:
382
+
383
+ ac += 1
384
+
385
+ if k[y].count(25.0) == 1:
386
+
387
+ ad+= 1
388
+
389
+ if k[y].count(26.0) == 1:
390
+
391
+ ae += 1
392
+
393
+ if k[y].count(27.0) == 1:
394
+
395
+ af += 1
396
+
397
+ if k[y].count(28.0) == 1:
398
+
399
+ ag += 1
400
+
401
+ if k[y].count(29.0) == 1:
402
+
403
+ ah += 1
404
+
405
+ if k[y].count(30.0) == 1:
406
+
407
+ ai += 1
408
+
409
+ if k[y].count(31.0) == 1:
410
+
411
+ aj += 1
412
+
413
+ if k[y].count(32.0) == 1:
414
+
415
+ ak += 1
416
+
417
+ if k[y].count(33.0) == 1:
418
+
419
+ al += 1
420
+
421
+ if k[y].count(34.0) == 1:
422
+
423
+ am += 1
424
+
425
+ if k[y].count(35.0) == 1:
426
+
427
+ an += 1
428
+
429
+ if k[y].count(36.0) == 1:
430
+
431
+ ao += 1
432
+
433
+
434
+
435
+ print(a,b,c,d,e,f,g,h,j,l,m,n,o,p,q,r,s,t,u,v,w,x,ab,ac,ad,ae,af,ag,ah,ai,aj,ak,al,am,an,ao)
178
436
 
179
437
  ```