在Mosel中平方决策变量

问题描述

在我的问题中,我想最小化决策变量* 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 User Guide的第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

我想念的是什么!!扯掉我的头发?谢谢...

解决方法

该代码段不显示已加载哪个求解器模块:如果它使用Xpress Optimizer模块,即以类似这样的行开头

uses "mmxprs"

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

uses "mmxprs","mmnl"

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

uses "mmxnlp" 

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...