微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在Mosel中平方决策变量

如何解决在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" 

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。