Sunzhenyu59 / Project

1 stars 1 forks source link

您的input内容能否更详细的说明一下呢 #1

Open LeZheng-x opened 1 year ago

LeZheng-x commented 1 year ago

max 2 3 0 5 2 160 30 20 15 5 1 4 1 0 1 1 1 2 2 2

Sunzhenyu59 commented 1 year ago

您好,非常不好意思给您带来困扰。事实上,这段单纯形算法是数年前(中学时期)编写的,长时间没有维护。经过测试,在绝大多数情况下算法无法输出正确的最优解,因此不具有特别大的参考意义。这段测试样例的含义如下: 第一行描述了线性规划的类型(max min) 第二行描述了优化变量的个数(2个)以及约束方程的个数(3个) 第三行描述了目标函数的形式,其中第一个数字恒为0,5与2代表5x_0+2x_1 第四至六行描述了约束不等式,第七行描述了三个约束不等式的具体形式(0代表等于,1代表≤,2代表≥),因此四至七行的含义为 30x_0+20x_1 <= 160 5x_0+x_1 <= 15 x_0 <= 4 最后一行代表了变量的约束形式(0代表无约束,1代表x_i <=0,2代表x_i >=0),因此这意味着x_0、x_1均非负。这里末尾的2是多余的。

我会抽空重构这些代码,并在博客更新。涉及凸优化及数值计算的问题往往需要大量精细的测试,但当时没有做。

LeZheng-x commented 1 year ago

感谢您的回复,事实上国内大部分博客中提到的单纯性算法确实存在无法得出正确的最优解的情况,往往会陷入死循环的尴尬场景。

极乐鸟 @.***

Original Email

Sender:"Sunzhenyu59"< @.*** >;

Sent Time:2023/2/21 17:47

To:"Sunzhenyu59/Project"< @.*** >;

Cc recipient:"ZLL-yyds"< @. >;"Author"< @. >;

Subject:Re: [Sunzhenyu59/Project] 您的input内容能否更详细的说明一下呢 (Issue #1)

您好,非常不好意思给您带来困扰。事实上,这段单纯形算法是数年前(中学时期)编写的,长时间没有维护。经过测试,在绝大多数情况下算法无法输出正确的最优解,因此不具有特别大的参考意义。这段测试样例的含义如下: 第一行描述了线性规划的类型(max min) 第二行描述了优化变量的个数(2个)以及约束方程的个数(3个) 第三行描述了目标函数的形式,其中第一个数字恒为0,5与2代表5x_0+2x_1 第四至六行描述了约束不等式,第七行描述了三个约束不等式的具体形式(0代表等于,1代表≤,2代表≥),因此四至七行的含义为 30x_0+20x_1 <= 160 5x_0+x_1 <= 15 x_0 <= 4 最后一行代表了变量的约束形式(0代表无约束,1代表x_i <=0,2代表x_i >=0),因此这意味着x_0、x_1均非负。这里末尾的2是多余的。

我会抽空重构这些代码,并在博客更新。涉及凸优化及数值计算的问题往往需要大量精细的测试,但当时没有做。

— Reply to this email directly, view it on GitHub, or unsubscribe. You are receiving this because you authored the thread.Message ID: @.***>

Sunzhenyu59 commented 1 year ago

一般给出的代码针对的都是比较理想的问题,鲁棒性无法与经过验证的算法库相提并论。涉及到pathological case的求解,需要大量艰深的理论,这也是很多商业软件的竞争力所在,而这也是一件巨大投入、超低产出的事情。从学习思想的角度,将pathological case与corner case引入教材,无疑会增加负担。事实上,当遍历所有基变量组合算法仍无法停止时,排除问题本身无解,不妨尝试应用勃兰特法则。具体可以参考一些数值或者运筹方向的书籍、文献。