我不确定这是否是合适的地方,但是我需要在R中高效地实现一个非常大的线性规划问题(这里没有办法绕过R )。我已经尝试了一些像lpSolve这样的包,但结果似乎并不令人满意。我很高兴有任何关于软件包的建议,或者是一个更好的地方来问这个问题。
以下是问题所在:
N <- 10^4 # number of products
K <- 10^4 # number of scenarios
### Get expectation and covariance matrix
mu <- rep(100,N)
A <- matrix(rnorm(N^2,0,1), nrow=N,
我想知道是否有人能够推荐一些软件包来解决非线性优化问题,这些非线性优化问题可以为最优解提供整数变量?问题是最小化一个具有等式约束的函数,该函数受到一些下界和上界约束。
我已经在R中使用了'nloptr‘包来解决一个非线性优化问题,这个问题运行得很好,但现在我想扩展这个方法,使一些变量成为整数。到目前为止,根据我对nloptr的使用和理解,它只能返回连续变量,而不能返回整数变量以获得最优解。
我认为这类问题需要使用混合整数非线性规划来解决。
nloptr表单中的一个问题示例:
min f(x) (x-y)^2/y + (p-q)^2/q
so that (x-y)^2/y + (p-q)
我正在学习AMPL,以加快一个模型,目前在excel电子表格与excel解决程序。它基本上是基于一个1xm变量和一个m参数的矩阵乘法结果。它可以找到变量,使结果中某些值的最小值最大化,同时保持相同结果中的其他值满足几个约束条件。在AMPL如何做到这一点?
Given: P= m x n parameters
Variable: X= 1 x m variable we tried to solve
Calculate: R= X x P , result of matrix multiplication of X and P
Maximize: min(R[1..3]), the minimu
我在模拟数据集上拟合一个模型,比较glmnet和CVXR的结果。
如果我没有错误的代码,结果是非常不同的。
显式的glmnet产生的结果非常接近真实的参数。
为什么是这种情况?
library(CVXR)
library(glmnet)
set.seed(571)
n = 500
p = 9
x = matrix(rnorm(n*p), ncol=p)
b = c(0.5, 0, 25, -25, 125, -125, rep(0, 3))
y = x %*% b + rnorm(n, sd=.05)
n = nrow(x); p = ncol(x)
lam = 0.4
al = 0.3
在R中用Variable()和Problem()解决优化问题时,我遇到了一些对变量施加整数条件的困难。 我知道当使用Variable()时,它不是很直观,例如,如果你想让"x“除以,你需要使用inv_pos(x)而不是1/x (这会导致错误)。所以我猜有一个解决办法,但我找不到它。 p <- Variable(100)
objective <- Minimize(sum(p))
constraints <- list(p%%1==0) #this is what I expected to work
constraints <- list((p-1*flo
我一直在研究一些示例代码,试图学习CVX,并旋转轮子,试图弄清楚CVXR中Kelly示例的扩展: 扩展:正如在上面的一些轨迹中观察到的,财富在最终增加之前往往会大幅下降。降低这种下降风险的一种方法是添加一个凸约束,如Busseti,Ryu和Boyd (2016,5.3)中所述,使用log_sum_exp原子,这可以在一行内完成。其他扩展,如财富目标,投注限制和风险值/风险值界限也很容易合并。 CVXR示例的R版本(不带扩展名)在这里:https://cvxr.rbind.io/cvxr_examples/cvxr_kelly-strategy/ ## Solve for Kelly opti
我试着用CVXR软件包建立简单的短期销售投资组合模型。下面是众所周知的目标函数(预期收益减去预期收益的sd与已知的teta).但R返回如下:“construct_intermediate_chain中的错误(object,candidate_solvers,gp = gp):问题不遵循DCP规则。”我试图在下面的代码中修复这个问题,但是没有什么有用的。同样,这种类型的obj函数是凹形的。同时,还可以方便地生成凸函数和求最小值。错误在这种情况下也不会消失。请您解释一下错误在哪里,可能的解决方案是什么。
library(CVXR)
n = 3
w = Variable(n)
c = matrix(
您好,我正在尝试从这里运行示例:http://rtutorial.altervista.org/lp_solvers.html 出现错误的地方的代码片段和测试: library(CVXR)
#create Variable objects that can be manipulated by the solver.
x<-Variable(3)
#coefficients for objective function
C<-c(2,4,3)
#problem:
C %*% x 错误: mul_dims_promote(lh_dim,rh_dim)中出错:维度不兼容 > x
当我试图为SPECIALIZE找到一个解决方案时,我正在处理实用主义。
我想出了一个例子
{-# LANGUAGE FlexibleContexts, GeneralizedNewtypeDeriving #-}
import Data.Vector
import qualified Data.Vector.Generic as V
class Foo a
newtype Phantom m = T Int deriving (Show)
instance (Foo m) => Num (Phantom m)
f :: (Num r, V.Vector v r) => v
==在Gurobi Python中是如何工作的?
在创建了所需的变量(x[s,d,r])之后,我将尝试创建一条类似于x[s,d,r] == 1的if语句。问题是,这句话总是正确的,所以无论我把它设置为x[s,d,r]==0还是x[s,d,r]==2,它都是一样的。
x[s,d,r]是由x[s,d,r] = m.addVar(0.0,1.0,1.0,GRB.BINARY,"x_"+ s+"_"+ d +"_" + r)定义的二进制变量。
z = 0.0
for s in students:
for d in dates:
i
我有一个带有非负性约束的优化问题(它必须在下面用减号翻译)。约束由以下方式给出:
function
[neg_constraint,zero_con]=metric_con_130830(theta,v_b,spec,selector,time_all,lambda_all)
theta=exp(theta);
g_sum=selector*(lambda_all*theta.*time_all);
%minus v_b-g_sum because I want v_b-g_sum to be positive
neg_constraint=-(v_b-g_sum);
zero_con=[];