Tag: 求解器

vba求解器 – 为迭代添加一个延迟

我试图控制在VBBA中的Excel解算器。 我用它通过调整input值(i,8)来最小化目标单元格(i,10)的值。 我也有一个用户定义的函数调用外部应用程序的一些计算,使用单元格(我,8)作为input。 目标单元格是UDF输出与另一个固定值的差值。 我发现求解器定期设置问题然后跳过它。 我可以手动调整值来获得更好的解决scheme,所以我认为求解器跳过一个新的迭代比UDF返回一个值更快。 有没有办法减慢求解器迭代? 下面的代码,如果有帮助… Sub Main() Dim Msg As String, MyString As String Dim Style As Variant, Response As Variant Application.ScreenUpdating = False Application.EnableEvents = False 'Define a confirmation message due to long duration of calculations Msg = "This calculation takes long. Do you want to proceed?" 'Define message box style […]

从macros运行Excel求解器

我想从macros运行Excels Solver。 我已经将所有algorithm参数手动input到求解器窗口中。 只要打电话 SolverSolve 我得到一个编译错误。 任何想法如何做到这一点?

与求解器VBA循环

您好我有以下的代码,运行一个单一的优化,通过求解器,我想循环运行。 单个运行代码是: Sub Macro4 SolverReset SolverOk SetCell:="$D$36", MaxMinVal:=2, ValueOf:="0", ByChange:="$D$7:$R$7" SolverAdd CellRef:="$S$7", Relation:=2, FormulaText:="1" SolverAdd CellRef:="$D$7:$R$7", Relation:=1, FormulaText:="$D$6:$R$6" SolverAdd CellRef:="$D$7:$R$7", Relation:=3, FormulaText:="$D$5:$R$5" SolverAdd CellRef:="$D$37", Relation:=2, FormulaText:="$D$41" SolverOk SetCell:="$D$36", MaxMinVal:=2, ValueOf:="0", ByChange:="$D$7:$R$7" SolverSolve UserFinish:=True SolverFinish KeepFinal:=1 Range("D37").Select Selection.Copy Range("E41").Select ActiveSheet.Paste Range("D36").Select Application.CutCopyMode = False Selection.Copy Range("F41").Select ActiveSheet.Paste Range("D36").Select Range("D7:R7").Select Application.CutCopyMode = False Selection.Copy Range("I41").Select ActiveSheet.Paste End […]

在使用rand()函数的单元格上使用Solver加载项

我有一个蒙特卡罗仿真模型,我需要设置一个参数(服务级别)至less95%。 问题是,据我所知,当Solver运行时,它会尝试不同的解决scheme,但是由于RAND()函数,目标单元格总是在不停地变化。 有什么办法可以解决这个问题吗? 禁用RAND()暂时更改? 我试图将计算切换到手动,但不起作用,因为那么目标单元根本不会更新。 我感谢任何帮助,谢谢!

Excel解算器,可变单元格更改调整数据集

我是新来的Excel解算器,我试图用它来做我认为相当简单的任务,但它不会工作。 我有3列如下: %CHNG | PnL | Criteria met 1 | 1 | 1 .5 | 2 | 2 2 | -1 | -1 3 | 6 | 6 -1 | .5 | -.2 | -5 | 和以下2个单元格: Criteria: 0 Total: =sum of criteria met column 当“标准”单元格中的数字发生更改时,只有在“%CHNG”列中的值大于“criteria”单元格中的值的情况下,“标准满足”列中的值才会从PnL列中发布如果声明。 “总数”单元就是“标准满足”列的总和。 (大于标准值的PnL值) 我试图通过更改“标准”单元格中的值来使解算器最大化“总计”单元格,但每次我尝试此操作时,都会使准则单元格保持不变,并声明find了解决scheme。 无论我最初在标准单元格中具有什么价值,解算器在运行时都声称这是解决scheme。 有没有办法让这个工作? 优选没有VBA 谢谢

简单的VBA循环与求解器

我在VBA中有以下macros,我试图让它工作,但我得到一个错误:“编译错误:对象必需” Sub Macro6() ' Macro6 Macro Dim counts As Integer Set counts = 27 Do While counts < 28 SolverOK SetCell:=Sheets("Slag Case_forcedConvection").Cells(counts, 66), MaxMinVal:=3, ValueOf:=1, ByChange:=Sheets("Slag Case_forcedConvection").Cells(counts, 32) SolverSolve userfinish:=True counts = counts + 1 End Sub

Excel VBA和求解器:如何抑制popup时间或迭代限制后popup的对话框?

我在循环中使用属于Excel 2010的标准Solver,并且每隔一段时间整个过程都会暂停,并popup一个对话框,表示已达到最大迭代次数,即使我提供了UserFinish:= True到SolverSolve函数。 它提示用户继续,停止或中止程序。 正如你所想象的那样,当你让机器在夜间独自行驶,第二天早上起床,看到它卡在中间的某个地方时,这是非常烦人的。 我想通过预先定义一个答案(“停止!”并继续下一个优化)来解决这些烦人的提示。 不幸的是,通过谷歌,我只find解决这个问题的尝试,但没有明确的答案。 什么是当今这个问题的最先进的解决scheme,我认为这是许多用户必须遇到的问题? 谢谢,史蒂夫

VBA:缓慢的求解器循环

我有一个代码,以简化的方式计算高炉煤气168小时(例如一周) 它读入一些input值和化学值并计算系统中的摩尔质量。 之后求解器计算出什么样的化学forms(主要是一氧化碳,二氧化碳)的气体出来。问题是,它是非常缓慢的。 如果我打开这个excel工作簿,需要花费几分钟的时间,而且我还没有打算让更多的工作簿打开到最后。 我对VBA很陌生,但是如果可以设置它来解决VBA中的方程式,而不是让excel工作表和VBA解算器之间的迭代,通过逐渐解决细胞价值 – 如果我只是知道如何,如果这是可能的或一个好主意。 其实体中的代码,首先是一般的计算: Sub BFgas() Datamatrix = Range(Cells.Find("Datamatrix").Offset(1, 0).Address, Cells.Find("Datamatrix").Offset(21, 0).Address) ReDim BFoutput(1 To 168, 1 To 3) As Double M_pigiron_Matrix = Range(Cells.Find("BF1 Pig iron production").Offset(1, 0).Address, Cells.Find("BF1 Pig iron production").Offset(168 + 1, 0).Address) Bf_blast_Matrix = Range(Cells.Find("BF 1 – Blast").Offset(1, 0).Address, Cells.Find("BF 1 – Blast").Offset(168 + 1, 0).Address) Bf_oxygen_Matrix = […]

Excel VBA解算器function错误

我有一个VBA代码,似乎与PC,但当我尝试在Mac上运行相同的代码,它不能正常工作。 代码被devise为从指定的列开始,在这种情况下是3.代码用于find最小方差边界。 以下是带有列和行引用的工作表示例。 Row Col3 Col4 Col5….. 26 WeightAssetA .3 27 WeightAssetB .3 28 WeightAssetC .2 29 WeightAssetD .2 30 Sum 1 31 Target Return .05 32 Variance 33 34 Expected Return 代码被devise为通过改变行26到29来find行32的最小值。方差约束是行30必须等于1(总和为26:29)并匹配目标返回。 以下是我目前的代码。 当我运行它似乎是通过每列的循环,但26列只有包含最低方差的列被改变,以包括更新的安全权重。 任何build议,为什么它是通过每列循环,但没有更正每个列与正确的权重,只有一个具有最低方差? 谢谢! Sub Optimizer() ' ' Frontier Macro ' Macro for Developing Portfolio Frontier ' ' Keyboard Shortcut: Ctrl+Shift+M ' […]

可变行长求解器优化

可以说我有四列(U,W,X,Y)。 (i)= X(i),Y(i)= 0,因为Y = XY和U(i)是可变的。 您可以更改“U”列中的值,并将W = X,并且所有值都必须为正值W,X,Y,U。 这是我的代码,它不工作。 lRo = Sheets(“Rohr-Bogen”)。Cells(Rows.Count,2).End(xlUp).Row SolverReset solverprecision = 0.0001 SolverOk SetCell:="$Y$12:$Y$" & lRo, MaxMinVal:=3, ValueOf:="0", ByChange:="$U12$:$U$" & lRo SolverAdd cellRef:="$W$12:$W$" & lRo, relation:=2, formulaText:="$X$12:$X$" & lRo SolverAdd cellRef:="$X$12:$X$" & lRo, relation:=3, formulaText:=0 SolverOptions AssumeNonNeg:=True SolverSolve UserFinish:=True SolverFinish KeepFinal:=1 If Range("W10").Value > 0.0001 Then Call solve End If […]