我一直在使用Excel解算器来处理以下问题
求解等式中的ab和c:
y = a*b*c*x/((1 - c*x)(1 - c*x + b*c*x))
Run Code Online (Sandbox Code Playgroud)
受限制
0 < a < 100
0 < b < 100
0 < c < 100
f(x[1]) < 10
f(x[2]) > 20
f(x[3]) < 40
Run Code Online (Sandbox Code Playgroud)
我有大约10(x,y)值对.我最小化了abs的总和(y - f(x)).并且我可以在每个x处约束函数结果的系数和值范围.
我尝试了nls(没有试图强加约束),虽然Excel提供了几乎我提供的任何起始值的估计值,但nls几乎从未返回答案.
我转而使用optim,但是我在应用约束时遇到了麻烦.
这是我到目前为止的地方 -
best = function(p,x,y){sum(abs(y - p[1]*p[2]*p[3]*x/((1 - p[3]*x)*(1 - p[3]*x + p[2]*p[3]*x))))}
p = c(1,1,1)
x = c(.1,.5,.9)
y = c(5,26,35)
optim(p,best,x=x,y=y)
Run Code Online (Sandbox Code Playgroud)
我这样做是为了添加第一组约束 -
optim(p,best,x=x,y=y,method="L-BFGS-B",lower=c(0,0,0),upper=c(100,100,100))
Run Code Online (Sandbox Code Playgroud)
我收到错误""ERROR:ABNORMAL_TERMINATION_IN_LNSRCH"
最终得到更高的错误值($ value).所以看起来我做错了什么.我根本无法弄清楚如何应用我的另一组约束.
有人能为我提供一个基本的想法,如何解决非统计学家可以理解的这个问题?我看了很多帖子,看了几本R书.R书最简单地使用了优化.
我正在尝试学习如何在提升模式下运行 vbscript。如果我尝试运行提升的 vbscript 有参数,我就无法完全让它工作。
这是一个简单的例子:
操作系统版本.vbs
' Return a string indicating the operating system
strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
& "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set colOperatingSystems = objWMIService.ExecQuery _
("Select * from Win32_OperatingSystem")
'Wscript.echo Wscript.Arguments(0)
For Each objOperatingSystem in colOperatingSystems
Wscript.StdOut.Write objOperatingSystem.Caption
Wscript.StdOut.WriteBlankLines(1)
Wscript.StdOut.Write "Version " & objOperatingSystem.Version
Next
Run Code Online (Sandbox Code Playgroud)
运行Elevated.vbs
' Run the script in elevated mode
'
' This will be needed to install programs into Program Files
prgName = Wscript.Arguments.Item(0)
prgArgs = ""
If …Run Code Online (Sandbox Code Playgroud)