R中二次约束的单变量非线性优化问题

时间:2014-07-04 09:22:09

标签: r mathematical-optimization quadratic nonlinear-optimization

我有一个二次函数f,其中f = function (x) {2+.1*x+.23*(x*x)}。假设我有另一个二次fn g g = function (x) {3+.4*x-.60*(x*x)}

现在,我希望在给定约束条件1 g>0和2. 600<x<650

的情况下最大化f

我已尝试过套餐optimconstrOptimoptimizeoptimize做一个暗淡的事。优化,但没有约束和constrOptim我无法理解。我需要使用R.请帮助。

P.S。在这个例子中,值可能不稳定,因为我已经给出了两个随机二次函数,但基本上我想要给定二次约束的二次fn的最大化。

1 个答案:

答案 0 :(得分: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而言1 < x < 5小于0。

但假设您的第二个条件是g(x)>0,那么您只需将1 < x < 2.59的解决方案与该时间间隔合并为f,然后最大化f在该区间内使用标准单变量优化。

你甚至不需要运行优化算法。您的目标x^2是二次的。如果x^2的系数为正,则最大值将位于x的限制之一,因此您只需要尝试少量值。如果f(x)的系数为-ve,那么最大值可以是极限,也可以是f'(x)=0达到峰值(解决f)的点,如果它在您的限制范围内。

因此,您可以准确地执行此操作,只需要测试一些条件,然后计算一些时间间隔,然后在这些间隔限制下计算{{1}}的某些值。