标签: quadratic-programming

如何使用R包Quadprog解决SVM?

我想知道实现Quadprog解决二次编程的正确方法是什么。

我有以下问题(从互联网上窃听),并且还在查看以下http://cbio.ensmp.fr/~thocking/mines-course/2011-04-01-svm/svm-qp.pdf

在此处输入图片说明

解决此问题的正确方法是什么?如果我遇到上述问题,本教程对解决问题会有用吗? http://www.r-bloggers.com/solving-quadratic-progams-with-rs-quadprog-package/

r quadprog quadratic-programming

4
推荐指数
1
解决办法
2146
查看次数

使用portfolio.optim函数在R中进行二次规划时出错

我试图从一个季度创建实现有效的边界,每日收盘价为100股,不允许空头头寸.

第一步是计算每种股票的期间的每日回报:

setwd("/Users/ClariceLoureiro/Desktop/COPPEAD/5th Term/Introducao ao Pacote estatistico em R/db")
getwd()
library(tseries)
Quarter <- read.csv2("20153Q.csv",header=T,dec=".")
assets <- Quarter
n <- nrow(assets)
returns <- (assets[2:n,])/(assets[1:n-1,])-1
Run Code Online (Sandbox Code Playgroud)

然后我使用{tseries}中的portfolio.optim()函数执行二次规划并创建最佳投资组合:

w2 <-portfolio.optim(as.matrix(returns),shorts=FALSE,riskless=FALSE)
Run Code Online (Sandbox Code Playgroud)

但是,当我运行此功能时,会出现以下消息:

Error in solve.QP(Dmat, dvec, Amat, bvec = b0, meq = 2) : 
matrix D in quadratic function is not positive definite!
Run Code Online (Sandbox Code Playgroud)

当我为较少的股票运行相同的代码时,它似乎运作良好:

# Choosing just 70 stocks out of 100
Quarter <- read.csv2("20153Q.csv",header=T,dec=".")
assets <- Quarter[,1:70]

#Calculating the returns
n <- nrow(assets)
returns <- (assets[2:n,])/(assets[1:n-1,])-1

#Portfolio optimization 
w2 <-portfolio.optim(as.matrix(returns),shorts=FALSE,riskless=FALSE)

#Weights 
w2$pw

[1] -3.644189e-19 …
Run Code Online (Sandbox Code Playgroud)

optimization portfolio r quadratic-programming

3
推荐指数
1
解决办法
429
查看次数

找到最适合目标向量的向量线性组合

我试图找到多个预测的权重,以给出尽可能接近已知目标的结果(例如均方误差)。

以下是一个简化示例,显示了四个数据点的三种不同类型的预测:

target = [1.0, 1.02, 1.01, 1.04]  # all approx 1.0
forecasts = [
    [0.9, 0.91, 0.92, 0.91],  # all approx 0.9
    [1.1, 1.11, 1.13, 1.11],  # all approx 1.1
    [1.21, 1.23, 1.21, 1.23]  # all approx 1.2
]
Run Code Online (Sandbox Code Playgroud)

其中,一个预测值始终约为 0.9,一个预测值始终约为 1.1,一个预测值始终约为 1.2。

我想要一种自动找到[0.5, 0.5, 0.0]三个预测的权重的方法,因为对前两个预测进行平均并忽略第三个预测非常接近目标。理想情况下,权重应限制为非负数且总和为 1。

我需要使用某种形式的线性规划或二次规划来做到这一点。我已经安装了 Python fourprog 库,但我不确定如何将此问题转换为此类求解器所需的形式。有人能指出我正确的方向吗?

python linear-programming quadprog quadratic-programming

3
推荐指数
1
解决办法
1649
查看次数

二次规划 CPLEX

我正在尝试使用 CPLEX 的 Python API 实现一个简单的二次程序。随 CPLEX 提供的样本文件 qpex1 对此进行了讨论。qpex.lp 中提到的问题是

Maximize
 obj: x1 + 2 x2 + 3 x3 + [ - 33 x1 ^2 + 12 x1 * x2 - 22 x2 ^2 + 23 x2 * x3
 - 11 x3 ^2 ] / 2
Subject To
 c1: - x1 + x2 + x3 <= 20
 c2: x1 - 3 x2 + x3 <= 30
Bounds
0 <= x1 <= 40
End
Run Code Online (Sandbox Code Playgroud)

该问题在 Python 中实现时,会收到一个矩阵 qmat,该矩阵实现了目标函数的二次部分。矩阵是:

qmat = …
Run Code Online (Sandbox Code Playgroud)

python cplex quadratic-programming

2
推荐指数
1
解决办法
1537
查看次数

SCIP 没有找到 MIQP 问题的良好解决方案,而 CPLEX 很快找到一个解决方案

我想使用 SCIP 解决具有 267 个变量 [1] 的混合整数二次规划问题。

CPLEX 可以在大约 30 秒内解决该问题,并且在不到一秒的时间内就已经找到了非常接近最优解的解决方案 [2, 3]。

不幸的是,SCIP 确实在解决这个问题上遇到了困难,即使运行了 20 多分钟也无法找到接近最佳的解决方案 [4]。

为什么是这样?CPLEX 在 MIQP 方面真的SCIP 好得多吗?我是否没有正确配置 SCIP?如何使用 SCIP 解决这个问题?

在我看来,SCIP 找到的解决方案与松弛的解决方案相去甚远。我的印象是 SCIP 首先解决松弛问题,然后尝试在此基础上找到整数解。这不正确吗?如果是的话,为什么解决方案还那么遥远?

cplex scip quadratic-programming mixed-integer-programming

2
推荐指数
1
解决办法
565
查看次数

用 R 解决约束二次规划

我真的很喜欢 R 但有时它真的让我头疼...

我有以下简单的二次最小化问题,可以在 Excel 中立即制定和解决(点击图片放大):

在此处输入图片说明

![在此处输入图片说明

问题本身非常简单:我想(w1^2+w2^2)/2通过找到 的最佳组合来最小化w1w2b在所有约束下Y*(w1*X1+w2*X2+b) >= 1

我知道有quadprog解决这类问题的软件包,但我发现它太不直观了,以至于我无法正确指定问题:-( 我不想这么说,但 Excel 似乎更适合指定这样的优化问题:-(((

我的问题
如何正确地表述上述问题,以便它可以用 R 解决(无论是哪个包),并且程序会得到w1,w2和的正确值b(如上图所示)。请不要只发布链接,而是请提供有效的实际代码。如果您可以评论您的代码,那将是很棒的,这样您就可以清楚地知道您为什么要做您所做的事情。谢谢!

必要的数据在这里:

data <- matrix(c(2.947814,6.626878, 1,
                 2.530388,7.785050, 1,
                 3.566991,5.651046, 1,
                 3.156983,5.467077, 1,
                 2.582346,4.457777,-1,
                 2.155826,6.222343,-1,
                 3.273418,3.520687,-1),ncol=3,byrow=T)
colnames(data) <- c("X1","X2","y")
Run Code Online (Sandbox Code Playgroud)

附录
有些人对我提供代码(而不是简单的链接)的要求感到生气。我为此道歉并给出了我的理由,即到目前为止我在 SO 的答案中没有找到任何好的方法。更深层次的原因是这个问题是不寻常的,b因为它只在约束中而不是在目标函数中。所以我仍然认为这个问题非常适合 SO。

optimization r constraints quadprog quadratic-programming

1
推荐指数
1
解决办法
1094
查看次数

约束线性回归/二次规划python

我有这样的数据集:

import numpy as np

a = np.array([1.2, 2.3, 4.2])
b = np.array([1, 5, 6])
c = np.array([5.4, 6.2, 1.9])

m = np.vstack([a,b,c])
y = np.array([5.3, 0.9, 5.6])
Run Code Online (Sandbox Code Playgroud)

并希望适应约束线性回归

y = b1*a + b2*b + b3*c

其中所有b的总和为1且为正:b1 + b2 + b3 = 1

R中的类似问题在这里指定:

https://stats.stackexchange.com/questions/21565/how-do-i-fit-a-constrained-regression-in-r-so-that-c​​oefficients-total-1

我怎么能在python中这样做?

python scipy linear-regression quadratic-programming

1
推荐指数
2
解决办法
3065
查看次数