Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Optimization 狐狸山羊卷心菜运输_Optimization_Mathematical Optimization_Discrete Mathematics_Linear Programming_River Crossing Puzzle - Fatal编程技术网

Optimization 狐狸山羊卷心菜运输

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、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