[问题] 01变量求绝对值

楼主: yuananan (沅沅)   2015-02-02 12:21:02
开发平台(Platform):VS (Ex: VC++, GCC, Linux, ...)
额外使用到的函数库(Library Used): (Ex: OpenGL, ...)
问题(Question):我试想利用VS搭配gurobi进行最佳化求解,但在compile的时
后发现求取绝对值的部份一直出错,后来查了一下,好像abs可使用的型态只有int和
long,这样还有什么解决办法吗?若使用转型态会不会占用太多内存?
喂入的资料(Input):
void addX(GRBModel*& model){
for(int i = 1; i <= num_of_jobs; i++){
for(int j = 1; j < num_of_machines; j++){
for(int t = 1; t <= Ut; t++){
stringstream ss;
ss << "x" << i << j << t;
var[ss.str()] = model->addVar(0, 1, 0, GRB_BINARY, ss.str());
}
}
}
}
//部分省略
ss << "x" << i << j << t;
ss2<< "x" << i << j << t+1;
sum = sum + abs(var[ss2.str()] - var[ss.str()]);
预期的正确结果(Expected Output):可以取[xij(t+1)]-[xijt]的绝对值
错误结果(Wrong Output):
error C2665: 'abs' : 没有任何 6 多载可以转换所有引数型别
1> C:\Program Files\Microsoft Visual Studio
11.0\VC\include\math.h(101): 可能是 'int abs(int)' [使用与引数相关的查阅找到]
1> C:\Program Files\Microsoft Visual Studio
11.0\VC\include\math.h(494): 或 'double abs(double)'
1> C:\Program Files\Microsoft Visual Studio
11.0\VC\include\math.h(498): 或 'float abs(float)'
1> C:\Program Files\Microsoft Visual Studio
11.0\VC\include\math.h(546): 或 'long double abs(long double)'
1> C:\Program Files\Microsoft Visual Studio
11.0\VC\include\stdlib.h(484): 或 'long abs(long)'
1> C:\Program Files\Microsoft Visual Studio
11.0\VC\include\stdlib.h(488): 或 '__int64 abs(__int64)'
程式码(Code):(请善用置底文网页, 记得排版)
补充说明(Supplement):
麻烦大家了~
作者: TobyH4cker (Toby (我要当好人))   2015-02-02 15:48:00
你的var是什么啊?
作者: johnjohnlin (嗯?)   2015-02-02 18:58:00
我觉得应该是 compile error
作者: Killercat (杀人猫™)   2015-02-02 21:47:00
你什么都贴了 最重要的var是啥...只看得出应该是个map顶多只能猜出是std::map<std::string, ??????>还有错误讯息都说了他还能吃double跟float 你那个varmap出来的东西我猜根本是string吧 你要lexical_cast根本就不是数字我猜

Links booklink

Contact Us: admin [ a t ] ucptt.com