excel规划求解结合vba宏笔记

ops/2024/9/24 4:24:21/

目录

概念与配置

规划求解定义

excel%E8%AE%BE%E7%BD%AE%E8%A7%84%E5%88%92%E6%B1%82%E8%A7%A3-toc" style="margin-left:40px;">excel设置规划求解

宏的基本操作

excel%E6%89%B9%E9%87%8F%E8%BF%9B%E8%A1%8C%E8%A7%84%E5%88%92%E6%B1%82%E8%A7%A3%E6%A1%88%E4%BE%8B-toc" style="margin-left:0px;">excel批量进行规划求解案例

加载规划求解模块

宏的设置

宏录制vba

其他案例


概念与配置

规划求解定义

运用“规划求解”定义并求解问题 - Microsoft 支持

excel%E8%AE%BE%E7%BD%AE%E8%A7%84%E5%88%92%E6%B1%82%E8%A7%A3">excel设置规划求解

EXCEL规划求解的简明教程 - 知乎 (zhihu.com)

excel中的批量操作可以使用vba宏来进行操作

宏的基本操作

Excel-VBA 快速上手(一、宏、VBA、过程、类型与变量、函数)_excel vba-CSDN博客

复杂的宏可以使用宏录制

Excel 宏教程:录制宏基础 - 懒人Excel (lanrenexcel.com)

使用宏录制器自动执行任务 - Microsoft 支持

excel%E6%89%B9%E9%87%8F%E8%BF%9B%E8%A1%8C%E8%A7%84%E5%88%92%E6%B1%82%E8%A7%A3%E6%A1%88%E4%BE%8B">excel批量进行规划求解案例

批量处理通常可以使用vba进行编写来实现,通过宏录制结合gpt可以 实现零基础实现复杂的批处理。

加载规划求解模块

通过设置进行规划求解

宏的设置

然后就可以编写了

宏录制vba

自行设置

然后进行规划求解

输入你的约束函数等信息

完成后点击停止录制

就可以看到我们宏录制的vba了

运行代码前需要引入

然后通过gpt进行修改完善

例如我的vba

先随机初始化

Sub FillRandomNumbers()Dim rng As RangeDim cell As RangeDim minValue As DoubleDim maxValue As Double' 设置随机数的最小值和最大值minValue = 0#maxValue = 120#' 设置要填充随机数的范围Set rng = Range("B2:E89")' 遍历每个单元格并填充随机数For Each cell In rngcell.Value = minValue + (maxValue - minValue) * RndNext cell
End Sub
Sub OptimizeRows()Dim i As IntegerFor 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' 重置 SolverSolverResetNext i
End Sub

   ' 重置 Solver
        SolverReset

重点注意这个,会重置规划求解。不然每次都会添加你的约束条件

相当于下图的全部重置

这段VBA代码用于在Excel中利用求解器(Solver)解决优化问题。以下是每部分的解释:

  1. Dim i As Integer: 声明一个整型变量 i,用于循环控制。

  2. For i = 27 To 224: 启动一个循环,从第27行到第224行逐行处理。

  3. 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”求解引擎。

  4. SolverAdd CellRef:="$B$" & i & ":$E$" & i, Relation:=1, FormulaText:="100": 为第i行的B列到E列单元格设置一个约束条件,要求这些单元格的值不超过100。

  5. SolverAdd CellRef:="$H$" & i, Relation:=1, FormulaText:="8": 为第i行的H列单元格设置一个约束条件,要求该单元格的值不超过8。

  6. SolverAdd CellRef:="$H$" & i, Relation:=3, FormulaText:="4": 为第i行的H列单元格设置另一个约束条件,要求该单元格的值至少为4。

  7. SolverSolve: 执行求解器计算以找到满足所有约束条件的最优解。

  8. Next i: 结束当前循环,继续到下一行。

这样,代码会对每一行应用相同的求解器设置和约束条件,并寻找每一行的最优解。

其他案例

Excel规划求解的vba调用_规划求解 vba-CSDN博客


http://www.ppmy.cn/ops/105220.html

相关文章

.NetCore发布到IIS

一:安装sdk(下载 .NET 8.0 SDK (v8.0.302) - Windows x64 Installer) 与donet Runtime(.NET Downloads (Linux, macOS, and Windows))选择对应的版本下载 二:解决问题:HTTP 错误 500.19 - Internal Server Error 无法访问请求的页面&#x…

es集群详解

1、基本介绍 1.1、为什么需要集群 单台 Elasticsearch 服务器提供服务,往往都有最大的负载能力,超过这个阈值,服务器性能就会大大降低甚至不可用,所以生产环境中,ES 一般都是运行在指定服务器集群中。 除了负载能力&…

Ovirt-Engine(4.3.10 )备份恢复

介绍如何进行 oVirt Engine 的备份、恢复以及相关操作,包括自动备份脚本、手动备份步骤、托管引擎的恢复流程,以及恢复后的配置和验证步骤。 1. Engine 备份部分 1.1 备份使用的脚本 以下是一个用于自动备份 oVirt Engine 的 Bash 脚本: …

实战项目:俄罗斯方块(六)

文章目录 🍊自我介绍🍊图像界面绘制界面绘制界面显示代码运行结果 你的点赞评论就是对博主最大的鼓励 当然喜欢的小伙伴可以:点赞关注评论收藏(一键四连)哦~ 🍊自我介绍 Hello,大家好,我是小珑也…

【ES常用查询操作】

在 Elasticsearch (ES) 中,多条件检索可以通过组合多个查询条件来实现。Elasticsearch 提供了多种查询类型和组合方式,常见的有 bool 查询、must、should、must_not 和 filter 等。以下是一些常见的多条件检索示例。 1. 使用 bool 查询 bool 查询允许你…

SQL Server Service Broker故障排除

如果你的SQL Server Queue无法正常工作,这可能是由于多种原因造成的,比如设置不正确、SQL Server Service Broker存在问题,或者队列本身有问题。以下是一些故障排除步骤: Check SQL Server Service Broker: 你的队列所在的数据…

JS设计模式之“幽灵工厂” - 抽象工厂模式

image.png 一. 了解带头模范 - 抽象类 JavaScript中并没有原生的抽象类的概念,但可以通过一些方式来模拟实现抽象类的效果。 抽象类是一种不能被直接实例化的类,只能作为其他类的基类使用。它定义了一组抽象方法,子类必须实现这些抽象方法。…

JAVA vs Python:谁更适合后端开发?

在最近的学习中,总有人问我JAVA vs Python:谁更适合后端开发? 而在后端开发中,Java和Python经常被拿来比较,就像在问“你喜欢吃米饭还是面条?”答案并不绝对,而是取决于项目的需求、团队的熟悉度&#xff…