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

最优化: 建模、算法与理论-习题1 #4解答

Weixin Image_20260217210913_388_156

对应实现图解代码参考:

import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl# ========== 修正字体配置(适配Mac系统) ==========
# 方案1:使用Mac自带的支持下标的中文字体
plt.rcParams['font.family'] = ['Arial Unicode MS', 'SimHei', 'DejaVu Sans']
plt.rcParams['axes.unicode_minus'] = False
# 方案2:禁用matplotlib的下标渲染,改用普通括号标注(备选)
mpl.rcParams['mathtext.fontset'] = 'custom'
mpl.rcParams['mathtext.rm'] = 'Arial'
mpl.rcParams['mathtext.it'] = 'Arial:italic'
mpl.rcParams['mathtext.bf'] = 'Arial:bold'# 1. 定义绘图范围
x1 = np.linspace(-1, 7, 500)  # x1的取值范围
x2 = np.linspace(-1, 5, 500)  # x2的取值范围
X1, X2 = np.meshgrid(x1, x2)# 2. 定义约束条件
constraint1 = 0.5 * X1 + X2 <= 4    # 0.5x1 + x2 ≤ 4
constraint2 = 3 * X1 + X2 <= 15     # 3x1 + x2 ≤ 15
constraint3 = X1 + X2 >= 1          # x1 + x2 ≥ 1
constraint4 = X1 >= 0               # x1 ≥ 0
constraint5 = X2 >= 0               # x2 ≥ 0# 可行域:所有约束的交集
feasible_region = constraint1 & constraint2 & constraint3 & constraint4 & constraint5# 3. 定义目标函数 (x1-6)² + (x2-2)²
def objective_func(x1, x2):return (x1 - 6)**2 + (x2 - 2)**2# 4. 绘制图形
fig, ax = plt.subplots(figsize=(10, 8))# 绘制可行域(浅蓝色填充)
ax.contourf(X1, X2, feasible_region.astype(int), levels=[0, 1],colors=['white', 'lightblue'], alpha=0.5)# 绘制约束边界线(修正参数:分开color和linestyle)
ax.plot(x1, 4 - 0.5 * x1, 'r-', label=r'0.5x_1 + x_2 = 4')  # 用LaTeX语法写下标
ax.plot(x1, 15 - 3 * x1, 'g-', label=r'3x_1 + x_2 = 15')
ax.plot(x1, 1 - x1, 'b-', label=r'x_1 + x_2 = 1')
ax.axvline(x=0, color='k', linestyle='--', alpha=0.5, label=r'x_1 = 0')
ax.axhline(y=0, color='k', linestyle='--', alpha=0.5, label=r'x_2 = 0')# 绘制目标函数等值线(同心圆)
z_values = objective_func(X1, X2)
contours = ax.contour(X1, X2, z_values, levels=[17, 25, 36, 49],colors='orange', linestyles='--')
ax.clabel(contours, inline=True, fontsize=8, fmt='z = %d')# 标记可行域顶点
vertices = [(0, 1), (0, 4), (2, 3), (5, 0), (1, 0)]
vertex_x = [v[0] for v in vertices]
vertex_y = [v[1] for v in vertices]
ax.scatter(vertex_x, vertex_y, color='red', s=50, zorder=5, label='可行域顶点')# 标记最优解 (2, 3)
ax.scatter(2, 3, color='darkred', s=80, marker='*', zorder=6, label='最优解 (2, 3)')
# 标记目标函数圆心 (6, 2)
ax.scatter(6, 2, color='purple', s=80, marker='o', zorder=6, label='目标函数圆心 (6, 2)')# 设置坐标轴和图例(改用LaTeX下标语法)
ax.set_xlabel(r'$x_1$', fontsize=12)  # LaTeX语法渲染下标
ax.set_ylabel(r'$x_2$', fontsize=12)
ax.set_xlim(-1, 7)
ax.set_ylim(-1, 5)
ax.set_title('第4题 可行域与目标函数等值线图', fontsize=14)
ax.legend(loc='upper right')
ax.grid(True, alpha=0.3)plt.tight_layout()
plt.show()
http://www.jsqmd.com/news/390269/

相关文章:

  • 华为atlas300 3010推理卡,在x86服务器上安装300i驱动,成功案例,intel CPU搭配华为推理卡
  • 机器人算法、系统和架构十年演进
  • Linux systemd 服务管理器详解
  • 《P3648 [APIO2014] 序列分割》
  • Nodejs+vue3框架的仓储管理系统 仓库进销存管理系统
  • DDoS攻击深度解析:原理、类型、防御与案例
  • nodejs+vue3基于微信小程序的技术编程语言学习指南应用
  • Nodejs+vue3居民小区物业管理系统
  • nodejs+vue3基于微信小程序的宠物之家健康用品销售系统 宠物用品商城系统
  • Synology NAS 域账户验证失败
  • 大数据与材料科学:高通量计算数据分析
  • 微信小应用页面配置详解
  • AI架构师实战:分布式训练系统的故障恢复机制
  • 从入门到精通:提示工程加密解决方案的系统学习路径
  • 科研数据AI分析工具,让AI应用架构师如鱼得水
  • 2024年新算法】CPO-LSSVM多输出回归预测的Matlab代码
  • 揭秘大数据领域 ETL 的核心原理
  • 最优化: 建模、算法与理论 习题1 #5解答
  • 提示词 大模型实战 2-4 提示词聚合网站
  • 纯粹武力批判:哲学家四象限梗图笑点解析
  • 《海阔天空》MV制作教程:DeepSeek+百度AI+剪映,致敬经典
  • fprinted
  • AD9361 FPGA驱动,纯verilog驱动,lvds接口,没有使用任何依赖库和ip核,方...
  • oeasy Python 115 列表弹栈用pop删除指定索引
  • 【深度硬核】OpenClaw 避坑指南:是全自动 Agent 还是带锁的“数字盲人”?
  • 除夕夜王炸!阿里开源千问3.5,性能暴打Gemini 3 Pro?打工人0.8元/百万token真香!
  • 吕良伟首次执麦主持 大年初一CCTV-4“四海同春”大联欢见
  • 【一文了解】网络请求 - 详解
  • Nodejs+vue3的汽车4S店车辆维修管理系统开题
  • 祝大家新年快乐