在MathProg中是否有一种方法可以使字符串与整数相关联,以用于输出标签以获得答案?
例如,下面的代码不起作用,但希望能传达我想要做的事情:
# attempt via set results in error, "mylabels cannot be subscripted":
set mylabels := "label1" "label2" "label3";
printf "first label: %s\n", mylabels[1];
# attempt via param results in error, "mylabels requires numeric data":
param mylabels :=
1 "label1"
2 "label2"
3 "label3";
printf "first label: %s\n", mylabels[1];我还找到了一个MathProg中缺乏有序集的探讨,建议的黑客攻击听起来可能对我有帮助,但没有奏效:
# attempt via ordered-set hack results in error, "no value for mylabels_ref[1]":
set mylabels := "label1" "label2" "label3";
param mylabels_ref{i in 1..card(mylabels)}, symbolic, in mylabels;
printf "first label: %s\n", mylabels_ref[1];这显然不是什么大问题,因为我可以在MathProg之外进行查找(即手动或w/某些其他脚本语言);但我主要好奇的是语法是否支持我想要做的事情。
发布于 2017-10-07 16:18:04
迟答,但这可能有助于那些想要类似查找的人。
真正起作用的是你的两种方法的混合。您将需要一个包含您的标签的集合(因为params只能保存数字值),您还需要一个查找参数。
set mylabels;
param mylabels2{i in mylabels};
for {i in mylabels}{
for{{0}: mylabels2[i] = 1}
printf "\n first label: %s\n\n", i;
}
data;
set mylabels := label1 label2 label3;
param mylabels2 :=
label1 1
label2 2
label3 3;
end;在第一个for-循环中,我们简单地遍历所有标签。第二个for-循环是一个条件,它正在执行查找.只有当标签索引的参数等于给定值时,才执行print语句。
https://stackoverflow.com/questions/43765419
复制相似问题