[問題] 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