R中的多变量优化

时间:2016-09-30 09:16:25

标签: r mathematical-optimization nonlinear-optimization constraint-programming

我想解决R中的优化问题;下面给出了相同的虚拟数据。

# Input Data
DTM <- sample(1:30,10,replace=T)
DIM <- rep(30,10)
Price <- 100 - seq(0.4,1,length.out=10)

# Variables that shall be changed to find optimal solution
Hike <- sample(0:1,10,replace=T)
Position <- sample(-2:2,10,replace=T)

# Objective function
hikes_till_now <- cumsum(Hike) - Hike
PostHike <- numeric(10)
for (i in seq_along(Hike)){
  PostHike[i] <- 99.60 - 0.25*(Hike[i]*(1-DTM[i]/DIM[i]))
  if(i>1) {
    PostHike[i] <- PostHike[i] - 0.25*hikes_till_now[i]
  }
}
Pnl <- Position*(PostHike-Price)

# Snapshot of data
all.data <- data.frame(DTM,DIM,Price,Hike,Position,Pnl)
all.data

#    DTM DIM    Price Hike Position        Pnl
# 1    3  30 99.60000    1        2 -0.4500000
# 2   11  30 99.53333    1        2 -0.6833333
# 3   29  30 99.46667    1        2 -0.7500000
# 4   16  30 99.40000    1       -2  1.3333333
# 5   25  30 99.33333    0        2 -1.4666667
# 6    5  30 99.26667    1        1 -0.8750000
# 7    3  30 99.20000    0       -1  0.8500000
# 8    8  30 99.13333    0        0  0.0000000
# 9   22  30 99.06667    0       -2  1.4333333
# 10  11  30 99.00000    0       -2  1.3000000

变量描述

因此,代码的第一部分包含我系统的输入 - DTMDIM&amp; Price

第二部分包含我想要修改的变量以找到最佳解决方案 - Hike&amp; Position。这些值已如上所述启动。

最后一部分包括我必须做的计算才能达到我的目标函数,即最大化 Pnl

约束

我也有一些限制 -

  1. Hike的总和应小于4
  2. Position的总和应为0,每个Position值应介于-2和2之间。 2
  3. 我之前曾在GAMS和MATLAB工作,但我无法在此处进行优化。我已经通过Rsymphony包和this answer中的示例,但我无法让它们用于多个变量输入。

    帮助表示赞赏。

0 个答案:

没有答案