Tag Archives: 最优化

用matlab写单纯形表

今天在做最优化的题目的时候,遇到了些麻烦,单纯形表怎么写都会留下点问题,却找不出哪里出现了毛病,于是想用matlab将每一个单纯形表都画出来,但是程序写了会就写不下去了,主要是其中的逻辑判断,数字选择,让我有种无从下手的感觉,我把一些代码和注意点先贴到这里,等以后再试试,看看自己进步了没有。 Matlab语言 %purpose 验算手工单纯形 %写不下去了,还是等对于编程这些玩意更熟悉一些再弄,完全现在是不能转化成程序语言了 %define variables%C 目标函数变量系数 行向量%CB 辨识初始基 行向量%b 约束条件 列向量%A 约束系数矩阵 矩阵%delta 检验数 行向量%X 列向量 function [JI opt]=simplex(C,CB,b,A) theta=C-CB*A;if max(delta)<=0if all(CB<inf)if %存在非基变量的检验数为0%无穷多最优解 else %唯一最优解end elsedisp('无可行解')end elsethetaj=find(delta>0);%找出检验数为正的项temp1=A(:,deltaj);%找出检验数为正项对应的向量temp2=max(temp1);%找出检验数为正项对应的向量的每一列当中最大项if any(temp2<0) disp('无界解')else %单纯形变化[deltak,k]=max(delta);aik1=A(:,k)>0;baik=b./A() endend     下面就是搞的时候的一些注意点,自己查一下也很容易查到的地方。 matlab和excel差异:log含义不同,前者就是ln后者是以10为底 用最优化工具箱,没有x非负的设定,x的范围是自己写进去的.当然b也没有非零的设定 cat合并矩阵 逻辑数组逻辑数组有一个重要的属性它在算术运算中能提供一个屏蔽(mask). … Continue reading

Posted in 技术相关 | Tagged , , | Leave a comment