这个数组初始化是什么意思?聚氯乙烯

时间:2019-08-18 09:49:01

标签: arrays optimization tuples range cplex

我对CPLEX还是陌生的,正在尝试了解一个朋友的示例,以便我自己创建模型,但是我对如何创建一个决策变量感到困惑。这个符号对我来说并不陌生,而且对它们使用的是一组元组以及其定义中的范围,我也不熟悉。任何帮助解释正在发生的事情以及代码行的作用的帮助将不胜感激。

tuple bus{int busnumber; float capacity; string start_location; string stop_location; int maxleg;};

{bus} busfleet=...; 

int maxroute=...;

range route = 1..maxroute;
range route0 = 1..maxroute-1;

tuple job {string start_location; string stop_location; int runafter; int runbefore; int runstop; float demand;};

{job} jobs=...;
{job} initialjobs=...;
{job} jobs1=...;
{job} alljobs = initialjobs union jobs union jobs1;

//variable
dvar boolean scheduleofbus[busfleet, route, alljobs, alljobs];

我的困惑是关于最后一行,其中定义了“ scheduleofbus”。数组的初始化有什么作用?如果可能的话,您还可以帮助定义它的尺寸,选择元素的方式等等。我们将不胜感激。提前谢谢了。 =)

1 个答案:

答案 0 :(得分:1)

dvar boolean scheduleofbus[busfleet, route, alljobs, alljobs];

可以等效地写为

dvar boolean scheduleofbus[busfleet][route][alljobs][alljobs];

可能更明显。它定义了一个4维布尔决策变量。为该变量设置的索引是busfleetroutealljobsalljobs中元素的笛卡尔积(是的,alljobs出现两次)。

换句话说,对于公交车,路线和每对作业,您都有一个变量。

相关问题