採用分枝限界法求解最優裝載問題。給出以下裝載問題的求解過程和結果:n=5,貨櫃重量為w=(5,2,6,4,3),限重為 w=10。
在裝載重量相同時最優裝載方案是貨櫃個數最少的方案。
#include #include using namespace std;
#define maxn 21 //最多的貨櫃數
//問題表示
int n=5;
int w=10;
int w=; //貨櫃重量,不計下標0的元素
//求解結果表示
int bestw=0; //存放最大重量,全域性變數
int bestx[maxn]; //存放最優解,全域性變數
int count=1; //搜尋空間中結點數累計,全域性變數
typedef struct nodetype;
struct cmp //佇列中關係比較函式
}; void bound(nodetype &e) //計算分枝結點e的上界
e.ub=e.w+r;
}void loading() //求裝載問題的最優解
} else //e不是葉子結點
e2.no=count++; //設定結點編號
e2.i=e.i+1; //建立右孩子結點
e2.w=e.w;
for (int j=0; j<=e.i; j++) //複製解向量e.x->e2.x
e2.x[j]=e.x[j];
e2.x[e2.i]=0; //不選擇貨櫃i
bound(e2); //求右孩子結點的上界
if (e2.ub>bestw) //若右孩子結點可行,則進隊,否則被剪枝
qu.push(e2);
} }
} void disparr(int x,int len) //輸出乙個解向量
void disploading() //輸出最優解
int main()
會不定期進行更新,歡迎關注
分枝限界法求TSP問題 C C
旅行商問題 tsp 給定一系列城市和每對城市之間的距離,求解訪問每一座城市一次並回到起始城市的最短迴路。它是組合優化中的乙個np困難問題,在運籌學和理論電腦科學中非常重要。這篇文章裡介紹一下基於分支限界法的tsp演算法。對於tsp,我們需要利用上界和下界來對bfs進行剪枝,通過不斷更新上界和下界,盡...
回溯法 最優裝載問題
以簡單的語言說,就是給定兩艘船,要求一批貨物分別裝入。這道問題採用 先盡可能以最大載重裝一艘船,再以剩下的貨物裝另一艘 這樣,我們就將問題簡化為了0 1揹包問題。採用回溯法構建解空間,之後遍歷即可。思路很簡單,的注釋我也寫的很詳細了。def traceback depth global n,good...
分支限界法實現最優裝載c 最優化模型入門
1.引例 其中2.迭代下降演算法 迭代下降準則 框架演算法 1 給出目標函式的初始迭代點 2 按一定規則產生 處的乙個 下降方向 3 再沿方向 搜尋得到 下乙個迭代點,使得 4 若滿足停機條件,則終止迭代並輸出 否則轉步驟2 注意 a.在適當的假設下一般可以說明演算法能在有限步之內找到最優解或得到乙...