我不断遇到 AMPL 错误,其中每当我尝试对 mod 文件建模时,都会收到错误:giap.mod,第 23 行(偏移 1996):d 未定义 上下文:{(d,b)>>>:<<< d in Donors_Deliver, b in All_FoodBank} # Donor ke Gudang Makanan
设置时间; # 规划范围内的时间段 设置Donors_Deliver; # 向食品银行运送食品的捐助者 设置 Collection_Donors; # 需要食品银行收集食品的捐助者 设置 Financial_Donors; # 向食品银行提供捐款的捐助者 设置 All_Donors := Donors_Deliver union Collection_Donors union Financial_Donors; # 所有捐赠者,D = DD union CD union FD(子集成对不相交) 设置 Existing_FoodBank; # 规划初期的现有食品银行仓库 设置 Potential_Sites; # 寻找新食品银行仓库的潜在地点 设置 All_FoodBank := Existing_FoodBank 联合 Potential_Sites; # 所有食物银行位置,B = OB 并集 PB 和 OB 相交 PB = 空集 将 Received_FoodBank 设置为 (Donors_Deliver cross All_FoodBank); # 可以从 DD 中的捐赠者 d 接收食品的食品银行,Bd ⊆ B 设置 Served_Charities; # 在规划范围之初由一些食品银行提供服务的受益组织 设置 Hold_Charities; # 暂停的非营利组织,即食品银行协会等候名单上的组织 设置 All_Organizations := Served_Charities union Hold_Charities; # 所有组织,C = SC 并集 HC 与 SC 相交 HC = 空集 设置食品组; # 食品系列 设置Individual_Food {FoodGroup中的k}; # K 中属于 k 族的单个食品 设置 All_Product := union {FoodGroup 中的 k} individual_Food[k]; # 所有食品,P = Pk 的并集 设置级别; # 存储区域/运输资源的离散容量水平 设置我; # 设置asal(原点) 设置 J; # 设置tujuan(目的地)
设置 All_destination := {(d, b) : Donors_Deliver 中的 d,All_FoodBank 中的 b} # Donor ke Gudang Makanan union {(d, b) : d in Collection_Donors union Financial_Donors, b in All_FoodBank} # 捐赠者 Pengumpulan/Sumbangan ke Gudang Makanan union {(b, c) : b 在 All_FoodBank 中,c 在 Served_Charities 中};
在您的集合表达式
{(d, b) : d in Donors_Deliver, b in All_FoodBank}
中,在指定过滤条件之前,(d,b)
需要是某个集合中的a,例如(d,b) in some_set
。而且,你的表情可以直接简化为Donors_Deliver union All_FoodBank
。
使用“setof”运算符的另一个选项在生成更复杂的集合时可能很有用。
setof {d in Donors_Deliver, b in All_FoodBank: d != b} (d,b);