CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

69
CPU平行粒子群最佳化應用於 平面桁架結構最佳化設計 指導老師:洪士林 教授 學生:洪銘澤 1

Transcript of CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

Page 1: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

CPU平行粒子群最佳化應用於

平面桁架結構最佳化設計

指導老師:洪士林 教授

學生:洪銘澤1

Page 2: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

背景

平行運算

動機

目的

方法

測試案例

結論

大綱

2

Page 3: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

循序程式

平行程式

平行運算

3

待解問題

tN ‧‧‧ ‧‧‧ t2 t1 t0

處理器

指令待

解問

tN ‧‧‧ ‧‧‧ t2 t1 t0

處理器

處理器

處理器

Page 4: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

4國道一號泰山收費站

Page 5: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

節省時間

利用更多核心減少運算時間

解決大計算量的問題

結構最佳化、模擬流體、或氣象。

更有效率地運用硬體

核心數增加

平行運算優點

5

Page 6: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

背景

動機

最佳化

目的

方法

測試案例

結論

大綱

6

Page 7: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

最佳化

7

Page 8: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

最佳化早期使用梯度作為搜尋方向的根據

優點:收斂快、計算量小

缺點:容易掉入局部最佳解

最佳化

8

搜尋初始點示意圖

Page 9: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

又稱仿生最佳化

常見非傳統最佳化

粒子群最佳化(PSO)

基因演算法(GA)

蟻群演算法(ACO)

模擬退火眼算法(SA)

調和搜尋演算法(HS)

禁制搜尋法(TS)

非傳統最佳化

9

Page 10: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

1995年由學者Eberhart和Kennedy提出粒子群最

佳化(Particle Swarm Optimization, PSO)

模擬動物群體行為的最佳化演算法

粒子群最佳化

10

Page 11: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子群最佳化

大量迭代次數

大量粒子搜尋

目標函數

本身計算量

多個局部最佳解

最佳化演算法缺點

11

Page 12: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

背景

動機

目的

方法

測試案例

結論

大綱

12

Page 13: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

妥善利用電腦硬體

利用多執行緒達到平行運算效果

減少最佳化運算時間

測試不同計算量的目標函數

目的

13

Page 14: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

背景

動機

目的

方法

OpenMP

粒子群最佳化

平行運算粒子群最佳化

測試案例

大綱

14

Page 15: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

Open specification for Multi-Processing

應用程式介面(API)

多執行緒

共享記憶體

適用性

C/C++和Fortran

Fork-Join模型

編譯器指導指令基礎(compiler directive based)

OpenMP

15

Page 16: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

Fork-Join 模型

16

A B C A B C D A B

A

B

C

D

A

B

C

A

B

循序程式

平行程式

Page 17: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

兩陣列相加循序執行

利用OpenMP compiler directive平行

Fork-Join範例

17

……

int A[10], B[10], C[10];

for (int i=0; i<10; i++)

A[i] = B[i] + C[i];

end for

……

#include <omp.h>

……

int A[10], B[10], C[10];

// Fork

#pragma omp parallel for num_threads(4){

for (int i=0; i<10; i++)

A[i] = B[i] + C[i];

end for

} // join

……

Page 18: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

C/C++ 格式

範例:

#pragma omp parallel default(none) private(x, y)

OpenMP Directives

18

#pragma omp directive-name [clause, ...] newline

必須 必須

parallel,

do,

for, ……

非必須 必須

directive-nameclause clause

Page 19: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

競爭危害(Race Condition)

19

競爭危害範例

Page 20: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

競爭危害(Race Condition)

20

競爭危害輸出結果

Page 21: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

for Directives

21

矩陣乘法在C/C++循序執行

Page 22: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

for Directives

22

矩陣乘法在C/C++平行執行

Page 23: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子群最佳化

23

Page 24: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子群最佳化

24

Page 25: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

流程圖

初始化族群給定每個粒子

隨機位置和速度

計算每個粒子的目標函數值

是否滿足停止條件

更新每個粒子的位置和速度

計算每個粒子的目標函數值

最佳化結果

Page 26: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子群最佳化

26

Page 27: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子群最佳化演算法

27

粒子群最佳化循序演算法

Page 28: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

平行運算粒子群最佳化

28

初始化族群給定每個粒子

隨機位置和速度

計算每個粒子的目標函數值

是否滿足停止條件

更新每個粒子的位置和速度

計算每個粒子的目標函數值

最佳化結果

粒子群最佳化流程圖

Page 29: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

平行運算粒子群最佳化

29

粒子群最佳化平行化演算法

Page 30: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

平行運算粒子群最佳化

30粒子群最佳化平行化演算法示意圖

是否滿足停止條件

更新每個粒子的位置和速度

計算每個粒子的目標函數值

0 → 1/4 1/4 → 2/4 2/4 → 3/4 3/4 → 4/4

Page 31: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

加速比

31核心數

一般情形

理論值加

速比

Page 32: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

背景

動機

目的

方法

測試案例

矩陣乘法

數值最佳化

平面桁架結構最佳化

結論

大綱

32

Page 33: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

中央處理器(CPU)

intel i5-2400 (6M Cache, up to 3.40 GHz) 四核心

記憶體(RAM)

8G

作業系統(OS)

Windows 7 ultimate

開發平台(IDE)

Microsoft Visual Studio 2012

測試環境

33

Page 34: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

矩陣乘法

34

Page 35: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

矩陣乘法

35

宣告四矩陣為:ArrA, ArrB, ArrC, ArrD

給予ArrA, ArrB每個矩陣元素隨機浮點數

循序:ArrA與ArrB相乘存至ArrC

平行:ArrA與ArrB相乘存至ArrD

加總ArrC和ArrD矩陣元素相減平方和

Page 36: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

矩陣列行大小(m*n) 循序 (秒) 平行(秒) 加速比

25 0.011 0.147 0.07

50 0.056 0.037 1.51

100 0.462 0.16 2.82

200 3.711 1.169 3.17

400 35 10.783 3.25

800 396.67 115.92 3.42

1600 4669.6 1216.67 3.84

矩陣乘法

36

矩陣乘法測試結果循序計算:77.82分鐘

平行計算:20.27分鐘

相差:57.54 分鐘

Page 37: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

矩陣乘法

37

3.84

0

0.5

1

1.5

2

2.5

3

3.5

4

4.5

0 500 1000 1500 2000

加速

矩陣列行值m*m

加速比與矩陣大小關係

Page 38: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

30個變數平方和之最小值

38

Page 39: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子總數 循序(秒) 平行(秒) 加速比

4 1.923 1.163 1.65

20 8.647 3.329 2.60

60 25.535 8.358 3.06

500 209.62 63.54 3.30

1,000 422.97 125.87 3.36

10,000 4231.9 1150.5 3.68

100,000 41819.5 11395.7 3.67

200,000 83466 22382 3.73

500,000 207222 55882 3.71

30個變數平方和之最小值

39

循序運算:23.2小時

平行運算:6.2小時

相差:17小時

粒子總數與加速比關係

Page 40: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

30個變數平方和之最小值

40

3.73

0

0.5

1

1.5

2

2.5

3

3.5

4

0 1 2 3 4 5 6 7

加速

log(粒子總數)

加速比與粒子數關係

Page 41: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

30個變數平方和之最小值

41

0.00

5000.00

10000.00

15000.00

20000.00

25000.00

30000.00

02

29

45

86

87

91

611

45

13

74

16

03

18

32

20

61

22

90

25

19

27

48

29

77

32

06

34

35

3664

38

93

41

22

43

51

45

80

48

09

50

38

52

67

54

96

57

25

59

54

6183

目標

函數

迭代次數

最佳化收斂情形

目標函數值:0.868

Page 42: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

Beale's function

42

Page 43: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

Beale's function

43

Beale’s function 繪製圖形

Page 44: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子總數 循序(秒) 平行(秒) 加速比

20 1.884 1.31 1.43

60 5.023 2.525 1.99

120 9.879 4.105 2.41

240 19.61 7.073 2.77

500 39.998 13.691 2.92

1000 79.639 27.92 2.85

5000 393.07 125.341 3.14

10000 782.09 237.309 3.30

Beale's function

44

粒子總數與加速比關係

循序運算:13.03 分鐘

平行運算:3.96 分鐘

相差:9.07分鐘

Page 45: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

Beale's function

45

3.30

0.00

0.50

1.00

1.50

2.00

2.50

3.00

3.50

0 1 2 3 4 5

加速

log(粒子總數)

加速比與粒子數關係

Page 46: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

Beale's function

46

0

0.005

0.01

0.015

0.02

0.025

0.03

0.0350

69

13

82

07

27

63

45

41

44

83

55

26

21

690

75

98

28

89

79

66

10

35

110

4117

31

24

213

11

13

80

14

49

15

18

15

87

16

56

17

25

17

94

1863

19

32

目標

函數

迭代次數

最佳化收斂情形

目標函數值:0.000

Page 47: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

平面桁架結構斷面最佳化

47

Page 48: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

10支桿件平面桁架結構

案例一分析

48

Page 49: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

案例一分析

49

Page 50: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子總數 循序(秒) 平行(秒) 加速比

4 0.897 0.391 2.29

20 4.195 1.605 2.61

40 8.46 3.06 2.76

100 24.33 8.42 2.89

500 103.53 32.41 3.19

1000 207.76 63.45 3.27

5000 1017.89 296.81 3.42

案例一分析

50

粒子總數與加速比關係

循序運算:16.96 分鐘

平行運算:4.94 分鐘

相差:12.02分鐘

Page 51: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

案例一分析

51

3.43

0

0.5

1

1.5

2

2.5

3

3.5

4

0 0.5 1 1.5 2 2.5 3 3.5 4

加速

log(粒子總數)

加速比與粒子數關係

Page 52: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

案例一分析

52

0

1000

2000

3000

4000

5000

6000

7000

80000

16

73

34

50

16

68

83

51

00

2116

91

33

61

50

31

67

01

83

72

00

42

17

12

33

82

50

52

67

22

83

93

00

63

17

33

34

03

50

73

67

43

84

14

00

84

17

54

34

24

50

94676

48

43

總重

(lb)

迭代次數

最佳化收斂情形

Page 53: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

斷面編號 PSO (in2) PSO (Li) (in2)

A1 31.51 33.47

A2 0.15 0.11

A3 25.29 23.18

A4 14.25 15.48

A5 0.11 3.65

A6 0.33 0.12

A7 7.06 8.33

A8 18.94 23.34

A9 24.01 23.01

A10 0.11 0.19

總重(lb) 5131.0 5529.5

案例一分析

53

斷面最佳化結果

398.5 lb (-13.9%)

Page 54: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

迭代次數 循序(秒) 平行(秒) 加速比

20 2.20 1.49 1.47

50 5.18 2.50 2.07

100 10.60 4.48 2.37

500 52.53 16.98 3.09

1000 103.13 32.50 3.17

5000 513.57 153.53 3.35

10000 1017.89 296.81 3.43

50000 5132.18 1498.93 3.42

案例一分析

54

迭代次數與加速比關係

粒子總數:5000

Page 55: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

17支桿件平面桁架

案例二分析

55

Page 56: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

案例二分析

56

Page 57: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子總數 循序(秒) 平行(秒) 加速比

4 0.948 0.465 2.04

20 4.297 2.092 2.05

40 8.78 3.94 2.23

100 21.13 9.01 2.35

500 106.94 35.04 3.05

1000 212.28 60.91 3.49

5000 1058.43 298.65 3.54

案例二分析

57

粒子總數與加速比關係

循序運算:17.64 分鐘

平行運算: 4.98 分鐘

相差:12.66分鐘

Page 58: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

案例二分析

58

3.54

0

0.5

1

1.5

2

2.5

3

3.5

4

0 0.5 1 1.5 2 2.5 3 3.5 4

加速

log(粒子總數)

加速比與粒子數關係

Page 59: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

案例二分析

59

0

1000

2000

3000

4000

5000

60000

17

33

46

51

96

92

86

51

03

81211

13

84

1557

17

30

19

03

20

76

22

49

24

22

25

95

27

68

29

41

3114

32

87

34

60

36

33

3806

39

79

41

52

43

25

44

98

46

71

48

44

總重

(lb

)

迭代次數

最佳化收斂情形

Page 60: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

斷面編號 PSO (in2) PSO (Li) (in2)A1 14.024 15.766

A2 1.200 2.263

A3 13.217 13.854

A4 0.222 0.106

A5 10.037 11.356

A6 4.448 3.915

A7 10.025 8.071

A8 1.536 0.100

A9 8.397 5.850

A10 0.160 2.294

A11 4.412 6.313

A12 0.185 3.375

A13 5.339 5.434

A14 5.373 3.918

A15 3.978 3.534

A16 2.158 2.314

A17 5.537 3.542

總重(lb) 2670.23 2724.37

案例二分析

60-54.14 lb (-1.99%)

Page 61: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

26支桿件平面桁架

案例三分析

61

Page 62: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

案例三分析

62

Page 63: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

粒子總數 循序(秒) 平行(秒) 加速比

4 2.344 0.795 2.95

20 11.506 3.666 3.14

40 22.945 7.151 3.21

100 56.192 17.553 3.20

500 281.287 84.064 3.35

1000 556.545 160.861 3.46

5000 2832.562 779.182 3.64

案例三分析

63

粒子總數與加速比關係

循序運算:47.20 分鐘

平行運算:12.98 分鐘

相差:34.22分鐘

Page 64: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

案例三分析

64

3.64

0

0.5

1

1.5

2

2.5

3

3.5

4

0 0.5 1 1.5 2 2.5 3 3.5 4

加速

log(粒子總數)

粒子總數與加速比關係

Page 65: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

案例三分析

65

0

2000

4000

6000

8000

10000

12000

14000

160000

17

33

46

51

96

92

865

10

38

12

11

13

84

15

57

17

30

19

03

20

76

22

49

24

22

25

95

27

68

29

41

3114

32

87

34

60

36

33

3806

39

79

41

52

43

25

44

98

46

71

48

44

總重

(lb)

迭代次數

最佳化收斂情形

最佳化結果:5451.02 lb

Page 66: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

背景

動機

目的

方法

測試案例

結論

大綱

66

Page 67: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

妥善利用多核心平行運算可減短計算時間

經過案例測試粒子群最佳化很適合平行運算

主要影響平行粒子群最佳化因素

粒子總數

迭代次數

目標函數維度

結論

67

Page 68: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

GPGPU

General-purpose computing on graphics processing

units

顯示卡記憶體

OOP

Object-oriented programming

可讀性

維護和修改

建議與未來展望

68

Page 69: CPU平行粒子群最佳化應用於平面桁架結構最佳化設計

背景

平行運算

動機

最佳化簡介、粒子群最佳化

目的

利用多核心平行運算

方法

平行矩陣乘法演算法、平行粒子群最佳化演算法

測試案例

矩陣乘法、數值最佳化案例、桁架結構最佳化案例

結論

簡報回顧

69