質問編集履歴

1

ソースコード を見やすいように、```を入れました。

2020/02/12 02:39

投稿

alpha_high
alpha_high

スコア6

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
  ```ここに言語名を入力