1

在与 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 的代码示例。你能指出我可以使用的示例实现吗?

谢谢你 :)

4

1 回答 1

2

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

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

...

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

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

Xpress 示例数据库 - Mosel - 求解技术 ( https://examples.xpress.fico.com/example.pl#mosel_solv )

于 2018-11-21T09:52:11.663 回答