我正在尝试解决格式的约束优化问题:
min_ {x} f(x)
s.t。
x> = x_min
f(x)是x的非线性函数。
问题是x_min来自评估f(x),即:
<link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet"/>
<body>
<div class="container">
<div class="navbar">
</div>
<div class="topContent">
</div>
<div class="mainContent">
</div>
<div class="leftSideNav1">
<div class="leftSideNav1__lists">
<!-- <i class="fa fa-home w3-large"></i> -->
<i class="Tiny material-icons">home</i>
<a href="#">Home</a>
<i class="material-icons">pause</i>
<a href="#">YouTubers</a>
<i class="material-icons">assignment</i>
<a href="#">Campaigns</a>
<i class="material-icons">message</i>
<a href="#">Messages</a>
<i class="material-icons">pause</i>
<a href="#">Videos</a>
</div>
</div>
<div class="leftSideNav2">
<div class="leftSideNav2__lists">
<ul class="leftSideNav2__list1">Videos
<li>Action Required</li>
<li>Fund YouTuber</li>
<li>Hired & Funded</li>
<li>Edit Requested</li>
</ul>
<ul class="leftSideNav2__list2">Proposals
<li>New</li>
<li>Declined</li>
<li>Changes Required</li>
<li>Changes Declined</li>
</ul>
<ul class="leftSideNav2__list3">Approvals
<li>Waiting for Approval</li>
<li>Approved / Completed</li>
<li>Video in Dispute</li>
</ul>
</div>
</div>
</div>
</body>
要解决这个问题,我想在def f(x):
...
return cost_value, x_min
中使用SLSQP
算法,因此我可以创建一个约束函数,例如:
scipy.optimize.minimize
然后将其传递给对优化器的调用:
def constraint(x):
_, x_limit = f(x)
value = x - x_limit
return value
在我真正的问题中,评估from scipy.optimize import minimize
constraints = ({'type': 'ineq', 'fun': constraint})
solution = minimize(fun=f,
x0=x_seed,
constraints=constraints)
是相当昂贵的(这是一个化学过程模拟,每次运行大约需要20-30秒),因此,f(x)
内f(x)
来{得到constraint
是不可取的。
我想知道是否存在一种递归方式来避免在x_lim
函数中调用目标函数,并且仍然可以使用constraint
的值来计算不等式。