質問編集履歴
2
皆さまありがとうございます。遺伝的アルゴリズムを学ぶには時間が足りないので問題を小さくして4個の組み合わせのみで考えることにしました。もともと自分で最適解を設定していたのでその答えが出たら成功ですが…
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
|
-
|
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,
|
273
|
+
for y in range(0,9):
|
200
274
|
|
201
275
|
z += len(k[y])
|
202
276
|
|
203
|
-
|
277
|
+
# if z == 43:
|
204
|
-
|
278
|
+
|
205
|
-
|
279
|
+
# print(k)
|
206
280
|
|
207
281
|
|
208
282
|
|
209
|
-
|
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
|
-
|
361
|
+
if k[y].count(1.0) == 1:
|
290
362
|
|
291
363
|
a += 1
|
292
364
|
|
293
|
-
|
365
|
+
if k[y].count(2.0) == 1:
|
294
366
|
|
295
367
|
b += 1
|
296
368
|
|
297
|
-
|
369
|
+
if k[y].count(3.0) == 1:
|
298
370
|
|
299
371
|
c += 1
|
300
372
|
|
301
|
-
|
373
|
+
if k[y].count(4.0) == 1:
|
302
374
|
|
303
375
|
d += 1
|
304
376
|
|
305
|
-
|
377
|
+
if k[y].count(5.0) == 1:
|
306
378
|
|
307
379
|
e += 1
|
308
380
|
|
309
|
-
|
381
|
+
if k[y].count(6.0) == 1:
|
310
382
|
|
311
383
|
f += 1
|
312
384
|
|
313
|
-
|
385
|
+
if k[y].count(7.0) == 1:
|
314
386
|
|
315
387
|
g += 1
|
316
388
|
|
317
|
-
|
389
|
+
if k[y].count(8.0) == 1:
|
318
390
|
|
319
391
|
h += 1
|
320
392
|
|
321
|
-
|
393
|
+
if k[y].count(9.0) == 1:
|
322
394
|
|
323
395
|
j += 1
|
324
396
|
|
325
|
-
|
397
|
+
if k[y].count(10.0) == 1:
|
326
398
|
|
327
399
|
l += 1
|
328
400
|
|
329
|
-
|
401
|
+
if k[y].count(11.0) == 1:
|
330
402
|
|
331
403
|
m += 1
|
332
404
|
|
333
|
-
|
405
|
+
if k[y].count(12.0) == 1:
|
334
406
|
|
335
407
|
n += 1
|
336
408
|
|
337
|
-
|
409
|
+
if k[y].count(13.0) == 1:
|
338
410
|
|
339
411
|
o += 1
|
340
412
|
|
341
|
-
|
413
|
+
if k[y].count(14.0) == 1:
|
342
414
|
|
343
415
|
p += 1
|
344
416
|
|
345
|
-
|
417
|
+
if k[y].count(15.0) == 1:
|
346
418
|
|
347
419
|
q += 1
|
348
420
|
|
349
|
-
|
421
|
+
if k[y].count(16.0) == 1:
|
350
422
|
|
351
423
|
r += 1
|
352
424
|
|
353
|
-
|
425
|
+
if k[y].count(17.0) == 1:
|
354
426
|
|
355
427
|
s += 1
|
356
428
|
|
357
|
-
|
429
|
+
if k[y].count(18.0) == 1:
|
358
430
|
|
359
431
|
t += 1
|
360
432
|
|
361
|
-
|
433
|
+
if k[y].count(19.0) == 1:
|
362
434
|
|
363
435
|
u += 1
|
364
436
|
|
365
|
-
|
437
|
+
if k[y].count(20.0) == 1:
|
366
438
|
|
367
439
|
v += 1
|
368
440
|
|
369
|
-
|
441
|
+
if k[y].count(21.0) == 1:
|
370
442
|
|
371
443
|
w += 1
|
372
444
|
|
373
|
-
|
445
|
+
if k[y].count(22.0) == 1:
|
374
446
|
|
375
447
|
x += 1
|
376
448
|
|
377
|
-
|
449
|
+
if k[y].count(23.0) == 1:
|
378
450
|
|
379
451
|
ab += 1
|
380
452
|
|
381
|
-
|
453
|
+
if k[y].count(24.0) == 1:
|
382
454
|
|
383
455
|
ac += 1
|
384
456
|
|
385
|
-
|
457
|
+
if k[y].count(25.0) == 1:
|
386
458
|
|
387
459
|
ad+= 1
|
388
460
|
|
389
|
-
|
461
|
+
if k[y].count(26.0) == 1:
|
390
462
|
|
391
463
|
ae += 1
|
392
464
|
|
393
|
-
|
465
|
+
if k[y].count(27.0) == 1:
|
394
466
|
|
395
467
|
af += 1
|
396
468
|
|
397
|
-
|
469
|
+
if k[y].count(28.0) == 1:
|
398
470
|
|
399
471
|
ag += 1
|
400
472
|
|
401
|
-
|
473
|
+
if k[y].count(29.0) == 1:
|
402
474
|
|
403
475
|
ah += 1
|
404
476
|
|
405
|
-
|
477
|
+
if k[y].count(30.0) == 1:
|
406
478
|
|
407
479
|
ai += 1
|
408
480
|
|
409
|
-
|
481
|
+
if k[y].count(31.0) == 1:
|
410
482
|
|
411
483
|
aj += 1
|
412
484
|
|
413
|
-
|
485
|
+
if k[y].count(32.0) == 1:
|
414
486
|
|
415
487
|
ak += 1
|
416
488
|
|
417
|
-
|
489
|
+
if k[y].count(33.0) == 1:
|
418
490
|
|
419
491
|
al += 1
|
420
492
|
|
421
|
-
|
493
|
+
if k[y].count(34.0) == 1:
|
422
494
|
|
423
495
|
am += 1
|
424
496
|
|
425
|
-
|
497
|
+
if k[y].count(35.0) == 1:
|
426
498
|
|
427
499
|
an += 1
|
428
500
|
|
429
|
-
|
501
|
+
if k[y].count(36.0) == 1:
|
430
502
|
|
431
503
|
ao += 1
|
432
504
|
|
433
|
-
|
434
|
-
|
435
|
-
|
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
皆さんのアドバイスを踏まえコードを書き直しました。処理に時間がかかり計算結果は出ていません。
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
|
-
|
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
|
-
|
162
|
-
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
|
171
|
-
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
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
|
```
|