excel规划求解结合vba宏笔记

server/2024/10/22 17:19:39/

目录

概念与配置

规划求解定义

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/server/111387.html

相关文章

浅析SVG无功补偿器在新能源发电中的应用

引言 随着新能源技术的不断进步,光伏发电已经崛起为未来能源发展的一个关键领域,各地纷纷建立起越来越多的光伏电站。然而,光伏发电领域仍面临诸多挑战,包括电网电压不稳定、发电过剩以及电压波动等问题。在这样的背景下&#xf…

最新黑名单查询录入系统_全开源源码

最新黑名单查询录入系统_全开源源码 前端html 后端layui 操作部分都采用API接口的方式实线 集结了layui表格的多数据操作,添加,批量删除,分页,单项删除 后台数据修改采用绑定参数的形式来进行修改可以很好的预防数据库注入…

Unity(2022.3.41LTS) - UI详细介绍-画布

目录 零. 简介 一、图像的基本属性 二、图像的类型 三、图像的使用方法 四、代码控制图像 五、优化和注意事项 零. 简介 在 Unity 中,图像(Image)是一种常用的 UI 元素,用于显示静态图片或 Sprite(精灵图&#…

COB超微小间距LED显示屏是什么,它的性价比怎么样,市场大有可为

COB(Chip on Board)技术最早发源于上世纪60年代,是将LED芯片直接封装在PCB电路板上,并用特种树脂做整体覆盖。COB实现“点” 光源到“面” 光源的转换。点间距有P0.3、P0.4、P0.5、P0.6、P0.7、P0.9、P1.25、P1.538、P1.5625、P1.…

数据结构(单向链表)

单向链表代码 #ifndef _LINK_H_#define _LINK_H_typedef int DataType;typedef struct node {DataType data;struct node *pnext; }Link_Node_t;typedef struct link {Link_Node_t *phead;int clen; }Link_t;extern Link_t *link_creat(); extern int push_link_head(Link_t *…

Oracle rac 修改vip scan ip

背景介绍: 现在有个需求,主机的物理机迁移,为了让业务改动最小,要修改新主库的VIP & SCAN IP,同网段的修改vip & scan比较简单 ps: 过段时间要修改物理机的网段,届时再更新! 修改vip …

第十五届北京青年相声节宣传片发布

第十五届北京青年相声节宣传片,围绕相声演员的四个基本功:说、学、逗、唱,搭建四个生活场景,编创四个微短故事,演绎四组人物关系,向大众普及“相声就在我们身边”的深刻内涵。

ES6中是如何实现模块化

前端模块化的理解 前端模块化是一种将复杂代码按功能的不同划分成不同模块进行单独维护和管理的开发方式。这种方式旨在提高开发效率、降低维护成本,并增强代码的可重用性、可读性和可维护性。模块化的核心思想是将系统分割成多个独立的功能部分,每个部…