Python 3.x 基于GEKKO包的Python混合整数非线性优化
我正在尝试使用MINLP和GEKKO软件包开发玻璃钢(GRP)高速飞行器的结构重量优化。我需要考虑许多设计变量作为整数和其他作为真实和连续变量。为了评估约束,我遵循ISO 12215第5部分的要求。该规则规定了船舶的最低结构要求。问题是我需要使用很多条件语句,比如(if、max或min),我读到GEKKO改变了这些类型的条件语句,因为传统的条件是不连续的。因此,我使用Python 3.x 基于GEKKO包的Python混合整数非线性优化,python-3.x,optimization,gekko,Python 3.x,Optimization,Gekko,我正在尝试使用MINLP和GEKKO软件包开发玻璃钢(GRP)高速飞行器的结构重量优化。我需要考虑许多设计变量作为整数和其他作为真实和连续变量。为了评估约束,我遵循ISO 12215第5部分的要求。该规则规定了船舶的最低结构要求。问题是我需要使用很多条件语句,比如(if、max或min),我读到GEKKO改变了这些类型的条件语句,因为传统的条件是不连续的。因此,我使用m.if3、m.max3或m.min3。但是,当我运行程序时,这些GEKKO条件语句不起作用。许多运算(中间运算)取无穷大值,因为
m.if3
、m.max3
或m.min3
。但是,当我运行程序时,这些GEKKO条件语句不起作用。许多运算(中间运算)取无穷大值,因为程序被零除,永远不会收敛到解。有什么建议可以帮助您理解解算器并获得成功的解决方案
我的问题相对较短,因为它有20个设计变量,大约有15个约束,没有时间依赖性
优化(纵向框架).ipynb
从数学导入*
导入全局操作系统
作为pd进口熊猫
将numpy作为np导入
将matplotlib.pyplot作为plt导入
从matplotlib导入rcParams
从matplotlib.font_管理器导入FontProperties
导入matplotlib
将matplotlib.gridspec导入为gridspec
导入时间
从gekko进口gekko
def span_space_stiff(nt、nl、lp、b):
#---------------9. 面板和加强筋的尺寸------------------------
#底板
sl=m.Intermediate(1000*b/(nl+1),name='sl')
st=m.Intermediate(1000*lp/(nt+1),name='st')
#如果程序选择nlm.open_folder()
m.options.DIAGLEVEL=4
output = m.solve(disp=True) # Solver
172 +Inf kar1
173 0.00000000 kar2
174 0.00000000 kar
175 0.00000000 pbp
176 NaN kshc1
177 0.00000000 kshc
178 NaN a1
179 NaN a2
180 0.00000000 k2
181 0.00000000 fdp
182 0.00000000 mdp
.
.
.
195 1311.11111111 wp
196 917050883.35535383 eal
197 57906932528.31179047 eazl
198 63.14473229 nal
199 151.38044132 zcri
200 ******************** eaz2l
201 ******************** ebh3l
202 ******************** einal
203 20726655556.62884521 qcl
204 20720536220.47989273 qwl
205 0.00000000 eiminl
206 3025.53188955 sml
207 +Inf c1l
208 22.46255737 awl
209 +Inf c2l
210 141.42371638 acl
211 +Inf c3l
212 +Inf eil
213 18.89350536 c45
6 116 -1.32000000 v24-(((((1-int_v23))*(ad_l1))+((int_v23)*(ad_l2))))
7 117 +Inf 0-((((1-int_v25))*((0.25-kar_t1))))-slk_7
8 118 -Inf ((int_v25)*((0.25-kar_t1)))-(0)-slk_8
13 123 +Inf 0-((((1-int_v29))*((1-kar_t1))))-slk_13
14 124 -Inf ((int_v29)*((1-kar_t1)))-(0)-slk_14
15 125 -0.99000000 v30-(((((1-int_v29))*(1))+((int_v29)*(kar_t2))))
16 126 +Inf 0-((((1-int_v31))*((1-kar_l1))))-slk_16
17 127 -Inf ((int_v31)*((1-kar_l1)))-(0)-slk_17
18 128 -0.99000000 v32-(((((1-int_v31))*(1))+((int_v31)*(kar_l2))))
19 129 -1310.00000000 0-((((1-int_v33))*(((st-bt)-(sl-bl)))))-slk_19
26 136 0.00000000 0-(((int_v37)*((ad2-ad1))))-slk_26
27 137 0.00000000 v38-(((((1-int_v37))*(ad1))+((int_v37)*(ad2))))
28 138 +Inf 0-((((1-int_v39))*((0.25-kar1))))-slk_28
29 139 -Inf ((int_v39)*((0.25-kar1)))-(0)-slk_29
30 140 -Inf v40-(((((1-int_v39))*(kar1))+((int_v39)*(0.25))))
33 143 -0.99000000 v42-(((((1-int_v41))*(1))+((int_v41)*(kar2))))
34 144 NaN 0-((((1-int_v43))*((2-((v34)/(v36))))))-slk_34
35 145 NaN ((int_v43)*((2-((v34)/(v36)))))-(0)-slk_35
40 150 13.00000000 c1p-(0)
41 151 -0.99414611 (c2p-1)-(0)-slk_41
42 152 6464.36333333 (pw+sw)