数学建模--非整数规划求解的Python实现

目录

1.算法流程简介

2.算法核心代码

3.算法效果展示

1.算法流程简介

复制代码
#非线性规划模型求解:
#我们采用通用的minimize函数来求解
#minimize(f,x,method,bounds,contrains)
#f是待求函数
#x是代求的自变量
#method是求解方法
#bounds是取值范围边界
#contrains是约束条件
"""
#Question:
        min f=x1^2+x2^2+x3^2+8
        s.t.:
            x1^2-x2^2+x3^2>=0
            x1+x2^2+x3^2<=20
            -x1-x2^2+2=0
            x2+2x3^2=3
            x1,x2,x3>=0 
"""
#具体流程如下所示:
#1.设置待求函数和约束条件
#2.处理边界约束问题
#3.代入计算求解最优值

2.算法核心代码

python 复制代码
#引用库和函数
import numpy as np
from scipy.optimize import minimize
from scipy import optimize as opt

#1.设置待求函数和约束条件
def cal_fun(x):
    return x[0]*x[0]+x[1]*x[1]+x[2]*x[2]+8
def cont1(x):
    return x[0] ** 2 - x[1] + x[2] ** 2#s.t.1
def cont2(x):
    return -(x[0] + x[1] ** 2 + x[2] ** 2 - 20)#s.t.2
def cont3(x):
	return -x[0] - x[1] ** 2 + 2#s.t.3
def cont4(x):
	return x[1] + 2 * x[2] ** 2 - 3#s.t.4

#2.处理边界约束问题
b=(0,None)
rbound=(b,b,b)

con1={'type':'ineq','fun':cont1}
con2={'type':'ineq','fun':cont2}
con3={'type':'eq','fun':cont3}
con4={'type':'eq','fun':cont4}
cons=([con1,con2,con3,con4])

#3.代入计算求解最优值
x=np.array([0,0,0])
ans=minimize(cal_fun,x,method='SLSQP',bounds=rbound,constraints=cons)
x_ans=ans.x
print("最优解:"+str(cal_fun(x_ans)))
print("最优解的方案是:x1="+str(x_ans[0]),"x2="+str(x_ans[1]))

3.算法效果展示

相关推荐
张张123y3 小时前
后端第十四课:Agent 记忆系统(让 Agent 记住上下文和用户,跨会话不健忘)
java·大数据·人工智能·python·agent·记忆
happylifetree7 小时前
Python67:核心语法-函数进阶-参数类型(函数作为参数)
python
小羊没烦恼!8 小时前
铁道部新客票系统设计(二)
开发语言·前端·数据库·python·oracle·c#·php
quantdash_cc9 小时前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
镜子AI9 小时前
镜子AI工程实践:用 Python 做 GEO 实体一致性审计,并自动生成 JSON-LD 结构化数据
人工智能·python·json
2601_9628857213 小时前
如何用 Python 计算 VaR 和 CVaR(在险价值)?
开发语言·python
李航198313 小时前
DeepSeekAI建模三 - 实战建模一组柜子
人工智能·python·计算机视觉·ai·ai编程
严谨的麻辣烫14 小时前
静态代理 IP 的出口一致性如何验证?Python 请求检测与异常排查
开发语言·python·http·网络安全
我命由我1234514 小时前
5-1.Python 编码进阶 - 函数进阶(参数、返回值、递归、函数作为参数传递、lambda 匿名函数)
java·服务器·数据库·后端·python·java-ee·python3.11
FITA阿泽要努力15 小时前
Fork Agent:共享上下文的艺术
开发语言·python·agent