1

现在,我正在使用 GAMS 求解器来最大化目标函数(最大化总平均容量利用率),如下所示:

objFunction.. G =E= sum((i,j), X(i,j)/caprepaircenter(j)) / sum(j, Z(j));

在对象函数中;

  • X(i,j) 给出从收集中心 i 到维修中心 j 的返回量 (X(i,j) >= 0),
  • caprepaircenter(j) 给出每个维修中心 j 的容量,并且
  • Z(j) 给出维修中心 j 的建立决策(二元决策变量/如果维修中心 j 开放则 Z(j) = 1,否则 Z(j) = 0)。

但是,我想在 GAMS 代码中使用线性目标函数而不是非线性目标函数。那么,如何将非线性目标函数(如上所述)转换为线性?

4

3 回答 3

0

如果 X(i,j)、caprepaircenter(j) 和 Z(j) 都是变量,那么恐怕没有办法将你的目标函数转换为线性函数。

于 2017-04-25T09:58:37.103 回答
0

实际上,X(i,j) 和 Z(j) 是变量,而 caprepaircenter(j) 是一个参数。在这种情况下,有没有办法将这个非线性函数转换为线性函数?

于 2017-04-26T12:31:45.603 回答
0

方程

G =E= sum((i,j), X(i,j)/caprepaircenter(j)) / sum(j, Z(j))

可以写成

sum(j, G*Z(j)) =E= sum((i,j), X(i,j)/caprepaircenter(j)) 

这又可以写成:

sum(j, y(j)) =E= sum((i,j), X(i,j)/caprepaircenter(j)) 
y(j) = G*Z(j)

产品y(j) = G*Z(j)continuous variable * binary variable. 这可以线性化,如此处所示

是应用此技巧的类似模型。

于 2017-05-01T17:51:01.280 回答