【问题标题】:univariate nonlinear optimization with quadratic constraint in RR中具有二次约束的单变量非线性优化
【发布时间】:2014-07-04 09:22:08
【问题描述】:
我有一个二次函数 f,其中,f = function (x) {2+.1*x+.23*(x*x)}。假设我有另一个二次 fng 其中g = function (x) {3+.4*x-.60*(x*x)}
现在,我想最大化 f 给定的约束 1.g>0 和 2.600<x<650
我已经尝试过 optim、constrOptim 和 optimize 包。 optimize 暗一点。优化,但没有约束和constrOptim 我无法理解。我需要使用 R。请帮助。
附:在这个例子中,值可能不稳定,因为我给出了两个随机二次函数,但基本上我希望在给定二次约束的情况下最大化二次 fn。
【问题讨论】:
标签:
r
mathematical-optimization
quadratic
nonlinear-optimization
【解决方案1】:
如果您通过通常的二次公式将g(x)=0 求解为x,那么这只会为您提供x 的另一组界限。如果您的x^2 系数为负,则解之间的g(x) > 0,否则解之外的g(x)>0,因此在(-Inf,x1)和(x2,Inf)之内。
在这种情况下,g(x)>0 对应于 -1.927 < x < 2.59。所以在这种情况下,您的两个约束不能同时实现(g(x) 对于600<x<650 小于 0)。
但是假设您的第二个条件是 1 < x < 5,那么您只需将来自 g(x)>0 的解决方案与该区间组合得到 1 < x < 2.59,然后使用标准单变量优化在该区间内最大化 f。
而且您甚至不需要运行优化算法。你的目标f 是二次的。如果x^2 的系数为正,则最大值将处于您的 x 限制之一,因此您只有少量值可以尝试。如果 x^2 的系数为 -ve,则最大值处于极限或 f(x) 峰值(求解 f'(x)=0)(如果在您的极限内)。
因此您可以精确地执行此操作,只需测试几个条件,然后计算一些间隔,然后计算这些间隔限制下的 f 的一些值。