我的任务是使用旅行商问题指南创建GUI解决方案。它有一个下拉菜单,允许用户从10,20,30 ... 100个城市中选择,然后是一个按钮,用于从城市和未优化的路线生成地图。另一个按钮是使用简单的方法优化解决方案。我已经构建了使用城市下拉菜单选择生成初始地图的代码。
我的问题是优化。最初,创建具有2列的随机矩阵,但是为行选择了许多城市,表示地图上的x和y坐标。我们要使用的方法分为2个过程,过程1取起点,矩阵的入口1和其他2个随机向量,然后它意味着取一个随机城市,计算它与所有其他城市之间的距离在巡回向量(以3 x + y co-ords开始的向量)中,然后将自己插入到具有最短路径的城市旁边。重复该过程,直到所有城市都以半优化状态插入矩阵。程序2采用完整的游览矩阵,然后尝试查看其中的每个城市并将其移动到两个相邻城市之间行进距离最短的位置。
我所看到的问题是,虽然删除一行矩阵是一个简单的选择,插入和移动行是我以前从未遇到过的。是否有任何函数在标准的matlab库中做这样的事情?
答案 0 :(得分:1)
如果我正确地阅读了这个问题,你只是在寻找基本的矩阵操作。
假设您有一个矩阵X
,并希望在第二行之后插入一行:
X = reshape(1:8,4,[])
myRow = [0 0];
X = [X(1:2,:); myRow; X(3:end,:)]
如果你想移动一行:
1. Assign it to myRow
2. Delete it
3. Insert the new row with the code above
如果要交换行,可以采用更直接的路径,假设您要交换第2行和第4行:
X = reshape(1:8,4,[])
X([2 4],:) = X([4 2],:)
如果您只是想更新一行,那就更容易了。假设您要更新第二行:
X = reshape(1:8,4,[])
myRow = [0 0];
X(2,:) = myRow