当前位置:   article > 正文

数学建模--非整数规划求解的Python实现_非线性整数规划求解python

非线性整数规划求解python

目录

1.算法流程简介

2.算法核心代码

3.算法效果展示

1.算法流程简介

  1. #非线性规划模型求解:
  2. #我们采用通用的minimize函数来求解
  3. #minimize(f,x,method,bounds,contrains)
  4. #f是待求函数
  5. #x是代求的自变量
  6. #method是求解方法
  7. #bounds是取值范围边界
  8. #contrains是约束条件
  9. """
  10. #Question:
  11. min f=x1^2+x2^2+x3^2+8
  12. s.t.:
  13. x1^2-x2^2+x3^2>=0
  14. x1+x2^2+x3^2<=20
  15. -x1-x2^2+2=0
  16. x2+2x3^2=3
  17. x1,x2,x3>=0
  18. """
  19. #具体流程如下所示:
  20. #1.设置待求函数和约束条件
  21. #2.处理边界约束问题
  22. #3.代入计算求解最优值
'
运行

2.算法核心代码

  1. #引用库和函数
  2. import numpy as np
  3. from scipy.optimize import minimize
  4. from scipy import optimize as opt
  5. #1.设置待求函数和约束条件
  6. def cal_fun(x):
  7. return x[0]*x[0]+x[1]*x[1]+x[2]*x[2]+8
  8. def cont1(x):
  9. return x[0] ** 2 - x[1] + x[2] ** 2#s.t.1
  10. def cont2(x):
  11. return -(x[0] + x[1] ** 2 + x[2] ** 2 - 20)#s.t.2
  12. def cont3(x):
  13. return -x[0] - x[1] ** 2 + 2#s.t.3
  14. def cont4(x):
  15. return x[1] + 2 * x[2] ** 2 - 3#s.t.4
  16. #2.处理边界约束问题
  17. b=(0,None)
  18. rbound=(b,b,b)
  19. con1={'type':'ineq','fun':cont1}
  20. con2={'type':'ineq','fun':cont2}
  21. con3={'type':'eq','fun':cont3}
  22. con4={'type':'eq','fun':cont4}
  23. cons=([con1,con2,con3,con4])
  24. #3.代入计算求解最优值
  25. x=np.array([0,0,0])
  26. ans=minimize(cal_fun,x,method='SLSQP',bounds=rbound,constraints=cons)
  27. x_ans=ans.x
  28. print("最优解:"+str(cal_fun(x_ans)))
  29. print("最优解的方案是:x1="+str(x_ans[0]),"x2="+str(x_ans[1]))

3.算法效果展示

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/844149
推荐阅读
相关标签
  

闽ICP备14008679号