目录
概念与配置
规划求解定义
运用“规划求解”定义并求解问题 - Microsoft 支持
excel设置规划求解
EXCEL规划求解的简明教程 - 知乎 (zhihu.com)
excel中的批量操作可以使用vba宏来进行操作
宏的基本操作
Excel-VBA 快速上手(一、宏、VBA、过程、类型与变量、函数)_excel vba-CSDN博客
复杂的宏可以使用宏录制
Excel 宏教程:录制宏基础 - 懒人Excel (lanrenexcel.com)
excel批量进行规划求解案例
批量处理通常可以使用vba进行编写来实现,通过宏录制结合gpt可以 实现零基础实现复杂的批处理。
加载规划求解模块
通过设置进行规划求解
宏的设置
然后就可以编写了
宏录制vba
自行设置
然后进行规划求解
输入你的约束函数等信息
完成后点击停止录制
就可以看到我们宏录制的vba了
运行代码前需要引入
然后通过gpt进行修改完善
例如我的vba
Sub OptimizeRows()
Dim i As Integer
For i = 223 To 224
' 设置 Solver 参数
SolverOk SetCell:="$I$" & i, MaxMinVal:=3, ValueOf:=0, ByChange:="$B$" & i & ":$E$" & i, _
Engine:=1, EngineDesc:="GRG Nonlinear"
' 添加 Solver 约束
SolverAdd CellRef:="$B$" & i & ":$E$" & i, Relation:=1, FormulaText:="100"
SolverAdd CellRef:="$H$" & i, Relation:=1, FormulaText:="8"
SolverAdd CellRef:="$H$" & i, Relation:=3, FormulaText:="4"
' 求解
SolverSolve
' 重置 Solver
SolverReset
Next i
End Sub
' 重置 Solver
SolverReset
重点注意这个,会重置规划求解。不然每次都会添加你的约束条件
相当于下图的全部重置
这段VBA代码用于在Excel中利用求解器(Solver)解决优化问题。以下是每部分的解释:
-
Dim i As Integer
: 声明一个整型变量i
,用于循环控制。 -
For i = 27 To 224
: 启动一个循环,从第27行到第224行逐行处理。 -
SolverOk SetCell:="$I$" & i, MaxMinVal:=3, ValueOf:=0, ByChange:="$B$" & i & ":$E$" & i, Engine:=1, EngineDesc:="GRG Nonlinear"
: 设置求解器的目标单元格为第i行的I列,优化目标为该单元格的值为0,允许更改B列到E列的单元格,使用“GRG Nonlinear”求解引擎。 -
SolverAdd CellRef:="$B$" & i & ":$E$" & i, Relation:=1, FormulaText:="100"
: 为第i行的B列到E列单元格设置一个约束条件,要求这些单元格的值不超过100。 -
SolverAdd CellRef:="$H$" & i, Relation:=1, FormulaText:="8"
: 为第i行的H列单元格设置一个约束条件,要求该单元格的值不超过8。 -
SolverAdd CellRef:="$H$" & i, Relation:=3, FormulaText:="4"
: 为第i行的H列单元格设置另一个约束条件,要求该单元格的值至少为4。 -
SolverSolve
: 执行求解器计算以找到满足所有约束条件的最优解。 -
Next i
: 结束当前循环,继续到下一行。
这样,代码会对每一行应用相同的求解器设置和约束条件,并寻找每一行的最优解。