我想在GAMS中运行几个数学模型,并计算不可行解的数量。IF语句的条件应该怎么写?
发布于 2016-01-07 18:56:26
您可以在解算模型之后检查模型的modelstat属性。下面是一个小示例:
equation obj;
variable z;
positive variable x;
obj.. z =e= 1;
equation feasible;
feasible.. x =g= 1;
equation infeasible1;
infeasible1.. x =l= -1;
equation infeasible2;
infeasible2.. x =l= -2;
model m1 /obj, feasible /;
model m2 /obj, infeasible1/;
model m3 /obj, infeasible2/;
scalar infCount Number of infeasible models /0/;
solve m1 min z use lp;
if(m1.modelstat = %ModelStat.Infeasible%, infCount = infCount+1;)
solve m2 min z use lp;
if(m2.modelstat = %ModelStat.Infeasible%, infCount = infCount+1;)
solve m3 min z use lp;
if(m3.modelstat = %ModelStat.Infeasible%, infCount = infCount+1;)
display infCount;如果你有一个整数问题,你还应该检查%ModelStat.Integer不可行%,而不仅仅是%ModelStat.Infeasible%,所以求解后的检查可能会变成
solve m3 min z use mip;
if(m3.modelstat = %ModelStat.Infeasible% or m3.modelstat = %ModelStat.Integer Infeasible%,
infCount = infCount+1;
)我希望,这会有帮助!Lutz
https://stackoverflow.com/questions/34448739
复制相似问题