質問編集履歴
1
ソースコード を見やすいように、```を入れました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -24,7 +24,7 @@
|
|
24
24
|
|
25
25
|
### 該当のソースコード
|
26
26
|
|
27
|
-
|
27
|
+
```
|
28
28
|
|
29
29
|
def rosenbrock(x):
|
30
30
|
|
@@ -44,13 +44,13 @@
|
|
44
44
|
|
45
45
|
return funcValue, gradient
|
46
46
|
|
47
|
-
|
47
|
+
```
|
48
48
|
|
49
49
|
|
50
50
|
|
51
51
|
#この関数を、optimize に呼び出します。
|
52
52
|
|
53
|
-
|
53
|
+
```
|
54
54
|
|
55
55
|
def optimize(func, x0, epsilon_g,n):
|
56
56
|
|
@@ -186,11 +186,11 @@
|
|
186
186
|
|
187
187
|
return xopt, fopt, outputs
|
188
188
|
|
189
|
-
|
189
|
+
```
|
190
190
|
|
191
191
|
#アルファの値を見つけるために、bracketing (線形探索)のコードを呼び出します。
|
192
192
|
|
193
|
-
|
193
|
+
```
|
194
194
|
|
195
195
|
def bracket(t,p,func):
|
196
196
|
|
@@ -320,13 +320,13 @@
|
|
320
320
|
|
321
321
|
i=I+1
|
322
322
|
|
323
|
-
|
323
|
+
```
|
324
324
|
|
325
325
|
|
326
326
|
|
327
327
|
#最小値が見つかりそうな場所に入ったら、pinpointにて値を出します。
|
328
328
|
|
329
|
-
|
329
|
+
```
|
330
330
|
|
331
331
|
def pinpoint(l,h,mu_1,mu_2,x,p,func):
|
332
332
|
|
@@ -488,7 +488,7 @@
|
|
488
488
|
|
489
489
|
j=j+1
|
490
490
|
|
491
|
-
|
491
|
+
```
|
492
492
|
|
493
493
|
|
494
494
|
|
@@ -498,6 +498,92 @@
|
|
498
498
|
|
499
499
|
|
500
500
|
|
501
|
+
#よび出し関数です。
|
502
|
+
|
503
|
+
```
|
504
|
+
|
505
|
+
testFuncs = [rosenbrock]
|
506
|
+
|
507
|
+
|
508
|
+
|
509
|
+
|
510
|
+
|
511
|
+
|
512
|
+
|
513
|
+
for _, func in enumerate(testFuncs):
|
514
|
+
|
515
|
+
|
516
|
+
|
517
|
+
# set the seed so every one is tested at the same points
|
518
|
+
|
519
|
+
np.random.seed(0)
|
520
|
+
|
521
|
+
|
522
|
+
|
523
|
+
trialScore = 0
|
524
|
+
|
525
|
+
for _ in range(nTrails):
|
526
|
+
|
527
|
+
FUNCCALLS = 0
|
528
|
+
|
529
|
+
|
530
|
+
|
531
|
+
|
532
|
+
|
533
|
+
# get a random starting point
|
534
|
+
|
535
|
+
x0 = np.random.normal(size=2)*3
|
536
|
+
|
537
|
+
|
538
|
+
|
539
|
+
|
540
|
+
|
541
|
+
# call the optimizer
|
542
|
+
|
543
|
+
xopt, fopt, output = uncon(func, x0, 1e-6)
|
544
|
+
|
545
|
+
|
546
|
+
|
547
|
+
|
548
|
+
|
549
|
+
l=xopt[0,0]
|
550
|
+
|
551
|
+
m=xopt[0,1]
|
552
|
+
|
553
|
+
xopt=[l,m]
|
554
|
+
|
555
|
+
_, gopt = rosenbrock(np.array(xopt))
|
556
|
+
|
557
|
+
#_, gopt = matyas(np.array(xopt))
|
558
|
+
|
559
|
+
#_, gopt = paraboloid(np.array(xopt))
|
560
|
+
|
561
|
+
if (not (np.linalg.norm(gopt, ord = np.inf) <= 1e-6)):
|
562
|
+
|
563
|
+
|
564
|
+
|
565
|
+
|
566
|
+
|
567
|
+
continue
|
568
|
+
|
569
|
+
|
570
|
+
|
571
|
+
|
572
|
+
|
573
|
+
print(xopt)
|
574
|
+
|
575
|
+
print('fopt ', fopt, FUNCCALLS)
|
576
|
+
|
577
|
+
|
578
|
+
|
579
|
+
print(output['alias'], score)
|
580
|
+
|
581
|
+
|
582
|
+
|
583
|
+
```
|
584
|
+
|
585
|
+
|
586
|
+
|
501
587
|
|
502
588
|
|
503
589
|
```ここに言語名を入力
|