Mosel PREINTSOL回调的语法?

时间:2018-11-09 12:16:39

标签: callback mosel

在与CPLEX合作一段时间后,我才刚接触Xpress Mosel。我想用Mosel和Xpress的本地回调解决车辆路由问题。

model VRPSPD
uses "mmxprs", "mmsystem", "mmsheet"   
forward procedure break_subtours(isheur:boolean,cutoff:real) 
!implementation VRP except subtours
setcallback(XPRS_CB_PREINTSOL, "break_subtours(false,0.01)") 
minimize(obj)
procedure break_subtours(isheur:boolean,cutoff:real)
!subtour separation
!insert cuts
end-procedure 

到目前为止,我收到错误消息:“回调PREINTSOL的过程类型错误”(但https://www.fico.com/fico-xpress-optimization/docs/latest/mosel/mosel_lang/dhtml/setcallback.html指定使用此错误) 我发现有类似cbsetcutoff的东西,但是我还不知道如何使用它。

我还没有找到任何使用PREINTSOL的代码示例。您能指出我可以使用的示例实现吗?

谢谢:)

1 个答案:

答案 0 :(得分:2)

回调中使用的子例程必须是“公共”的,因此在您的示例中:

转发公共过程break_subtours(isheur:boolean,cutoff:real)

...

公共过程break_subtours(isheur:boolean,cutoff:real)

您可以在此处找到几个实现剪切生成的回调的Mosel示例:

Xpress Examples Database - Mosel - Solving techniqueshttps://examples.xpress.fico.com/example.pl#mosel_solv