单纯形算法 matlab

%单纯形

%目标函数标准化
% min x1-3x2+2x3

%输入参量
N=[3 -1 2;-2 4 0;-4 3 8];
B=eye(3);
A=[N B];
cn=[1;-3;2];
cb=zeros(3,1);
c=[cn;cb];

b=[7;12;10];

while(1)

    invb=inv(B);
    cn=cn-N‘*invb‘*cb;
    if cn>=0
        xb=B\b;
        disp(‘find‘)
        xb
        break
    else
        p=(find(cn==min(cn)));%enter to B
        b=B\b;
        a=A(:,p);
        a=B\a;
        m=b./a;
        q=(find(m==min(m(m>0))));%out of B
        %swap
        t=B(:,q);
        B(:,q)=N(:,p);
        N(:,p)=t;

        t=cb(q);
        cb(q)=cn(p);
        cn(p)=t;

    end
end

B
n=size(A,2); %提取A的列数
a=zeros(size(A‘));
for i=1:n
    a(i,:)=A(:,i);
end
x=zeros(1,6);
for i=1:n
    for j=1:3
        if a(i,:)==B(:,j)‘

        x(i)=xb(j);
        end
    end
end
x

  

原文地址:https://www.cnblogs.com/wander-clouds/p/9239248.html

时间: 2024-08-30 17:27:35

单纯形算法 matlab的相关文章

线性规划与单纯形算法描述

\end{align}" /> 在满足(2).(3)式约束条件时求解(1)式最大值的问题称为线性规划问题 线性规划的形式多样,但都可以转化成上述的形式,上面的形式被称为线性规划的标准型 标准型的矩阵形式: 同样在满足除(1)式之外所有其他式约束条件时求解(1)式最大值(后面相似的式子也是这样理解,不再作说明) 下面引用自算法导论: 考虑下面具有两个变量的线性规划: x_1+x_2\protect\4x_1-x_2\leq 8\protect\2x_1+x_2\leq 10\protect\

单纯形算法详细解析

线性规划(Linear Programming,LP)是非常经典的算法之一,而解决该问题的最常用方法是单纯形法.本博文致力于用最简单.最详细的语言一步步解释单纯形算法的过程并加以详细的解释. 中学课程里,我们都简单地接触过线性规划,那时候一般都是分析每个约束,在二维平面上画出直线,得到可行域,然后以固定斜率作出目标函数直线,在可行域内移动直线,在y轴上的截距就是最优解.而往往最优解的地方是通过(凸)可行域的顶点.就像下面这个例子: \[ \begin{equation} \begin{split

smo算法matlab实现

看完CSDN上结构之法,算法之道的支持向量机通俗导论(理解SVM的三层境界) http://blog.csdn.net/v_july_v/article/details/7624837 参考了台湾的林智仁教授写了一个封装SVM算法的libsvm库,下载地址: http://www.csie.ntu.edu.tw/~cjlin/libsvm/,此外下载了一份libsvm的注释文档,下载地址: http://www.pami.sjtu.edu.cn/people/gpliu/document/lib

多源最短路Floyd 算法————matlab实现

弗洛伊德(Floyd)算法是一种用于寻找给定的加权图中顶点间最短路径的算法.该算法名称以创始人之一.1978年图灵奖获得者.斯坦福大学计算机科学系教授罗伯特·弗洛伊德命名. 基本思想 通过Floyd计算图G=(V,E)中各个顶点的最短路径时,需要引入一个矩阵S,矩阵S中的元素a[i][j]表示顶点i(第i个顶点)到顶点j(第j个顶点)的距离. 假设图G中顶点个数为N,则需要对矩阵S进行N次更新.初始时,矩阵S中顶点a[i][j]的距离为顶点i到顶点j的权值:如果i和j不相邻,则a[i][j]=∞

单源最短路Dijkstra算法——matlab实现

迪杰斯特拉(Dijkstra)算法是典型最短路径算法,用于计算一个节点到其他节点的最短路径. 它的主要特点是以起始点为中心向外层层扩展(广度优先搜索思想),直到扩展到终点为止. 基本思想 通过Dijkstra计算图G中的最短路径时,需要指定起点s(即从顶点s开始计算). 此外,引进两个集合S和U.S的作用是记录已求出最短路径的顶点(以及相应的最短路径长度),而U则是记录还未求出最短路径的顶点(以及该顶点到起点s的距离). 初始时,S中只有起点s:U中是除s之外的顶点,并且U中顶点的路径是"起点s

路径搜索 – Dijkstra 算法 (MATLAB实现)

因为在上一门算法课(https://www.coursera.org/learn/robotics-motion-planning/home/welcome),看了老师的视频也不明白,又接着百度了一些关于这个算法的说明,各种大神写得很高深,很多专业术语,超出了我的认知水平,我看了很久也看不懂. 最后总算明白了一些些,于是,用大白话把它记录一下,免得下次又忘记了.要真要用这些搜索算法的话,还不如直接调用命令算了:http://www.mathworks.com/help/releases/R201

逻辑回归算法(MATLAB)

根据李航博士总结的统计学习三要素方法=模型+策略+算法,对应于逻辑回归 模型=基于单极型函数(逻辑函数)的条件概率模型 策略=经验损失对应的训练样本先验概率最大化 算法=随机梯度上升法 逻辑回归MATLAB代码比较简单,如下所示,循环对所有的样本,进行梯度上升算法 <span style="font-size:18px;">function [w]=LogisticRegression(x,y,learningRate,maxEpoch) % Logistic Regres

k-means算法MATLAB和opencv代码

上一篇博客写了k-means聚类算法和改进的k-means算法,这篇博客就贴出对应的MATLAB和C++代码. 以下是MATLAB代码,实现用k-means进行分割: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 功能:实现如何利用Kmeans聚类实现图像的分割: 时间:2015-07 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% function kmeans_segmentation() clear;c

感知机算法(MATLAB)

感知机算法属于比较简单的分类器算法,但是跟逻辑回归和支持向量机一样属于构建分类超平面. 不同的是感知机采用分错的样本与分类超平面的距离作为损失函数,下面的算法基于随机梯度下降法,采用异步方式达到收敛状态 function [w,b]=perceptionLearn(x,y,learningRate,maxEpoch) % Perception Learn Algorithm % x,y 一行为一个样本,y取值{-1,+1} [m,n]=size(x); w=zeros(n,1); b=0; fi