1

在我的问题中,我想最小化决策变量 * LARGE_CONSTANT 的平方和。平方的原因是激励求解器平均分布决策变量;如果我必须使用恐慌变量,我想在一组位置中平等地使用它们。

一些代码(诚然不足以重现),如下:

declarations  
SITE: set of string  
c_min_panic: array(SITE) of mpvar  
c_max_panic: array(SITE) of mpvar  
end-declarations

! Objectives.
Min_Panicking:= sum(s in SITE) ((c_min_panic(s) * 10000)^2)  
Max_Panicking:= sum(s in SITE) ((c_max_panic(s) * 10000)^2)  

但是,这会产生错误:Mosel: E-101...运算符类型不兼容(mpvar' ^ 未定义整数)。
删除 ^ 使问题正常工作。

我很震惊为什么我不能解决这个问题?事实上,我在文档中看到的示例看起来像是对目标函数求平方的成功尝试。例如,FICO Xpress 用户指南的第 186 页似乎是这样做的:

! Objective: minimise the total squared distance between all points  
  TotDist:= sum(i,j in RN | i<j) ((x(i)-x(j))^2+(y(i)-y(j))^2

我错过了什么!!把我的头发扯下来谢谢...

4

1 回答 1

1

代码片段没有显示加载了哪个求解器模块:如果它使用 Xpress Optimizer 模块,即以如下行开头

uses "mmxprs"

您还需要加载模块“mmnl”以扩展 Mosel 语言的约束处理能力以包含二次表达式,因此

uses "mmxprs", "mmnl"

另一种选择是加载 Xpress Nonlinear 模块:

uses "mmxnlp" 
于 2020-08-19T08:35:38.440 回答