这是一个 AMPL 模型,我在这方面还很新,所以我在做一个经典的物流问题,一个网络流问题,我必须找到最便宜的方式在城市网络中运输可用的献血边缘有不同的成本。所以我必须最小化它的目标函数(也许阅读代码更容易理解)。我现在解决了这个问题,但现在我面临第二个任务,其中必须为用于运输献血的每条边支付等于 10 的固定成本(除了运输成本)。据我了解,这个问题很简单。在实践中,我只需将 10*numberOfEdgeUsed 添加到目标函数中。我想以正确的方式尝试为每条边添加一个二进制变量,如果使用边,则为 1,如果不使用,则为 0。我' 我对这种编程很陌生,我不知道该怎么做。欢迎任何帮助。我只放了 .mod 代码,我没有放 .dat 文件,因为没有必要。这是第一个任务的代码,我要修改这个:
set Cities;
set Origins within (Cities);
set Destinations within (Cities);
set Link within (Cities cross Cities);
param Costs{Link};
param DemSup{Cities};
param fixedCost{(i, j) in Link} = 10;
var y{Link}, binary;
var Ship{Link} >= 0, <= 1000;
minimize Total_Cost: sum{(i,j) in Link} fixedCost[i,j] * y[i,j] + sum {(i,j) in Link} (Costs[i,j] * Ship[i,j]);
subject to Supply {i in Origins}: - sum {(i,k) in Link} Ship[i,k] >= DemSup[i];
subject to Demand {i in Destinations}: sum {(j,i) in Link} Ship[j,i] - sum {(i,k) in Link} Ship[i,k] == DemSup[i];