【问题标题】:Squaring A Decision Variable in Mosel在 Mosel 中对决策变量求平方
【发布时间】:2020-08-16 23:48:25
【问题描述】:

在我的问题中,我想最小化决策变量 * 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' ^ integer' 未定义)。
删除 ^ 使问题正常工作。

我很震惊为什么我不能解决这个问题?事实上,我在文档中看到的示例看起来像是对目标函数求平方的成功尝试。例如,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

我错过了什么!!扯我的头发???谢谢...

【问题讨论】:

    标签: linear-programming mixed-integer-programming integer-programming mosel


    【解决方案1】:

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

    uses "mmxprs"
    

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

    uses "mmxprs", "mmnl"
    

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

    uses "mmxnlp" 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-18
      • 2014-02-25
      • 2020-09-16
      • 1970-01-01
      • 2019-07-29
      相关资源
      最近更新 更多