Resource entry introduction2 is already defined.

本文记录了一次因资源文件名重复导致的应用程序错误,并分享了解决方案。作者发现由于两个不同分辨率的图片文件使用了相同的名称(introduction2),导致资源ID冲突。通过删除其中一个文件解决了问题。

今天替换资源图片后,运行时报错,clean也提示同样的错误,信息如下:

[2012-08-23 15:46:11 - com.demo] res\drawable-mdpi\introduction2.png:0: error: Resource entry introduction2 is already defined.

[2012-08-23 15:46:11 - com/demo] res\drawable-mdpi\introduction2.9.png:0: Originally defined here.


第一反应去网上找答应,度娘谷哥都没找到令自己满意的,认真看信息才发现,是资源文件冲突了!汗一个~~~

如上信息,我的理解是已经有一个mdpi\introduction2.png的文件指向资源IDmdpi\introduction2drawable-mdpi\introduction2.9.png无法定义!


将多余的文件删除后,刷新,运行,一切OK!

### 解决变量重复定义导致的运行错误 在数学优化模型文件中,如果变量重复定义,可能会导致运行错误。为了解决这一问题,需要对变量进行清晰的声明和管理,确保每个变量的作用域和含义明确[^3]。 #### 1. 确保变量作用域分离 将不同类型的变量(如集合、参数、决策变量)分开声明,避免混淆。例如,在AMPL中,可以按照以下方式组织变量声明: ```ampl # 集合 set V; # 节点集合 set K; # 车辆集合 set C within V; # 客户节点集合 # 参数 param c{i in V, j in V}; # 距离矩阵 param q{i in C}; # 每个客户的货物需求量 param Q; # 每辆车的最大容量 param e{i in C}; # 每个客户的最早服务时间 param l{i in C}; # 每个客户的最晚服务时间 param t{i in C, j in C}; # 从客户i到客户j的服务时间 param M; # 大数,用于约束松弛 # 决策变量 var x{i in V, j in V, k in K} binary; # 是否选择路径(i,j)由车辆k行驶 var s{i in C, k in K}; # 车辆k到达客户i的时间 ``` 通过上述方式,可以有效避免变量重复定义的问题,同时提高代码的可读性和维护性。 #### 2. 使用前缀或后缀区分变量 对于具有相似名称的变量,可以通过添加前缀或后缀来区分其用途。例如,`c`可以用作距离矩阵的名称,而`cost_c`可以用作与成本相关的参数名称。这样可以减少变量冲突的可能性。 #### 3. 检查模型文件中的语法错误 在模型文件中,确保每个变量只被声明一次,并且没有遗漏分号或括号等语法错误。例如,以下是一个常见的错误示例及其修正方法: **错误示例:** ```ampl set V; set K; param c{i in V, j in V}; param q{i in C}; # 错误:C未定义 ``` **修正方法:** ```ampl set V; set K; set C within V; # 明确声明客户节点集合 param c{i in V, j in V}; param q{i in C}; # 正确使用已定义的集合C ``` #### 4. 使用调试工具检测重复定义 在运行模型之前,可以使用建模语言的调试工具检测变量重复定义的问题。例如,在AMPL中,可以通过以下命令检查模型文件中的错误: ```ampl model 2.mod; check; ``` #### 示例修正后的模型文件 以下是一个修正后的完整模型文件示例: ```ampl set V; # 节点集合 set K; # 车辆集合 set C within V; # 客户节点集合 param c{i in V, j in V}; # 距离矩阵 param q{i in C}; # 每个客户的货物需求量 param Q; # 每辆车的最大容量 param e{i in C}; # 每个客户的最早服务时间 param l{i in C}; # 每个客户的最晚服务时间 param t{i in C, j in C}; # 从客户i到客户j的服务时间 param M; # 大数,用于约束松弛 var x{i in V, j in V, k in K} binary; # 是否选择路径(i,j)由车辆k行驶 var s{i in C, k in K}; # 车辆k到达客户i的时间 minimize total_cost: sum{k in K, i in V, j in V} c[i,j] * x[i,j,k]; subject to one_vehicle_per_customer {i in C}: sum{k in K, j in V} x[i,j,k] = 1; subject to vehicle_start {k in K}: sum{j in V} x[0,j,k] = 1; subject to vehicle_end {k in K}: sum{i in V} x[i,card(V)-1,k] = 1; subject to flow_conservation {h in C, k in K}: sum{i in V} x[i,h,k] - sum{j in V} x[h,j,k] = 0; subject to time_window {i in C, j in C, k in K}: s[i,k] + t[i,j] - M * (1 - x[i,j,k]) <= s[j,k]; subject to service_time {i in C, k in K}: e[i] <= s[i,k] <= l[i]; subject to capacity_constraint {k in K}: sum{i in C, j in V} q[i] * x[i,j,k] <= Q; ``` ###
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值