это модель AMPL, я довольно новичок в этом, поэтому я занимаюсь классической проблемой логистики, проблемой сетевого потока, где я должен найти самый дешевый способ транспортировки доступных донорских крови в net городов, где по краям разные расходы. Поэтому я должен минимизировать его целевую функцию (возможно, лучше понять чтение кода). Я решаю проблему прямо сейчас, но теперь передо мной стоит вторая задача, где фиксированная стоимость, равная 10, должна быть заплачена за каждое преимущество, используемое для транспортировки донорской крови (в дополнение к стоимости доставки). Насколько я понял, вопрос прост. На практике мне просто нужно добавить 10 * numberOfEdgeUsed к целевой функции. Я хочу сделать это правильно, пытаясь добавить двоичную переменную для каждого ребра, 1, если ребро используется, 0, если нет. Я довольно новичок в такого рода программировании, и я не знаю, как это сделать. Любая помощь приветствуется. Я положил только код .mod, я не помещаю файл .dat, потому что это не нужно. Это код первой задачи, я должен изменить это:
установить города;
установить начало в (города);
установить назначение в (города);
установить связь внутри (города пересекают города);
param Costs {ссылка};
param DemSup {Cities};
param fixedCost {(i) , j) в Link} = 10;
var y {Link}, двоичный файл;
var Ship {Link}> = 0, <= 1000; </p>
свести к минимуму Total_Cost : сумма {(i, j) в соединении} fixedCost [i, j] * y [i, j] + сумма {(i, j) в соединении} (затраты [i, j] * доставка [i, j]) ;
в зависимости от поставки {i in Origins}: - сумма {(i, k) в ссылке} Ship [i, k]> = DemSup [i];
в зависимости от спроса { i в пунктах назначения}: сумма {(j, i) в ссылке} Ship [j, i] - сумма {(i, k) в ссылке} Ship [i, k] == DemSup [i];