当前位置: 首页 > news >正文

使用scipy求解优化问题

一、求解二次规划问题

min(X.T * P * X + C.T * X)

s.t.    Xi  > 0

         ∑Xi= 1

1.定义目标函数

def objective(x):return 0.5 * np.dot(x, np.dot(P, x)) + np.dot(c, x)

2. 定义等式约束

def equality_constraint(x):return np.sum(x) - 1

3.定义边界约束:x

# 定义边界约束:x 每个维度取值 0-1
bounds = [(0, 1), (0, 1), (0, 1)]

4. 定义约束条件

constraint = {'type': 'eq', 'fun': equality_constraint}

5.初始猜测值

initial_guess = np.array([1/3, 1/3, 1/3])

6.求解

# 使用 minimize 函数求解
result = minimize(objective, initial_guess, method='SLSQP', bounds=bounds, constraints=constraint)# 检查是否成功求解
if result.success:optimal_x = result.xprint(f'最优解 x* = {optimal_x}')print(f'最优目标函数值 = {result.fun}')
else:print("求解失败:", result.message)

7.完整代码

import numpy as np
from scipy.optimize import minimize# 定义对称矩阵 P,每个元素大于 0
P = np.array([[2.0, 0.5, 0.3],[0.5, 3.0, 0.2],[0.3, 0.2, 4.0]])
# 定义任意向量 c
c = np.array([-1.0, -2.0, -3.0])# 定义目标函数
def objective(x):return 0.5 * np.dot(x, np.dot(P, x)) + np.dot(c, x)# 定义等式约束:x 元素之和为 1
def equality_constraint(x):return np.sum(x) - 1# 定义边界约束:x 每个维度取值 0-1
bounds = [(0, 1), (0, 1), (0, 1)]# 定义约束条件
constraint = {'type': 'eq', 'fun': equality_constraint}# 初始猜测值
initial_guess = np.array([1/3, 1/3, 1/3])# 使用 minimize 函数求解
result = minimize(objective, initial_guess, method='SLSQP', bounds=bounds, constraints=constraint)# 检查是否成功求解
if result.success:optimal_x = result.xprint(f'最优解 x* = {optimal_x}')print(f'最优目标函数值 = {result.fun}')
else:print("求解失败:", result.message)

8.结果展示

http://www.xdnf.cn/news/241903.html

相关文章:

  • Three.js在vue中的使用(一)-基础
  • 报错:函数或变量 ‘calcmie‘ 无法识别。
  • 【网络服务器】——回声服务器(echo)
  • 【C++】类和对象【中下】
  • 【中间件】bthread_基础_TaskControl
  • PyTorch 与 TensorFlow:深度学习框架的深度剖析与实战对比
  • 怎么查看数据库容量
  • REST API、FastAPI与Flask API的对比分析
  • cdn服务器连接异常怎么办?cdn连接失败解决方法有哪些?
  • 深入解析 Python 应用日志监控:ELK、Graylog 的实战指南
  • WPF采集欧姆龙PLC、基恩士PLC、西门子PLC、汇川PLC、台达PLC数据
  • 从请求到响应:初探spring web
  • PCA主成分分析法(最大投影方差,最小重构距离,SVD角度)
  • AI数字人系统开发:技术架构、应用场景与未来趋势
  • 【进阶】--函数栈帧的创建和销毁详解
  • TDA4VM SDK J721E (RTOS/Linux) bootloaders梳理笔记
  • RDMA高性能网络通信实践
  • 航空客户价值分析阶段性测验
  • Python数据分析课程实验-1
  • 使用DCI和RTIT技术进行精准调优--看录像
  • C++之特殊类设计及类型转换
  • 【kafka系列】消费者组
  • 系统架构设计师:设计模式——创建型设计模式
  • 解锁 C++26 的未来:从语言标准演进到实战突破
  • Nginx核心功能——nginx代理
  • 【数据结构】- 栈
  • Vue之脚手架与组件化开发
  • 计算机网络——HTTP/IP 协议通俗入门详解
  • 优雅关闭服务:深入理解 SIGINT / SIGTERM 信号处理机制
  • WPF封装常用的TCP、串口、Modbus、MQTT、Webapi、PLC通讯工具类