当前位置:首页 » 新媒体运营 » 正文

非线性规划x0怎么确定,Python数学建模系列(三):规划问题之非线性规划

1458 人参与  2022年05月07日 09:50  分类 : 新媒体运营  评论


非线性规划

非线性规划可以简单分两种,目标函数为凸函数or非凸函数

凸函数的非线性规划,比如,有很多常用库完成,比如cvxpy

非凸函数的非线性规划(求极值),可以尝试以下方法:

  • 纯数学方法,求导求极值

  • 神经网络、深度学习(反向传播算法中链式求导过程)

  • scipy. optimize. minimize

scipy.optimize.minimize(fun,x,args=(),method=None,jac=None,hess=None,hessp=None,bounds= None,constaints=() , tol= None,Callback= None, options=None)fun:求最小值的目标函数args:常数值
constraints :约束条件
method:求极值方法,一 般默认。
xO:变量的初始猜测值,注意minimize是局部最优
例题 -

计算/x + x 的最小值

from scipy.optimize import minimizeimport numpy as np

def fun(args):
    a = args
    v = lambda x:a/x[] + x[]    return v

args = ()
x = np.asarray(())
res = minimize(fun(args), x, method=&#;SLSQP&#;)
res

运行结果

Python数学建模系列(三):规划问题之非线性规划


例题 -

计算的最小值,其中、、范围在. 到 . 之间

# 运行环境 Vs Code
from scipy.optimize import minimizeimport numpy as np

def fun(args):
    a,b,c,d = args
    v = lambda x: (a + x[]) / (b + x[]) - c * x[] + d * x[]    return v

def con(args):
    xmin,xmax,xmin,xmax,xmin,xmax = args
    cons = ({&#;type&#;:&#;ineq&#;,&#;fun&#;:lambda x : x[] - xmin},
        {&#;type&#;:&#;ineq&#;,&#;fun&#;:lambda x:-x[] + xmax},
        {&#;type&#;:&#;ineq&#;,&#;fun&#;:lambda x:x[] - xmin},
        {&#;type&#;:&#;ineq&#;,&#;fun&#;:lambda x:-x[] + xmax},
        {&#;type&#;:&#;ineq&#;,&#;fun&#;:lambda x:x[] - xmin},
        {&#;type&#;:&#;ineq&#;,&#;fun&#;:lambda x:-x[] + xmax})    return cons

args = (,,,)
args = (., .,., .,., .)
cons = con(args)

x = np.asarray((.,.,.))
res = minimize(fun(args), x, method=&#;SLSQP&#;,constraints=cons)
res.fun,res.success,res.x,res.status# 结果
(-., True, array([., ., .]), )
结语

学习来源:B站及其课堂PPT,对其中代码进行了复现


希望对您有所帮助,如有错误欢迎小伙伴指正~

本文链接:http://www.woshiqian.com/post/89234.html

百度分享获取地址:https://share.baidu.com/code
非线性规划x0怎么确定  

我是钱微信/QQ:5087088

广告位、广告合作QQ:5087088

<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

       

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。