Newer
Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
{
"cells": [
{
"cell_type": "code",
"execution_count": 84,
"metadata": {},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"┌ Info: Precompiling VectorizedRoutines [0e69188a-a5d4-5622-b4e4-a72373136fc5]\n",
"└ @ Base loading.jl:1242\n"
]
}
],
"source": [
"using LinearAlgebra\n",
"using Plots\n",
"import JSON\n",
"using SparseArrays\n",
"using Images\n",
"using StaticArrays, BenchmarkTools\n",
"using VectorizedRoutines"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {},
"outputs": [],
"source": [
"# based on https://paulino.ce.gatech.edu/conferences/papers/11pereira_anefficientandcompact.pdf and http://www.topopt.mek.dtu.dk/apps-and-software and https://github.com/blademwang11/Topopt/blob/master/top.jl"
]
},
{
"cell_type": "code",
"execution_count": 208,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Minimum compliance problem with OC\n",
"ndes: 180 x 60\n",
"volfrac: 0.4 rmin: 5.4 penal: 3.0\n",
" It:1 Obj:2027.5045897869754 Vol:0.40009542277892857 ch:0.20000000000000007 \n",
" It:2 Obj:1114.7016909445497 Vol:0.39999020279385833 ch:0.20000000000000007 \n",
" It:3 Obj:753.4184494393503 Vol:0.3999502677408073 ch:0.20000000000000007 \n",
" It:4 Obj:589.4415635399109 Vol:0.3999064413649337 ch:0.20000000000000007 \n",
" It:5 Obj:523.5760184027803 Vol:0.39979707078545607 ch:0.20000000000000007 \n",
" It:6 Obj:488.20184734540385 Vol:0.40009815713720864 ch:0.20000000000000007 \n",
" It:7 Obj:461.50052379589266 Vol:0.39996756594927774 ch:0.18770060047517856 \n",
" It:8 Obj:436.72776763237124 Vol:0.39997068078062337 ch:0.20000000000000007 \n",
" It:9 Obj:410.4692046583736 Vol:0.3999688727716305 ch:0.18787745329341016 \n",
" It:10 Obj:384.72649110474407 Vol:0.39986313163500126 ch:0.20000000000000007 \n",
" It:11 Obj:357.16627586508287 Vol:0.3999089619253164 ch:0.20000000000000007 \n",
" It:12 Obj:330.7267430567433 Vol:0.3999587977615742 ch:0.20000000000000007 \n",
" It:13 Obj:306.3854736897865 Vol:0.4000005457148307 ch:0.20000000000000007 \n",
" It:14 Obj:288.2315743878585 Vol:0.3999937032654836 ch:0.20000000000000007 \n",
" It:15 Obj:274.1857794613026 Vol:0.4000924533597078 ch:0.20000000000000007 \n",
" It:16 Obj:264.94569800587306 Vol:0.39991093897094926 ch:0.20000000000000007 \n",
" It:17 Obj:258.778788272396 Vol:0.40001652314033975 ch:0.20000000000000007 \n",
" It:18 Obj:253.94126738777538 Vol:0.4000506838849397 ch:0.20000000000000007 \n",
" It:19 Obj:250.66709616220618 Vol:0.39995490846201837 ch:0.20000000000000007 \n",
" It:20 Obj:248.25606527431827 Vol:0.3999689511352107 ch:0.20000000000000007 \n",
" It:21 Obj:245.94860165486534 Vol:0.3999625987049225 ch:0.20000000000000007 \n",
" It:22 Obj:243.74888320454812 Vol:0.40001523279698936 ch:0.20000000000000007 \n",
" It:23 Obj:241.74248423356713 Vol:0.3999991521014942 ch:0.20000000000000007 \n",
" It:24 Obj:240.15060386653911 Vol:0.39998006686729326 ch:0.19999999999999996 \n",
" It:25 Obj:238.9851828092882 Vol:0.3999868095951767 ch:0.20000000000000007 \n",
" It:26 Obj:238.2883622637742 Vol:0.3999890832908555 ch:0.20000000000000007 \n",
" It:27 Obj:237.70769589450794 Vol:0.39999265369511483 ch:0.20000000000000007 \n",
" It:28 Obj:237.2033385405354 Vol:0.3999873297303694 ch:0.20000000000000007 \n",
" It:29 Obj:236.7785782018123 Vol:0.4000004750882039 ch:0.20000000000000007 \n",
" It:30 Obj:236.38528197169884 Vol:0.40000930032038495 ch:0.20000000000000007 \n",
" It:31 Obj:236.01340184664818 Vol:0.39999547693055404 ch:0.20000000000000007 \n",
" It:32 Obj:235.68010033105958 Vol:0.3999863076827155 ch:0.20000000000000007 \n",
" It:33 Obj:235.34882677219787 Vol:0.399983492944396 ch:0.20000000000000007 \n",
" It:34 Obj:235.00188861867923 Vol:0.3999783526503072 ch:0.20000000000000007 \n",
" It:35 Obj:234.58246976540124 Vol:0.40001220457009634 ch:0.20000000000000007 \n",
" It:36 Obj:234.05200277972634 Vol:0.40000949855543694 ch:0.19999999999999996 \n",
" It:37 Obj:233.55899380756705 Vol:0.4000110177511946 ch:0.18617336635466353 \n",
" It:38 Obj:233.27010786399626 Vol:0.4000069938539628 ch:0.17978142653742213 \n",
" It:39 Obj:233.11518441068577 Vol:0.4000063017627396 ch:0.20000000000000007 \n",
" It:40 Obj:232.97338235727568 Vol:0.40000306597933594 ch:0.20000000000000007 \n",
" It:41 Obj:232.84740529927114 Vol:0.40000893315187996 ch:0.19389816395843684 \n",
" It:42 Obj:232.72590359510704 Vol:0.4000186686660424 ch:0.18505513698340847 \n",
" It:43 Obj:232.61140255654325 Vol:0.400016677927953 ch:0.19999999999999996 \n",
" It:44 Obj:232.4992077261653 Vol:0.4000186108562634 ch:0.20000000000000007 \n",
" It:45 Obj:232.3858313790211 Vol:0.39997875918956705 ch:0.18327746197747163 \n",
" It:46 Obj:232.30661116189532 Vol:0.40000973547322244 ch:0.19999999999999996 \n",
" It:47 Obj:232.15853579148654 Vol:0.40001168068250686 ch:0.19999999999999996 \n",
" It:48 Obj:232.053578645034 Vol:0.4000093199237478 ch:0.1905299525710673 \n",
" It:49 Obj:231.9449504778675 Vol:0.4000029303868017 ch:0.20000000000000007 \n",
" It:50 Obj:231.85252598763685 Vol:0.39999374282219546 ch:0.19999999999999996 \n",
" It:51 Obj:231.7803279999307 Vol:0.4000061150743422 ch:0.20000000000000007 \n",
" It:52 Obj:231.70429963617062 Vol:0.40000693539397547 ch:0.19999999999999996 \n",
" It:53 Obj:231.64871048345847 Vol:0.39999783954100687 ch:0.19999999999999996 \n",
" It:54 Obj:231.60544645904872 Vol:0.4000038082639503 ch:0.19999999999999996 \n",
" It:55 Obj:231.5490138260903 Vol:0.4000031973739572 ch:0.20000000000000007 \n",
" It:56 Obj:231.51023671347502 Vol:0.39999194653001385 ch:0.19999999999999996 \n",
" It:57 Obj:231.4813083608297 Vol:0.39999922260188936 ch:0.19999999999999996 \n",
" It:58 Obj:231.4378185297698 Vol:0.39998697695130736 ch:0.20000000000000007 \n",
" It:59 Obj:231.42354630492807 Vol:0.40000608616923794 ch:0.20000000000000007 \n",
" It:60 Obj:231.3741601994792 Vol:0.4000044769429046 ch:0.20000000000000007 \n",
" It:61 Obj:231.35808804896516 Vol:0.4000047745231512 ch:0.19999999999999996 \n",
" It:62 Obj:231.33046713293854 Vol:0.4000023069999686 ch:0.19999999999999996 \n",
" It:63 Obj:231.31242226625997 Vol:0.40000604490383124 ch:0.20000000000000007 \n",
" It:64 Obj:231.2859561188247 Vol:0.4000088288999765 ch:0.19999999999999996 \n",
" It:65 Obj:231.26388971006176 Vol:0.3999902272723369 ch:0.20000000000000007 \n",
" It:66 Obj:231.26360775967555 Vol:0.4000028436763249 ch:0.2 \n",
" It:67 Obj:231.21052887334906 Vol:0.39998363387917835 ch:0.20000000000000007 \n",
" It:68 Obj:231.16126282828367 Vol:0.3999966595140699 ch:0.20000000000000007 \n",
" It:69 Obj:231.00955474316663 Vol:0.3999948093069101 ch:0.2 \n",
" It:70 Obj:230.84962914564034 Vol:0.3999994675102865 ch:0.20000000000000007 \n",
" It:71 Obj:230.72174862728477 Vol:0.4000070854760428 ch:0.10831384065901184 \n",
" It:72 Obj:230.6652257431345 Vol:0.3999979551430493 ch:0.10467794427747956 \n",
" It:73 Obj:230.65216672164127 Vol:0.4000137571485584 ch:0.11465852537583232 \n",
" It:74 Obj:230.62407943059083 Vol:0.39998860392602525 ch:0.10727277810298819 \n",
" It:75 Obj:230.64000357471792 Vol:0.3999999847837149 ch:0.09043574537315746 \n",
" It:76 Obj:230.60332563808464 Vol:0.39999633016805797 ch:0.09966436564085313 \n",
" It:77 Obj:230.6029927416497 Vol:0.40000815018720576 ch:0.10568588951008007 \n",
" It:78 Obj:230.58424001449677 Vol:0.400012237813244 ch:0.0857765548662438 \n",
" It:79 Obj:230.57582506098322 Vol:0.3999922812211131 ch:0.09163559738827798 \n",
" It:80 Obj:230.59135657580924 Vol:0.40000796430569163 ch:0.10038008813144539 \n",
" It:81 Obj:230.55945926383777 Vol:0.40000784951599655 ch:0.09343351317216542 \n",
" It:82 Obj:230.5560907696892 Vol:0.4000125145408255 ch:0.1047787660774191 \n",
" It:83 Obj:230.5416919096785 Vol:0.40000971837483695 ch:0.10241141085253858 \n",
" It:84 Obj:230.5386959339299 Vol:0.4000013776524882 ch:0.1001918822636847 \n",
" It:85 Obj:230.5379249281579 Vol:0.40000766033727647 ch:0.08117966609068494 \n",
" It:86 Obj:230.52403122345746 Vol:0.4000118783484707 ch:0.09106458518806149 \n",
" It:87 Obj:230.52192392948672 Vol:0.4000005918048181 ch:0.09968899731685321 \n",
" It:88 Obj:230.53975249216543 Vol:0.4000012273360151 ch:0.10993967990187825 \n",
" It:89 Obj:230.53879340153085 Vol:0.39999496378883914 ch:0.08373973218385711 \n",
" It:90 Obj:230.54443930328696 Vol:0.3999959315381369 ch:0.09356921335699042 \n",
" It:91 Obj:230.54567825614973 Vol:0.4000062213930901 ch:0.1040387746496565 \n",
" It:92 Obj:230.54346314286468 Vol:0.3999921436372145 ch:0.11365156776338747 \n",
" It:93 Obj:230.56712462359442 Vol:0.399999515576815 ch:0.10713271479092734 \n",
" It:94 Obj:230.54644444174556 Vol:0.4000097301170341 ch:0.08436647674690345 \n",
" It:95 Obj:230.52790300922828 Vol:0.39999166429831345 ch:0.08181782489274836 \n",
" It:96 Obj:230.54581782342933 Vol:0.3999921044174427 ch:0.08772236436718661 \n",
" It:97 Obj:230.53555644656538 Vol:0.39999879026960117 ch:0.09300957627295148 \n",
" It:98 Obj:230.52939863197176 Vol:0.40000229020843686 ch:0.10287740536142964 \n",
" It:99 Obj:230.52201967556425 Vol:0.40000942491006114 ch:0.11407316014985758 \n",
" It:100 Obj:230.5143220195186 Vol:0.40001105549662835 ch:0.08851946352667905 \n",
" It:101 Obj:230.5093273235246 Vol:0.39999182987697646 ch:0.0965405661451545 \n",
" It:102 Obj:230.5298516523536 Vol:0.3999900863850748 ch:0.10720168704035149 \n",
" It:103 Obj:230.52559198178662 Vol:0.4000084142015186 ch:0.10033559971908346 \n",
" It:104 Obj:230.5016900582213 Vol:0.3999978597615209 ch:0.11006873909633441 \n",
" It:105 Obj:230.52081745179677 Vol:0.4000010895851494 ch:0.08658069717768568 \n"
]
},
{
"name": "stdout",
"output_type": "stream",
"text": [
" It:106 Obj:230.51132470848992 Vol:0.39999947831401633 ch:0.09643395346865746 \n",
" It:107 Obj:230.51171441015492 Vol:0.4000082830708686 ch:0.10680940157333807 \n",
" It:108 Obj:230.50451233709833 Vol:0.399997570234539 ch:0.11598006529983185 \n",
" It:109 Obj:230.52453728239152 Vol:0.399990521141379 ch:0.10908467195033222 \n",
" It:110 Obj:230.5275773026536 Vol:0.39998979904982274 ch:0.10092390101429727 \n",
" It:111 Obj:230.53013534123662 Vol:0.3999907263706001 ch:0.09067101524408527 \n",
" It:112 Obj:230.52974587932454 Vol:0.3999989623616449 ch:0.10085857119458874 \n",
" It:113 Obj:230.5271799269135 Vol:0.3999919348988265 ch:0.11008409476681824 \n",
" It:114 Obj:230.54855229371913 Vol:0.3999920718452961 ch:0.10900180315672758 \n",
" It:115 Obj:230.55158447390113 Vol:0.3999896485271591 ch:0.1095730412959961 \n",
" It:116 Obj:230.55914068311336 Vol:0.40001112222536994 ch:0.07875514932727634 \n",
" It:117 Obj:230.53553019985182 Vol:0.40000955223062806 ch:0.0885769151877358 \n",
" It:118 Obj:230.55544485913543 Vol:0.39999964404393384 ch:0.0985676916848871 \n",
" It:119 Obj:230.57259148031483 Vol:0.4000035664826363 ch:0.11024101864302271 \n",
" It:120 Obj:230.5733632730787 Vol:0.39999038856788016 ch:0.10732711078162382 \n",
" It:121 Obj:230.60011600076842 Vol:0.3999980124666443 ch:0.08403713944101132 \n",
" It:122 Obj:230.5835697183139 Vol:0.40000594209746043 ch:0.09357551025154975 \n",
" It:123 Obj:230.58776259800567 Vol:0.40000382992354094 ch:0.10280483032184629 \n",
" It:124 Obj:230.60677028269117 Vol:0.39999532684948763 ch:0.11321479785698918 \n",
" It:125 Obj:230.63272714212167 Vol:0.3999924424734859 ch:0.11350920836970979 \n",
" It:126 Obj:230.6450324474306 Vol:0.40000784284550367 ch:0.09362909438067024 \n",
" It:127 Obj:230.63331504634988 Vol:0.4000044307302197 ch:0.09963209641199655 \n",
" It:128 Obj:230.66071323958326 Vol:0.4000016074862809 ch:0.09886603383294557 \n",
" It:129 Obj:230.6685160231628 Vol:0.3999950345293098 ch:0.11096744623460353 \n",
" It:130 Obj:230.68123232474105 Vol:0.3999974344036957 ch:0.12078380364341168 \n",
" It:131 Obj:230.68621396923368 Vol:0.3999943759590862 ch:0.07720741591453695 \n",
" It:132 Obj:230.6943644359299 Vol:0.39999627024259016 ch:0.08835928775399415 \n",
" It:133 Obj:230.698405158678 Vol:0.4000052458324285 ch:0.10038579062527675 \n",
" It:134 Obj:230.69990964389723 Vol:0.4000012819356083 ch:0.111405915776432 \n",
" It:135 Obj:230.72469982234676 Vol:0.3999906951851086 ch:0.12225522850157589 \n",
" It:136 Obj:230.7550242959922 Vol:0.40001057667239903 ch:0.07750808872834275 \n",
" It:137 Obj:230.7279773227763 Vol:0.3999941896904671 ch:0.0878630227174585 \n",
" It:138 Obj:230.76312080793247 Vol:0.39999535031719113 ch:0.10001036730349822 \n",
" It:139 Obj:230.76494240298913 Vol:0.3999993916680073 ch:0.11290544596639485 \n",
" It:140 Obj:230.7720606080953 Vol:0.39999007905922773 ch:0.1244583292340169 \n",
" It:141 Obj:230.79901431668856 Vol:0.40000399750018417 ch:0.09087802016701774 \n",
" It:142 Obj:230.78420435144045 Vol:0.39999175812322846 ch:0.10157194937365721 \n",
" It:143 Obj:230.81703621414795 Vol:0.3999965930719082 ch:0.1148970660867098 \n",
" It:144 Obj:230.82118071974617 Vol:0.4000060181131577 ch:0.12806886012738328 \n",
" It:145 Obj:230.82961677532086 Vol:0.40000873685852334 ch:0.12546987578770585 \n",
" It:146 Obj:230.84067198805784 Vol:0.4000037625339007 ch:0.0921554359585911 \n",
" It:147 Obj:230.8514729181254 Vol:0.40000071686260763 ch:0.10354313587998498 \n",
Loading
Loading full blame...