Tag: 求解器

在Excel中使用Solver的VBAmacros优化不返回最佳variables

我试图在Excel中优化三个参数,以最小化实验值和理论值之间的误差。 我使用求解器为每个参数,一个一个,在一个for循环。 但是,我想迭代这个求解器的循环(循环内的循环),直到实验值的误差和理论值小于某个目标值。 我的实验值是$K25 。 我的理论价值(根据我的模型方程计算)是$J$25 。 我需要优化的参数是$C$4 , $C$5 , $C$6 当我运行下面的VBA代码时, $C$4 , $C$5 , $C$6不会改变它们的初始值。 但是,macros编译没有错误。 有人可以帮我从这里出去吗? 这里是代码: Sub Macro3() Application.ScreenUpdating = False SolverReset Dim j As Integer For j = 1 To 100 Step 1 If "$J$25" > "$K$25" Then Dim i As Integer, s As String For i = 4 […]

如果线性规划决策variables> 0,则> = 3000

我试图在Excel中使用求解器来创build一个线性程序来最小化共同基金的开支。 我的决定variables是每个基金投入的金额。 如果有什么投资,它必须达到资金的最低限度。 我如何编程? 基金1投入金额=>基金投资额> 0,基金投资额1> = 3000其他投资额= 0 任何帮助是极大的赞赏。 谢谢。

Excel求解器曲线拟合失败 – MatLab重铸

我有一些与Excel的求解器奇怪的问题。 基本上我想要做的是曲线拟合我的数据。 我有两条不同的线,一条是我的校准线,另一条是我试图匹配校准线的派生线。 我的线取决于19个不同的variables参数(也许这是太多了?我已经尝试了更less的结果),我使用求解器来调整这些参数,使两条线尽可能接近。 例如: QP栏包含我想要改变的variables,改变这些将会使我离校准曲线更近或更远。 QP的每个后续值必须大于第一个。 Col=B Col=C Power .QP_' 1 ….. 57000 2 ….. 65000 3 ….. 70000 4 ….. 80000 5 ….. 80000 因此,我的Excel解算器参数看起来像这样: C1:C19>=0,C1:C19<=100000 , C2>=C1, C3>=C2,C4>=C3 …我也尝试制作另一列的差异在每个值之间,然后说这些必须是diff>=0 。 为了将此与我的校准曲线进行比较,我已经获得了校准曲线数据,并从QP导出了我的数据,然后将其平方,以创build我的平方误差总和。 例如: (Calibration-DerivedQP)^2=SS(x) <- where x represents the row number Sum(SS(x))=SSE SSE是我设定的解决scheme,以尽量减less。 而改变QP一切都会自动更新。 没有if语句被使用,没有数据透视表被使用。 如果我删除类似于C2>=C1的参数,一切正常,除了派生值是不可行的。 但是当求解器使用这些参数运行时,什么都不会改变,无论我用什么猜测作为初始值(这样我就可以确保我没有猜到局部最小值),求解器不能改进我的解决scheme。 这使我相信,我的参数中的某些东西正在被打破,因为我可以很容易地通过猜测和检查改进我的解决scheme。 其余的求解器设置都是默认的,而且由于我的曲线并不平滑(我不这么认为),所以使用了渐进方法。我曾经在这种情况下工作过,现在有些东西似乎被破坏了。 任何想法表示赞赏! 非常感谢! 对不起,如果我缺less任何重要的信息。 如果在这些语言中有更好的方法,我也熟悉matlab和R。

Excel求解器在find解决scheme之前就结束了 – VBA

我是VBA的初学者用户,我在Excel Solver中遇到了一些问题。 基本上我要计算几种金融工具的公允价值,按来源国分组。 对于每个国家,求解器将最小化一个函数以便find模型参数。 到目前为止,我已经能够做到这一点,在49个案例中,50个不同的国家/类别中的求解器工作。 这就是我的问题,当涉及到这个国家的解决者经过3或4次迭代后步出。 使目标function远未达到最小化。 但是当我点击一个命令button完全链接到相同的子程序,它find了一个解决scheme。 这里是我的代码的一部分,NSCoeff是链接到求解器的子。 Sub NelsonSiegel() Dim a, b, c, d, e, f, g, p, s, I, t, v, pv, TIR As Variant Dim NumBonds, bnd_cnt As Integer Dim current_wb As String Dim spot(), df, dfcf, NumberCashFlows, Lambda, Lambda2, Beta1, Beta2, Beta3, Beta4, TimeToCashFlow(), NSPV As Variant Dim j As […]

embedded解算器的VBA仅适用于第一个活动单元格引用

我想创build一个macros,使我能够select一个活动单元格(“Q50”),它将通过改变单元格$M$2,$M$3,$M$5,$M$7最小化活动单元格的值来生成求解器。 $M$2>=0 and $M$3>=0 。 代码的每一件事都适用于第一个选中的activecell。 但是当我点击行("Q51")后面的单元格时,代码不再适用于求解器。 请帮助。 我是VBA的初学者。 请参阅下面的代码。 Sub JCCMacro() ' JCCMacro Macro 'Save ActiveCell Reference for future use Dim PrevCell As Range Set PrevCell = ActiveCell 'Solver Code SolverOk SetCell:="PrevCell.Select", MaxMinVal:=2, ValueOf:="0", ByChange:= _ "$M$2,$M$3,$M$5,$M$7" SolverSolve UserFinish:=True SolverFinish KeepFinal:=1 'Copy in sample and out of sample error PrevCell.Resize(1, 3).Copy 'Paste Values of […]

使用求解器来处理多个单元格

正如你所看到的,我真的是新的VBA编程。 我想为单元格AE3:AE54执行52次求解器。 求解器输出应该在“0”和“1”之间。 我创build了下面的代码来执行单元格的求解器: Sub Solver() Dim i As Integer For i = 3 To 54 SolverReset SolverAdd CellRef:="$AE$i", Relation:=1, FormulaText:="1" SolverAdd CellRef:="$AE$i", Relation:=3, FormulaText:="0" SolverOk SetCell:="$AN$i", MaxMinVal:=2, ValueOf:="0", ByChange:="$AE$i" SolverSolve True Next i End Sub 我没有办法以正确的方式去做。 有人可以帮忙吗?

Excel VBA:求解器似乎不使用datevariables“随着时间的推移”优化?

我有一个优化问题,我试图解决与解决。 其中,一个决策variables是一个包含date的单元格。 基于时间序列,求解器应该select最佳时间点。 但是,虽然它改变了其他的决策单元,但决不会改变这个决定! 我甚至试图放弃其他决定variables(保持不变) – 仍然没有改变。 为了帮助您locking我的问题,我创build并附加了一个简化问题的Excel工作表(这里是: 下载链接 ),从时间序列的股票价格求解器应该select价格最高的date。 (我知道这个特殊的问题很容易用MAX公式解决,但是我真正的优化问题要复杂得多,而且不能解决这个问题。) 求解器在初始date值时仍然不会改变任何东西 – 即使在这个非常简化的设置中! 从math的angular度来看,目前的问题可以表征为(非线性)阶梯函数,其中特定的时间点(在x轴上)对应于不同的价格(在y轴上的阶梯)。 是否有任何技巧来解决时间(date)值? 如果你有幸find正确的解决scheme设置,使其得到正确的解决scheme(这将是2009年1月10日),我会非常乐意听到他们。 编辑:我发现非光滑不连续函数(像这个问题,这基本上是一个阶梯函数)的非线性问题通常很难解决任何(非)线性优化。 能否有人在这件事上有所悟,帮助我以一种可以解决的方式重新解决问题。 我发现堆栈溢出的一个类似的话题与build议的解决scheme(请参阅第一个答案),但不知道如何将其应用于我的问题。 谢谢,史蒂夫

具有多个inputvariables的Excel求解器

我有一个Excel表格,其中包含一个运动员名单,他们的职位,分配给这些球员的薪水以及预计的积分数量。 目前我正在使用求解器来创build最佳的运动员队伍,并且可以在一定的位置限制和预定的工资帽内进行。 在我的具体例子中,不同的玩家位置是:PG,SG,SF,PF,C,G和F.注意G可以是PG或SG,F可以是SF或PF。 这个求解器目前正在工作,但在某些情况下,玩家可能有多个职位。 因此,例如,玩家A可以被用作SF或SG。 有没有什么办法来解决这个问题,以便有问题的玩家可以在任何一个插槽中使用? 为了帮助解释,我将提供一些正在使用的数据的例子。 以下是玩家列表的一个小例子: Position Player Salary Game Points Pos 1 Pos 2 PF/C Kevin Love $10,400 Pho@Min 09:30PM ET 53.17 PF C PG/SG Stephen Curry $10,000 GS@Bkn 07:30PM ET 47.50 PG SG SG/SF James Harden $9,500 LAL@Hou 08:00PM ET 41.13 SG SF PF/C LaMarcus Aldridge $9,500 Orl@Por 10:00PM ET 45.22 […]

VBA不添加元素到Solver模型

我之前有一个问题,解决scheme没有通过VBA添加二进制约束模型…我(大多数)认为这一个。 但现在我有一个新的问题。 首先,让我发表违规代码的相关部分。 我应该注意到这是在Excel 2007中运行。 'build string of ByChange cells and set up cascading constraints by_change_string = "" For i = 1 To j – 1 If Len(by_change_string) > 0 Then 'there are already some elements in the string, so we might start with a comma If Not (Right(by_change_string, 1) = ",") Then 'make sure […]

Excel求解器忽略VBA中的约束

我正在尝试使用Solverfind一个简单投资组合的最大回报。 在工作表中使用Solver直接工作,但在VBA中设置命令时不会。 相反(正如你可以从screengrab看到的那样)忽略了其中一个约束(在T10中计算的权重总和应该等于1)。 有趣的是,如果我改变第三行来说: SolverAdd CellRef:="$T$10", Relation:=2, FormulaText:="100" 或“1”以外的其他整数。 (也可能忽略其他约束,但我不能检查这个)。 表格看起来像这样: 而我的代码是: Sub FindRange() SolverReset SolverOk SetCell:="$T$7", MaxMinVal:=1, ValueOf:="0", ByChange:="$O$10:$R$10" SolverAdd CellRef:="$T$10", Relation:=2, FormulaText:="1" SolverAdd CellRef:="$O$10:$R$10", Relation:=3, FormulaText:="0" SolverSolve UserFinish:=True SolverFinish KeepFinal:=1 Range("T9").Value = Range("T7").Value End Sub 任何build议感激地欢迎!