就我所知,LINGO尚不能自動求解出全部可行解。
但可以透過手動方法求出多組解。
基本的思路如下:假定決策變數是 , 和 ,均為整數。
第一次求解,直接列模型,求解出結果,比如:
此時可以增加約束條件,就是讓 不等於已經求出的解。
由於LINGO中沒有嚴格的<和>運算,<和<=相同,>和>=相同,所以可以寫成如下式子:
x1>=11;
x1<=9;
x2>=4;
x2<=2;
x3>=2;
x3<=0;
再求第二次,如果能夠再次得到最優解,而是目標函式值 與第一次求出的目標函式值相同,那麼這就是第二組最優解了。
依此類推,繼續增加約束條件,反覆進行,直到計算出的目標函式值已經不再等於第一次求出的目標函式值了,那麼就可以結束了。
當然,如果只有幾組可行解,是可以透過這樣的方法全都求出來的,但是如果有幾千組解,用這種方法求出全部最優解就成了純粹的體力活了。
就我所知,LINGO尚不能自動求解出全部可行解。
但可以透過手動方法求出多組解。
基本的思路如下:假定決策變數是 , 和 ,均為整數。
第一次求解,直接列模型,求解出結果,比如:
此時可以增加約束條件,就是讓 不等於已經求出的解。
由於LINGO中沒有嚴格的<和>運算,<和<=相同,>和>=相同,所以可以寫成如下式子:
x1>=11;
x1<=9;
x2>=4;
x2<=2;
x3>=2;
x3<=0;
再求第二次,如果能夠再次得到最優解,而是目標函式值 與第一次求出的目標函式值相同,那麼這就是第二組最優解了。
依此類推,繼續增加約束條件,反覆進行,直到計算出的目標函式值已經不再等於第一次求出的目標函式值了,那麼就可以結束了。
當然,如果只有幾組可行解,是可以透過這樣的方法全都求出來的,但是如果有幾千組解,用這種方法求出全部最優解就成了純粹的體力活了。