Optimization 狐狸山羊卷心菜运输
我的问题是关于一个老的运输问题——用一艘一次只能运送一件物品的船运送三件物品过河。一个约束是某些项目不能放在一起,例如卷心菜和山羊、狼和山羊等。这个问题应该可以使用整数规划或其他优化方法来解决。成本函数是指所有项目都位于河流的另一边,到达河流的行程可能是单纯形(?)的输出,单纯形(?)尝试不同的可行解决方案。我想知道是否有人有这个问题的整数规划(或线性规划)公式,和/或基于Matlab、Octave和Python的代码,可以通过编程提供解决方案,包括单纯形的痕迹,尝试所有路径——我们的船 这里有一些有趣的东西Optimization 狐狸山羊卷心菜运输,optimization,mathematical-optimization,discrete-mathematics,linear-programming,river-crossing-puzzle,Optimization,Mathematical Optimization,Discrete Mathematics,Linear Programming,River Crossing Puzzle,我的问题是关于一个老的运输问题——用一艘一次只能运送一件物品的船运送三件物品过河。一个约束是某些项目不能放在一起,例如卷心菜和山羊、狼和山羊等。这个问题应该可以使用整数规划或其他优化方法来解决。成本函数是指所有项目都位于河流的另一边,到达河流的行程可能是单纯形(?)的输出,单纯形(?)尝试不同的可行解决方案。我想知道是否有人有这个问题的整数规划(或线性规划)公式,和/或基于Matlab、Octave和Python的代码,可以通过编程提供解决方案,包括单纯形的痕迹,尝试所有路径——我们的船 这里有
谢谢,你说得对,这个公式需要整数变量。解决此类问题的传统方法是制定一个二元变量模型,并将该公式传递给求解器。在这种情况下,除非您能够访问优化工具箱,否则MATLAB将无法工作 在您的表述中,您需要解决以下问题: 决策变量 在您的情况下,这看起来像: x_it(选择[yes=1 no=0]在船舶行程编号t期间运输项目i) 目标函数 我不太清楚这是从你的描述,但应该有一个成本,c_t,与每次乘船旅行相关。如果您想最小化总时间,每次旅行的固定成本为1。所以你的目标应该是: 最小化总和((i,t),c_t*x_it)(所以你是最小化所有行程的总成本) 约束条件 这是解决你问题的棘手部分。复杂的约束是您确定的排他性。记住,它是二进制的 对于每对相互冲突的项(i1、i2),都有一个如下所示的约束
我建议使用二进制变量x_I,t来模拟物品的位置,即如果物品在行程t后位于左岸,则它们为零,否则为一。在旅途中,这些变量中最多有一个会发生变化。这可以通过以下方式进行建模: 狼,1+x_白菜,1+x_山羊,1=x_狼,0 x_卷心菜,1>=x_卷心菜,0 x_山羊,1>=x_山羊,0 另一个方向的行程也需要类似的约束条件 此外,在奇数次行程后,您需要检查左岸的项目,同样,您必须检查右岸的项目。例如: 狼,1+x山羊,1>=0和 狼,2+2山羊,2