在lingo中求解最小费用最大流,把最大流写进子模型后,求解最小费用时调用子程序最大流的数值,改用什么函数
时间: 2024-10-19 11:10:56 浏览: 23
LINGO1.rar_lingo 最小运输费用问题_目标函数_蔬菜供应_运费
在Lingo中,如果你已经实现了一个子模型来解决最大流量问题(如Ford-Fulkerson算法),并且这个子模型能够返回最大流及其相应的最小成本,那么当你需要在主模型中多次调用子模型来寻找最小费用的最大流时,你可以通过设置外部变量或者参数来传递所需的输入数据(源节点、目标节点、容量信息等),然后在子程序中计算并更新结果。
在主模型中,你需要定义一些变量来存储子程序的返回值,比如最大流和最小成本。假设你有一个名为`MaxFlow`的子模型,你可以这样做:
```lisp
; 主模型中定义外部变量
MaxFlowValue := 0
MinCostValue := inf
; 调用子程序
If Solve(MaxFlowModel, Source=sourceNode, Sink=sinkNode, Capacity=capacities) Then
MaxFlowValue = MaxFlowResult.MaxFlow
MinCostValue = MaxFlowResult.MinCost
Else
; 处理子程序未找到解的情况
End If
; 现在MinCostValue就是最小费用
```
在这里,`MaxFlowModel`是子模型的名字,`Source`、`Sink`和`Capacity`是要传递给子程序的数据。子程序`Solve()`应该会返回一个包含`MaxFlow`和`MinCost`属性的结果对象。
阅读全文