題:
研究中使用的流行軟件錯誤地報告解決方案是最佳選擇:該怎麼辦?
Kuhndog
2017-05-17 02:39:53 UTC
view on stackexchange narkive permalink

我有一個示例說明,儘管該軟件聲稱是最佳解決方案,但由通用軟件包提供的解決方案並不是最佳解決方案。我實驗室最近發表的幾篇論文都在評估中使用了該軟件,並且我知道該軟件已在研究社區中廣泛用於解決優化問題。

所以我不確定如何報告此錯誤。它是專有的開源軟件。第一步,我可以與軟件開發人員聯繫以尋求有關錯誤的信息,儘管他們似乎沒有報告錯誤的簡單方法。

但是更大的問題是,基於錯誤的軟件發表的結果可能會受到損害。如果最終的修復導致軟件花費更長的時間執行,而現在無法在大型實例上運行,該怎麼辦?

我目前正在從事一個本可以使用該軟件的項目;我現在不信任它,而轉而使用功能更弱的開源替代方案。所以我想我的問題是:我應該如何處理這種情況?

用開源軟件解決問題,證明結果比專有軟件給出的結果要好。可能出什麼問題了?
優化的某些分支專注於產生“足夠好”的解決方案,而不是全局最優的解決方案。您確定您所遇到的問題絕對需要全局最佳解決方案嗎?
“我有一個例子表明,儘管該軟件聲稱是最佳解決方案,但由通用軟件包提供的解決方案並不是最佳解決方案。”軟件包文檔中是否規定了必須滿足的特定條件/必須做出的假設才能使報告的結果正確無誤?您的示例是否滿足所有這些條件?(必要條件與充分條件等)。
在不命名商業軟件的情況下,您至少可以說出您現在切換到的開源替代方案嗎?
這種情況經常發生。科學軟件在第一版中很少出現。認為這是一個機會,可以產生一種更好的選擇,或者至少展示您的結果,從而使它受到鼓勵,以鼓勵其他人將來開發或使用其他東西。謹慎使用所有科學軟件,並在發現已知結果的情況下嘗試使用。研究人員正在不斷改變方法,並發現早期方法的缺陷。很少有人會對這樣的問題感到驚訝。
@JAB和燈塔管理員提出了您需要考慮的優點。我要補充一點:他們對最優的定義與您的定義相同嗎?是否有可調整的選項來修改優化過程?
“他們似乎沒有簡單的方法來報告錯誤。”他們有非直截了當的方法嗎?如果該軟件非常受歡迎,如果他們沒有聯繫電子郵件地址,您會問“我將如何報告潛在的錯誤?”,我會感到震驚。
-1
@JAB是的,我已經徹底檢查了文檔並正確使用了該軟件。該軟件確實提供了一個容錯參數,但是在這種情況下並不能解釋其解決方案。
有一陣子,我以為OP是指MS Excel的統計問題(https://www.statisticalengineering.com/Weibull/excel.html,http://www.pages.drexel.edu/~bdm25/gnumeric.pdf)。
優化是一個難題。如果發現全局最小值很重要,則應始終至少測試不同的優化算法。好的軟件可以幫助您實現這一目標。如果數值優化器未找到針對特定問題的全局最優值,則通常不是實現錯誤。
您正在使用哪種優化算法?有時,如果初始猜測不好,則基於牛頓的方法不會收斂到最佳狀態。如果您已經知道最佳值,則提供接近該值的猜測。另外,您可能已經超出了迭代限制。總體而言,首先重要的是確認軟件是否真正發生故障。您可以獲取運行的調試報告。
不清楚這是一個錯誤。如果問題是一個稍微困難的優化問題,那麼沒有現有軟件可以完全可靠地解決這個問題。@Roland +1
只是重複一遍,別人說:優化很難。您可以在同一數據中運行10個優化算法,並獲得10個不同的結果,而且(一個)都不是“錯誤的”。他們只是給出了不同的解決方案,而且通常沒有可靠的方法來評估哪個更好。非常非常確定您沒有解決這類問題。
AFAIK,有兩種類型的優化問題。可以解析解決的問題和沒有解析解決方案的問題。並且沒有軟件聲稱它可以為後者提供最佳解決方案。而且前一種類型在軟件實現中也可能比較棘手。因此,大多數軟件供應商都謹慎地聲稱他們可以提供確切的最佳解決方案
@Kuhndog出於好奇:到底發生了什麼?該錯誤是否已修復?
六 答案:
HEITZ
2017-05-17 03:06:30 UTC
view on stackexchange narkive permalink

您應該創建一個可再現的測試用例,以最終證明該缺陷。如果您有信心並且軟件已被廣泛使用,則可以在技術期刊上發表文章。他們的關鍵是讓公司參與進來。向他們展示您的測試用例,並提及您有興趣發布結果。提議與他們合作出版。這樣,他們將被迫證明您錯了或承認您是正確的。在後一種情況下,他們通過承認問題來節省面子。如果他們忽略了您,請向前按。

這是一個很好的答案。在編寫給公司的信/電子郵件時要格外小心,請記住您將來可能希望公開信。此外,公司可能會迅速解決該問題,這可能會使您計劃中的出版物不那麼令人印象深刻或不太可能被接受出版。
我的一位同事成功地做到了這一點。
*“如果您有信心並且該軟件已被廣泛使用,則可以保證在技術期刊上發表。”例如,[我在Wolfram Alpha中發現了一個非常不可原諒的問題](https://math.stackexchange.com/q/224935/4890)。從這個意義上說,也許Wolfram Alpha不被認為是“軟件”,但是如果在Mathematica中也出現了同樣的問題,那麼是否應該發表論文呢?我對此表示懷疑。
@Mehrdad錯誤存在的事實並不構成保證。錯誤存在的原因+修改後的方法將無錯誤,這很可能需要論文。適用於您的案例以及OP。
但這本身並不是一個錯誤。這是最優性的問題。一個錯誤並不需要辯論。
@HEITZ:調用解決方案“ x”最優意味著存在一個“ f(x)”,因此不存在“ f(y)> f(x)”的“ y”。如果軟件報告`x'是最優的,但是存在一個`y'使得`f(y)> f(x)`,則該聲明是錯誤的,即一個錯誤。
@Mehrdad錯誤存在的事實是不可發布的。該錯誤可能會影響先前發表論文的結論,這一事實是*。如果您可以證明該錯誤與以前發表的論文的結果有關,那麼值得發布。理想情況下,您至少應有一個先前已發表論文的示例,該示例由於錯誤而更改了結論,但是根據期刊的不同,即使是“我們無法再確定這些結論的強度”的著作。-發布錯誤的不是很多,而是發布“這些其他論文可能是錯誤的”。
-1
歡迎指出有答案具體問題的評論,但沒有實質性細節的說“這是錯誤的”或“這是一個不好的答案”的評論將不被刪除。歡迎在[meta]上提出有關評論刪除政策的問題或疑慮。
alephzero
2017-05-17 08:07:25 UTC
view on stackexchange narkive permalink

該問題的技術答案似乎很明顯:如果對“最佳”對您的問題的含義有明確的定義,請運行兩個程序並查看哪個程序獲勝,然後發布結果。 / p>

政治的任何建議僅是推測,直到您完成了發現案件事實的技術工作為止。

這些事情發生。我們曾經在其領域的行業標準軟件包之一中發現“小學生錯誤”。在介紹結果的會議上,我們讓供應商的開發團隊的三名高級成員(共約300人)坐在他們的頭上,非常清楚,如果我們願意,我們可以銷毀他們75%的人。國際用戶群。 (另外25%的人中的一些人不了解這些大驚小怪的事情,具有諷刺意味的是,他們最大的個人客戶很可能正在使用計算機系統,而該計算機系統無論如何都不會發生錯誤-這也許可以解釋為什麼沒有其他人發現該錯誤。前10年左右)。

但是 us 可以解決問題而不是破壞軟件公司,因此它有很多好處,因此我們選擇了“盡快解決”選項-和“盡快”解決。 ”實際上花了大約2週的時間才能獲得Beta測試版。

哪家期刊有興趣發表“我在兩個系統上運行了相同的優化。他們給出了不同的答案”?
您似乎嚴重高估了錯誤對軟件產品受歡迎程度的影響。如果單個漏洞足以破壞產品的75%的用戶群,Mathworks早就倒閉了,不必在意Microsoft。
這與@DmitryGrigoryev非常相似:[Intel Pentium四捨五入錯誤](https://en.wikipedia.org/wiki/Pentium_FDIV_bug)
@DmitryGrigoryev當然取決於領域嗎?例如,對於特定的客戶,該錯誤代表“您真是討厭,那真是很煩人,但我想這就是它的發展方式”-或“您從根本上失敗了,以至於對我們的信譽/安全性等構成了風險。”如果一個錯誤嚴重到可以歸為後者,那麼75%可能並不是一個瘋狂的估計……好吧,尤其是在該軟件只有4個用戶的情況下。:P
@StephenS再次,確實取決於領域和由誰來判斷。可能提供極為重要功能的非常特定軟件的專家用戶與例如甚至不知道浮點數的普通用戶,也不必介意Intel是如何捏造它的,或者它是如何一次將預算減少2p。此外,像英特爾這樣的大型公司通常不會突然從寬容中跌落而被掃地出門,但是專業軟件公司可能很容易。
這是最好的答案。被優化函數的數學細節是什麼?優化算法的數學細節是什麼?此類技術細節應在一個更具技術性的stackexchange網站上的另一個問題中充實。如果已經完成,則應將其鏈接或至少在問題中註明。但就目前而言,就我們所知,OP正在尋找一種非凸損失的本地優化器,並將其解釋為錯誤或其他潛在的愚蠢行為。
@underscore沒有不平凡的軟件,不會包含任何錯誤。特別是如果它是大多數係統甚至都不會發生的晦澀錯誤,我想看看對於那種影響,這將是什麼樣的錯誤和字段(如果該字段特別討厭錯誤,那將是甚至*可能*更少*可能會切換到另一種產品。最好是在您知道其錯誤不會對您的日常工作產生重大影響的情況下使用某些東西,而不是切換到完全未知的東西。
即使在醫療領域,您也可能會陷入地獄,您可能會遇到一個軟件錯誤,該錯誤可能導致至少六人喪生,進行盡職調查,忽略錯誤報告,不執行任何類型的可靠性建模或風險管理,並且*仍然*繼續營業。儘管我們想認為軟件質量對於軟件公司至關重要,但實際上,一個公司的成功或失敗涉及許多重要的事實。
Shake Baby
2017-05-17 12:03:26 UTC
view on stackexchange narkive permalink

我有一個示例說明,儘管軟件聲稱是流行的軟件包產生的解決方案不是最佳解決方案。

這似乎是一個

閱讀軟件文檔 ​​strong>(如果有)。它應該解釋在什麼情況下聲明“找到解決方案”。通常情況下,這表明與最優性必要條件相關的幾個參數足夠小,這表明可能找到了解決方案。

如果在文檔中找不到這種行為的原因,請給開發人員寫一個最小的工作示例,在該示例中發生意外行為並要求澄清。

Trilarion
2017-05-17 16:36:26 UTC
view on stackexchange narkive permalink

我有一個例子說明,儘管軟件聲稱是由常用軟件包產生的解決方案不是最佳解決方案。

因此該軟件可能聲稱太多了。 b>

因此,我不確定如何報告此錯誤。它是專有的開源軟件。第一步,我可以與軟件開發人員聯繫以尋求有關該錯誤的信息,儘管他們似乎沒有直接報告錯誤的方法。如果您想幫助製造商(從而間接地也幫助您自己和他人),則沒有建議的特殊方法,將是推薦的過程。只需確保該錯誤確實存在並進行徹底解釋,即可對其進行複制。

但是更大的問題是,基於錯誤軟件的結果發表的論文可能會受到損害。 p>

可能所有軟件都有問題。在不知道細節的情況下,很難判斷此案的嚴重性。但是,最好不要過多地依賴一個軟件包,同時還要測試並發產品。您可以檢查這些文件,看看它們是否受到錯誤的影響,如果受到錯誤的影響,多少。

如果最終的修復導致軟件花費更長的時間執行,怎麼辦?不能在大型實例上運行?

固定的軟件花費較長的時間才能正確解決問題,始終比有故障的快速軟件更受歡迎。

我已經告訴我的顧問有關此問題的信息,但他似乎並不十分感興趣,這可能是由於潛在的後果。

也許他不太在乎使用無缺陷軟件,或者尚未確信該缺陷的存在,或者太懶惰以至於無法打擾公司,或者不想發生任何衝突。

我目前正在一個可以使用該軟件的項目中;我現在不信任它,而轉而使用功能不那麼強大的開源替代方案。

很自然會失去一些信任,但也許並非全部。如果在項目的特殊情況下仍然可以信任舊軟件,則可以仔細評估舊軟件(請記住,偶爾會出現錯誤),然後確定是要使用它還是要同時使用兩個軟件項目,或者是否要使用舊軟件。只想使用替代軟件(它也可能是錯誤的,因此也不要完全相信它)。

所以我想我的問題是:我應該如何處理這種情況?

  • 您應該與公司聯繫,並給他們寫一條簡短的消息,告訴他們有關錯誤的信息。他們可能會迅速修復它,恢復信任。
  • 您也可能會發布該錯誤(如果該錯誤足夠重要並且期刊對此感興趣,則可以將該錯誤發佈在您的博客,郵件列表上,甚至作為技術報告。 ),以便其他人知道它,尤其是在公司沒有快速修復它的情況下。
  • 您應該使用所擁有的兩個軟件包並進行比較。假設兩個都可能有bug,但您對它們還一無所知。
Conor Mancone
2017-05-17 20:57:06 UTC
view on stackexchange narkive permalink

我認為您需要回答的第一個問題是實際上有多少個問題。這只是邊緣情況嗎?是“最優”解決方案僅略勝一籌嗎?如果沒有有關實際用例和解決方案的更多詳細信息,很難說太多。鑑於我為博士工作的一些優化/擬合問題,您可以永遠尋找“更多”的最佳解決方案,但是根據數據的嘈雜程度,這實際上並不意味著新的解決方案“更好” 。充分了解問題集和基礎的優化算法之後,您應該能夠弄清楚封閉源代碼軟件到底出了什麼問題以及是否存在實際問題。

對於在本次討論的其餘部分中,我將假定您正在嘗試找到某種經驗數據集的最佳擬合。如果是這樣,則說明您正在有效地搜索某種chi ^ 2參數空間,您會發現更理想的擬合可能意味著截然不同的事情,例如

  1. 您的chi ^ 2空間嘈雜,而“更好”的解決方案實際上並不意味著什麼 l​​i>
  2. 專有系統陷入了局部最小值,並且沒有找到您找到的全局最小值
  3. 你們都在探索相同的問題全局最小值,但是您的解決方案稍微接近了
  4. ol>

    有效地,尋找最佳解決方案的過程可能非常棘手,並且可以使用許多不同的算法,每種算法都有其自身的優缺點。如果您的擬合參數和chi ^ 2之間具有平滑變化的關係,則幾乎所有優化方法都可以找到最小值,但是壽命並不總是那麼簡單。所有這些說明,即使您在一個特定問題上找到了更好的最佳選擇,也並不意味著該軟件就是垃圾,應該扔掉它。特別是,您如何找到更好的最佳選擇?通常,您可以將相同的方法應用於這類優化問題嗎?它總是會更適合嗎?如果對後兩個問題中的任何一個的回答是否定的,那麼我說的是,這裡根本沒有什麼大不了的。唯一真正的問題很可能是有關軟件公司的一個過分熱心的商人,他承諾沒有軟件系統可以實際交付的東西。

    總而言之,我想說的是,在真正進行這項工作之前,您需要真正詳細地了解為什麼他們的算法沒有找到最佳解決方案,甚至在實踐中也是如此。

Dima Pasechnik
2017-05-17 19:10:05 UTC
view on stackexchange narkive permalink

我已經看到了眾所周知的商業優化程序包,例如CPLEX在壓力下會產生錯誤的結果,可以說-解決了上述軟件可以解決的紙上問題,但實際上與所測試的問題完全不同

是錯誤的,我的意思是說它是錯誤的,即,報告線性優化問題是不可行的,而產生不可行證書的請求卻失敗了(並且如果以更高的精度解決

肯定會早晚發現並暴露出錯誤(如果存在錯誤),這就是科學的工作原理。順便說一句,在過去的幾年中,我發表了論文,這些論文除其他外,糾正了專著和教科書中的錯誤(原文如此!);相應的錯誤論文發表於20多年前。哦,很好。



該問答將自動從英語翻譯而來。原始內容可在stackexchange上找到,我們感謝它分發的cc by-sa 3.0許可。
Loading...