Tag Archives: coding

matlab计算单纯形表

今天花了点时间,将这个程序完成了,里面还有一些小错误,代码写的还是有点乱,明天再整理了 update: 今天又花了点时间,将程序里面的错误找出来了一些,现在这个程序应该大体是可用的,那么就这样了 min1=0.00001;(update:如果用nan的话,效果更好,将这些数忽略掉) %b 约束条件 列向量(update 应该是行向量) function [JI opt]=simplex2(C,CB,b,A,BL) %purpose 验算手工单纯形 %define variables %C 目标函数变量系数 行向量 %CB 辨识初始基 行向量 %b 约束条件 列向量 %A 约束系数矩阵 矩阵 %delta 检验数 行向量 %JBL 基变量序号 %BL 基向量位置-----------换一个结构变成一个逻辑向量 %FBL 非基变量位置 %JI 解 %opt 目标值 … Continue reading

Posted in 读书笔记 | Tagged , | Leave a comment

用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