规划求解与Python协同:用openpyxl构建非线性约束优化模型
利用Python的scipy库处理Excel Solver无法求解的非线性问题,并通过openpyxl回写结果。 · 难度:入门 · +10XP
规划求解与Python协同:用openpyxl构建非线性约束优化模型
Excel内置的规划求解(Solver)只能处理线性、整数或简单非线性问题,复杂工程优化(如涉及三角函数、微分方程)往往无法收敛。本教程教你搭建Python-Excel协同工作流:用openpyxl读取Excel中的参数和约束条件,调用scipy.optimize.minimize(支持L-BFGS-B, SLSQP等算法)求解,再将最优解写回Excel单元格。你将学到如何处理xlwings或pyxll无法安装的环境,纯用openpyxl实现双向数据交换,并保留单元格格式和公式。
import openpyxl
from scipy.optimize import minimize
wb = openpyxl.load_workbook('model.xlsx')
sheet = wb['Sheet1']
def objective(x):
sheet['B1'] = x[0]
sheet['B2'] = x[1]
wb.save('temp.xlsx')
# 读取目标函数所在单元格
return sheet['C1'].value
res = minimize(objective, [1,1], method='SLSQP')
print(res.x)