线性优化可最大程度地减少矢量值的最大值_运筹学

时间:2018-07-17 18:40:12

标签: r linear-programming energysmart

我想进行线性优化。我的问题表述不是100%正确的,因此,我将尝试在本文中进行解释。 我的输入数据集是DS,具有六个t槽和两行,如下所示。

t1	t2	t3	t4	t5	t6
451	432	470	450	530	420
0	0	0	50	50	50

目标函数是查找列总和值的最大值的最小值。例如,上述数据集的最大列总和为580,因此,目标函数将基于约束最小化此最大值。有两个约束,第一个约束,优化数据集的第一行等于原始数据集451 432 470 450 530 420;第二约束,新优化数据集的第二行总和等于原始数据集的第二行总和。约束条件简短地意味着第一行应该是相同的,第二行的值可以从一个插槽移到另一个插槽以实现最小目标函数。

我试图用数学方法将上述问题写成如下:

min z = max(colsum(DS))

受制于:

DS_new [1,] == DS [1,]

Sum(DS_new [2,])== Sum(DS [2,])

R中的代码为:

DS <- mydataset
DS_new <- c()
P <- max(colSums(DS))
library(lpSolve)
objective.in <- c(P)
const.mat <- matrix(c(DS_new[1,],sum(DS_new[2,])), nrow=2,
                byrow=TRUE)
const.rhs <- c(DS[1,],sum(DS[2,]))
const.dir <- c("==", "==")
optimum <- lp(direction="min", objective.in, const.mat,
          const.dir, const.rhs)

输出为:

> optimum

错误:找不到可行的解决方案

但是,我想要的输出是:

DS
   t1  t2  t3  t4  t5  t6
1 451 432 470 450 530 420
2  50  50  50   0   0   0

上述输出数据集的最大列总和为530。

0 个答案:

没有答案