如何解决在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 举报,一经查实,本站将立刻删除。