LPSOLVE提示模型不可行咨询:原模型为何无解?
问题原因与解决方案
核心原因
LPSOLVE默认所有决策变量为非负(即x ≥ 0、y ≥ 0是隐式约束),你的原模型人工解中y = -8违反了这个隐式约束,因此LPSOLVE判定模型不可行。
具体场景分析
- 原模型:未声明y为自由变量,默认
y ≥ 0,而满足约束的解y=-8不满足非负要求,所以模型不可行。 - 符号修改后的模型:解
y=8符合默认非负约束,因此能正常求解。 - 代入x后的模型:此时约束简化为
4000 + 500y = 0,LPSOLVE在处理单一变量的强制等式约束时,会优先满足等式,暂时忽略默认非负规则,因此能得到y=-8的解,但这属于特殊场景下的例外处理。
解决方法
如果需要允许变量取负值,需显式声明变量为自由变量,在LPSOLVE的模型中可以通过如下方式实现:
min:; x = 1000; 5000 - 1x + 500y = 0; free y; // 声明y为自由变量,可正可负
添加free y;后,原模型即可正常求解出x=1000、y=-8。
内容的提问来源于stack exchange,提问作者Pete
相关产品推荐
相关产品推荐

