开发平台(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):
麻烦大家了~