精华内容
下载资源
问答
  • 联图:G1和G2不能相交,把G1的每个顶点和G2的每个顶点连接起来,记为G1VG2。 K1VK2=K5,K2VK3=K5 积图:对顶点集V=V1 X V2,得到u=(u1,u2),v=(v1,v2) 若u1=v1,u2和v2在原图中邻接,或者u2=v2,u1和v1在原...

    图和简单图:

    一个图就是,由一个表示具体事物的点的集合,和表示事物之间联系的一些线的集合所构成。

    平凡图:只有一个点而无边的图。

    空图:边集为空的图。

    假设u和v是e的端点,称u与e相关联。

     

    图的同构:

    u_1\leftrightarrow u_2,v_1\leftrightarrow v_2u_1v_1u_2v_2的重数相同。

    等价类:按照同构关系可划分。

    商集:所有等价类为元素构成的集合。

     

    完全偶图:具有二分类(X,Y)的简单偶图,其中X的每个顶点与Y的每个顶点相连。

    补图:

    对于一个简单图G=(V,E),令集合E_1=\{uv|u\neq v,u,v\in V\},则图H=(V,E_1 \setminus E)称为G的补图。

    ps:这里E和E1的边加起来,就是完全图的边数。

    ps:因为是自补图,自己和自己的补图同构,边数当然是一样的啦。

    取模运算,商偏向于负无穷方向。去余运算,商偏向于0方向。

    a ≡ b (mod p),表明a和b对p取模,它们余数相等。

     

    顶点的度,度序列:

    奇点:奇数度的顶点;偶点:偶数度的顶点。

    k正则图:每个点的度数都为k。如:完全图和完全偶图K_{n,n}均是正则图。

    握手定理:

     

    ps:因为总的度数为偶数。偶点无论怎么加都为偶数,奇点要加够偶数个,才为偶数。

    ps:k为奇数,则图的所有点都为奇点,奇点的个数必为偶数,也就是阶数为偶数。

     

    ps:当△(G)<n-1时, 所有的度可能的情况都在括号里了。当△(G)=n-1时,每个顶点的度数范围在最小度到最大度之间,这个长度的范围是,又有△(G)+1=n,减去δ就肯定<n了,那肯定有顶点重复。

     

    子图与图的运算:

    子图:顶点集是子集、边集也是子集,而且子图中的边的重数不超过G中对应边的重数。

    生成子图:顶点集相同的子图。

    导出子图:提取出一个顶点集,和这些顶点集相关联的边的子图。

    相关记法:G[V'];G[V\V']是除去V'顶点及相关联的边,也有G-V’

    边导出子图:提取出边集,和这些边的端点,的子图。

    相关记法:G[E'];G[E\E'],也有G-E'

    并图:G1∪G2,顶点集和边集都要并,也记为G1+G2。

    交图:G1 \cap G2,至少要有一个公共顶点。

    差:G1-G2,由G1中去掉G2中的边组成的图。

    对称差:

     

    联图:G1和G2不能相交,把G1的每个顶点和G2的每个顶点连接起来,记为G1VG2。

    K1VK2=K5,K2VK3=K5

    积图:对顶点集V=V1 X V2,得到u=(u1,u2),v=(v1,v2)

    若u1=v1,u2和v2在原图中邻接,或者u2=v2,u1和v1在原图中邻接,则u和v连线。

    G=G1 X G2

    运算后,点和边的数目统计:

    ps:积图边的数目,G1顶点数n1要和G2的顶点数n2做积,因此n1每个点要负责m2条边的连接。

     

    路与图的连通性:

    迹:途径中的边,互不相同。

    路:途径是迹,且顶点也互不相同。

    连通是顶点集V上的一个等价关系,可将V划分为一些等价类。

    可得,连通分支的概念,连通分支个数,记为\omega(G),连通图 \omega(G)=1。

    ps:通过证明任意两点都是连通的方式,来证明G的补图是连通图。

    闭迹:称为回路。

    圈:起点与内部顶点互不相同。长为k的圈称为k圈;根据k是奇数还是偶数,则称k圈是奇圈和偶圈。

    直径:一个图中,最长的距离。

    ps:在必要性的证明中,圈的长度为k-1,当k为奇数时,则圈就为偶圈。

    在充分性的证明中,先根据距离的奇偶性划分为两个集合X和Y,再证明(X,Y)是个二分类,即它们集合内部,任意两点都不相连。具有相同奇偶性的数相加,必为偶数。

     

    最短路及其算法:

    Dantijg算法(顶点标号法):

    ps: Ti为a1到ai的最短路上的边集合;Ai为已经标号的顶点集合;t(an)表示an的标号值,a1到an的最短路长度。

    步骤2做的事情:

    遍历每个已标号顶点an。找出:某个已标号顶点an的,未标号邻点。然后算出:某个已标号顶点an,到其最近邻点距离。不但要找出l最小,还要使得步骤3中的,t+l最小。

    步骤3做的事情:

    可以得出某个已标号顶点a_{m_{i}}使得,根据步骤2,算出的各个最小值中,再找出最小值,然后做相应的更新。

    好的图论算法:若在如何一个具有m条边的n阶图G上,实施这个算法所需要的计算步数,都可由n和m的一个多项式为其上界。

    动态规划是Bellman,作为多阶段决策过程而研究出来的。

     

    图的代数表示及其特征:

    邻接矩阵:若节点间相邻,则为1,否则为0;

    ps:推论1中,自身到自身,有两个方向可走。因此,可得出度数和三角形数目的两倍。

    关联矩阵:

    某点vi与边ej有关联时,则b_{ij}=1,否则为0。

     

    极图:

    l部图:将点集V划分为l个互不相交的集合,且每个集合内的点,互不相连。

    l=2时,G为偶图;n阶图必为n部图。

    l_1<l_2\leqslant n,因此,l_1部图也是l_2部图。

    ps:l_1个集合里的任一个集合都是互不相连的,因此,可任选一些集合来继续划分至,集合数量达到l_2

    完全l部图:每个集合内的点,都和其它集合里的点,均有边相连。

    完全l部图可表示为:

    它显然有:条边。

    n阶完全l几乎等部图:

    对于一个n个点的完全l部图G中:

    有:,因为,k(l-r)+r(k+1)=kl+r的形式。

    所以记为:

    ps:若u的选取,在V1中,则v要经过V2中的点,才能到达u。

    ps:当n1=n2=n/2时,能使m=n1*n2达到最大。

     ps:若是要边数最多,则必定要是个完全l部图,完全l几乎等部图意味着每个集合的元素个数接近相等,若每个集合里元素相等,则必定是完全l几乎等部图。

     

    H的度序列优于G,或者是,G的度序列弱于H,表示的是:有一个映射μ,使得G中的任何点u,有关系成立。

    ps:若G度弱于H,一定有:m(G)≤m(H)。

       

     ps:先取出最大度的那个顶点u,再取出u的所有的邻接点的导出子图G1。G1要是含有K_t,则 u V G1,就是K_{t+1}了。

    V2应包含u点,则G2VG1的边数不少于G。

    ps:N_G(v)只能导出G1这么多个顶点,G_1VG_2之后,通过v点能导出更多个顶点。

    因为G度弱于G_1VG_2G_1VG_2度弱于H=H_2VG_2,而G和H有相同的度序列,则G和G_1VG_2有相同的度序列。

    因为G_1VG_2中,V1每个点和V2每个点相连,G和G_1VG_2有相同的度序列,那在G中,V1和V2肯定也是互相的。

    G_1VG_2H_1VG_2有相同的度序列,G1和H1连接G2中的点的边数是一样的,因此G1和H1的度序列也必须是相等。

    归纳假设是:G1不含K_t,且度弱于完全t-1部图H1,且G1与H1有相同的度序列,则同构;

    因此推导出,做联图后,G_1VG_2H_1VG_2也同构。

     

    托兰定理:

    ps:定理18说明,完全l部图的边数肯定 ≤ 完全l几乎等部图。

     

    托兰定理的应用:

    排雷模型:在任意的两个人之间的距离不超过g米的条件下,距离大于等于h米的人数对最多能达到多少对。

    平面点集A的直径:指A中点对的距离的最大值,其中距离是指欧式距离

    建立模型:计算在直径为g的点集\{x_1,x_2,...,x_n\}中最多有多少点对,其距离大于h。

     

     

     

     

     

     

     

     

    展开全文
  • 原文地址 开发环境: RT-Thread版本:4.0.3 操作系统:Windows 10 RT-Thread Studio版本:2.0.0 ...蓝讯AB32VG1的板子是共阳的。 图1 全彩LED的控制有两种方式:一种是直接通过三个引脚直接控制,另外一种是

    原文地址

    开发环境:
    RT-Thread版本:4.0.3
    操作系统:Windows 10
    RT-Thread Studio版本:2.0.0
    开发板MCU:AB5301A

    2.1全彩LED简介

    大家常的LED都是单色的,控制一端的高低电平即可控制LED的亮灭。全彩LED就是可以通过RGB三种基本LED组合多种色彩的LED,当然还有一种RGBW 四基色的全彩LED。全彩LED分为共阳极和共阴极两种。蓝讯AB32VG1的板子是共阳的。

    在这里插入图片描述

    图1

    全彩LED的控制有两种方式:一种是直接通过三个引脚直接控制,另外一种是通过SM16703、WS2811、TM1829等驱动芯片进行控制。本文采用直接控制的方式,但要想获得更多颜色,就需要通过PWM来控制。

    2.2简单实现七彩色

    2.2.1实验分析

    先来看看电路图。

    在这里插入图片描述

    图2 LED电路图

    这些 LED 灯的阴极都是连接到 AB5301A的 GPIO 引脚,只要我们控制 GPIO 引脚的电平输出状态,即可控制 LED 灯的亮灭。

    2.2.2代码实现

    关于工程创建,这里就不说了,不懂的上上一章吧。

    开发环境搭与使用 ( RT-Thread Studio)

    七色很简单,就通过控制三个引脚亮灭来组合其中颜色。直接看代码。

    /**Includes*********************************************************************/
    #include <rtthread.h>
    #include "board.h"
    
    /**define***********************************************************************/
    #define LED_R "PE.1"
    #define LED_G "PE.4"
    #define LED_B "PA.2"
    
    /** the macro definition to the led on or off
      * 1 - off
      *0 - on
      */
    #define ON  PIN_LOW
    #define OFF PIN_HIGH
    
    /**
      * @brief  main
      * @param  None
      * @retval None
      */
    int main(void)
    {
        uint32_t cnt = 0;
        uint8_t pin_r = rt_pin_get(LED_R);
        uint8_t pin_g = rt_pin_get(LED_G);
        uint8_t pin_b = rt_pin_get(LED_B);
    
        rt_pin_mode(pin_r, PIN_MODE_OUTPUT);
        rt_pin_mode(pin_g, PIN_MODE_OUTPUT);
        rt_pin_mode(pin_b, PIN_MODE_OUTPUT);
    
        while (1)
        {
            //红
            rt_pin_write(pin_r, ON);
            rt_pin_write(pin_g, OFF);
            rt_pin_write(pin_b, OFF);
            rt_thread_mdelay(1000);
    
            //绿
            rt_pin_write(pin_r, OFF);
            rt_pin_write(pin_g, ON);
            rt_pin_write(pin_b, OFF);
            rt_thread_mdelay(1000);
    
            //蓝
            rt_pin_write(pin_r, OFF);
            rt_pin_write(pin_g, OFF);
            rt_pin_write(pin_b, ON);
            rt_thread_mdelay(1000);
    
            //黄(红+绿)
            rt_pin_write(pin_r, ON);
            rt_pin_write(pin_g, ON);
            rt_pin_write(pin_b, OFF);
            rt_thread_mdelay(1000);
    
            //紫(红+蓝)
            rt_pin_write(pin_r, ON);
            rt_pin_write(pin_g, OFF);
            rt_pin_write(pin_b, ON);
            rt_thread_mdelay(1000);
    
            //青(绿+蓝)
            rt_pin_write(pin_r, OFF);
            rt_pin_write(pin_g, ON);
            rt_pin_write(pin_b, ON);
            rt_thread_mdelay(1000);
    
            //白(红+绿+蓝)
            rt_pin_write(pin_r, ON);
            rt_pin_write(pin_g, ON);
            rt_pin_write(pin_b, ON);
            rt_thread_mdelay(1000);
    
            //黑(全部关闭)
            rt_pin_write(pin_r, OFF);
            rt_pin_write(pin_g, OFF);
            rt_pin_write(pin_b, OFF);
            rt_thread_mdelay(1000);
            cnt++;
        }
    
        return 0;
    }
    

    代码很简单,主要是通过rt_pin_write()函数来控制不同LED。

    2.2.3实验现象

    编译完成后,通过Downloader下载程序,即可看到不同七色光依次出现。

    2.3 PWM 控制全彩LED

    2.3.1实验分析

    在正式讲解之前,先来说说什么是PWM。PWM(Pulse Width Modulation , 脉冲宽度调制) 是一种对模拟信号电平进行数字编码的方法,通过不同频率的脉冲使用方波的占空比用来对一个具体模拟信号的电平进行编码,使输出端得到一系列幅值相等的脉冲,用这些脉冲来代替所需要波形的设备

    在这里插入图片描述

    图3

    如上图所示,就是PWM 原理示意图,假定定时器工作模式为向上计数,当计数值小于阈值时,则输出一种电平状态,比如高电平,当计数值大于阈值时则输出相反的电平状态,比如低电平。当计数值达到最大值是,计数器从0开始重新计数,又回到最初的电平状态。高电平持续时间(脉冲宽度)和周期时间的比值就是占空比,范围为0~100%。上图高电平的持续时间刚好是周期时间的一半,所以占空比为50%。

    上一节讲了控制三基色的亮灭实现了七色,这一节通过使用 PWM对R、G、B三个灯进行颜色控制,通过改变三个通道的占空比,三个灯进行颜色的组合,就可以混合成多种不同的颜色。

    那么要怎么做呢?其实很简单,也就通过改变电平的占空比使RGB分别显示出不同的色值,然后通过组合显示出想要的颜色。通过PWM和直接控制三基色有啥区别呢,其实没区别,通过PWM控制的颗粒度更细,因此能得到更多的色彩。

    值得注意的是,这里要调整LED_R的GPIO,将LED_R接到PA1上,便于后面的控制。

    表1LED寄存器表
    NameTypeFunction
    PE4(LED_G)I/OSPI0DI-G2
    SPI1DI-G6
    LPWM0-G1
    IISMCLK-G2PE4
    PA1(LED_R)I/OSPDIF1
    SPI1CLK-G1
    TX0-G5
    HSTRX-G5
    LPWM1-G3
    IISDO-G1
    PA1
    PA2(LED_B)I/OSPI1DI-G1
    LPWM2-G3
    IISSCLK-G1
    PA2

    2.2.3代码实现

    首先我们需要配置PWM驱动,双击RT-Thread Settings文件,打开 RT-Thread 项目配置界面,勾选PWM驱动,然后保存即可。

    在这里插入图片描述

    图4添加PWM驱动

    接下来需要使能3个LED的PWM。

    在这里插入图片描述

    图5

    还可以通过env工具来配置。

    在这里插入图片描述

    图6使能PWM

    当然,没有安装env工具,可直接在rtconfig.h中直接添加以下宏定义即可。

    在这里插入图片描述

    图7

    如果以上添加成功,编译烧写到开发板,查看设别,可以看到控制3个LED的PWM设备。

    在这里插入图片描述

    图8

    接下来就是下应用代码,在applications文件夹下新建文件,添加一个线程任务,然后在任务中操作3个LED。代码如下:

    
    /**
      ******************************************************************************
      * @file                task.c
      * @author              BruceOu
      * @version             V1.0
      * @date                2021-03-12
      * @blog                https://blog.bruceou.cn/
      * @Official Accounts   嵌入式实验楼
      * @brief               RTT任务
      ******************************************************************************
      */
    /*Includes**********************************************************************/
    #include "task.h"
    
    #define THREAD_PRIORITY         7
    #define THREAD_STACK_SIZE       512
    #define THREAD_TIMESLICE        3
    
    #define PWM_DEV_NAME_R        "lpwm1"  /* PWM设备名称 */
    #define PWM_DEV_CHANNEL_R     3       /* PWM通道 */
    
    #define PWM_DEV_NAME_G        "lpwm0"  /* PWM设备名称 */
    #define PWM_DEV_CHANNEL_G     1       /* PWM通道 */
    
    #define PWM_DEV_NAME_B        "lpwm2"  /* PWM设备名称 */
    #define PWM_DEV_CHANNEL_B     3       /* PWM通道 */
    
    struct rt_device_pwm *pwm_dev_r;      /* PWM设备句柄 */
    struct rt_device_pwm *pwm_dev_g;      /* PWM设备句柄 */
    struct rt_device_pwm *pwm_dev_b;      /* PWM设备句柄 */
    
    static rt_thread_t pwm_led_tid = RT_NULL;
    
    /* 线程 pwm_led_thread_entry 的入口函数 */
    /**
      * @brief  pwm_led_thread_entry
      * @param  parameter
      * @retval None
      */
    static void pwm_led_thread_entry(void *parameter)
    {
        rt_uint32_t period, pulse_r,pulse_g,pulse_b, dir_r,dir_g,dir_b;
    
        period = 655360;    /* 周期为0.5ms,单位为纳秒ns */
        dir_r = 1;           /* PWM脉冲宽度值的增减方向 */
        dir_g = 1;
        dir_b = 1;
        pulse_r = 0;          /* PWM脉冲宽度值,单位为纳秒ns */
        pulse_g = 0;
        pulse_b = 0;
    
        rt_uint16_t r,g,b;
    
        /* 查找设备 */
        pwm_dev_r = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME_R);
        if (pwm_dev_r == RT_NULL)
        {
            rt_kprintf("pwm led r run failed! can't find %s device!\n", PWM_DEV_NAME_G);
        }
    
        pwm_dev_g = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME_G);
        if (pwm_dev_g == RT_NULL)
        {
            rt_kprintf("pwm led g run failed! can't find %s device!\n", PWM_DEV_NAME_G);
        }
    
        pwm_dev_b = (struct rt_device_pwm *)rt_device_find(PWM_DEV_NAME_B);
        if (pwm_dev_b == RT_NULL)
        {
            rt_kprintf("pwm led b run failed! can't find %s device!\n", PWM_DEV_NAME_B);
        }
    
        /* 设置PWM周期和脉冲宽度默认值 */
        rt_pwm_set(pwm_dev_r, PWM_DEV_CHANNEL_R, period, pulse_r);
        rt_pwm_set(pwm_dev_g, PWM_DEV_CHANNEL_G, period, pulse_g);
        rt_pwm_set(pwm_dev_b, PWM_DEV_CHANNEL_B, period, pulse_b);
    
        /* 使能设备 */
        rt_pwm_enable(pwm_dev_r, PWM_DEV_CHANNEL_R);
        rt_pwm_enable(pwm_dev_g, PWM_DEV_CHANNEL_G);
        rt_pwm_enable(pwm_dev_b, PWM_DEV_CHANNEL_B);
    
        while (1)
        {
            for (r =0 ; r < 8; r++)
            {
                if (dir_r)
                {
                    pulse_r += 81920;      /* 从0值开始每次增加81920ns */
                }
                else
                {
                    pulse_r -= 81920;      /* 从最大值开始每次减少81920ns */
                }
                if ((pulse_r) >= period)
                {
                    dir_r = 0;
                }
                if (81920 > pulse_r)
                {
                    dir_r = 1;
                }
                /* 设置PWM周期和脉冲宽度 */
                rt_pwm_set(pwm_dev_r, PWM_DEV_CHANNEL_R, period, pulse_r);
                for(g = 0; g < 8; g++)
                {
                    if (dir_g)
                    {
                        pulse_g += 81920;      /* 从0值开始每次增加81920ns */
                    }
                    else
                    {
                        pulse_g -= 81920;      /* 从最大值开始每次减少81920ns */
                    }
                    if ((pulse_g) >= period)
                    {
                        dir_g = 0;
                    }
                    if (81920 > pulse_g)
                    {
                        dir_g = 1;
                    }
                    rt_pwm_set(pwm_dev_g, PWM_DEV_CHANNEL_G, period, pulse_g);
                    for(b = 0; b < 8; b++)
                    {
                        rt_thread_mdelay(10);
                        if (dir_b)
                        {
                            pulse_b += 81920;      /* 从0值开始每次增加81920ns */
                        }
                        else
                        {
                            pulse_b -= 81920;      /* 从0值开始每次减少81920ns */
                        }
                        if ((pulse_b) >= period)
                        {
                            dir_b = 0;
                        }
                        if (81920 > pulse_b)
                        {
                            dir_b = 1;
                        }
    
                        rt_pwm_set(pwm_dev_b, PWM_DEV_CHANNEL_B, period, pulse_b);
                    }
                }
    
            }
        }
    }
    
    /* 线程初始化*/
    int thread_init(void)
    {
        /* 创建线程,名称是 pwm_led_thread,入口是 pwm_led_thread*/
        pwm_led_tid = rt_thread_create("pwm_led_thread",
                                       pwm_led_thread_entry,
                                       RT_NULL,
                                       THREAD_STACK_SIZE,
                                       THREAD_PRIORITY,
                                       THREAD_TIMESLICE);
    
        /* 如果获得线程控制块,启动这个线程 */
        if (pwm_led_tid != RT_NULL)
            rt_thread_startup(pwm_led_tid);
    
        return 0;
    }
    
    /* 导出到 msh 命令列表中 */
    MSH_CMD_EXPORT(thread_init, thread init);
    

    当然啦以上代码还可以优化,有兴趣自行去修改吧。控制PWM主要用到了以下三个函数:

    rt_device_find()	//根据 PWM 设备名称查找设备获取设备句柄
    rt_pwm_set()	//设置 PWM 周期和脉冲宽度
    rt_pwm_enable()   //使能 PWM 设备
    

    代码也很简单,就是通过PWM来控制三个LED的脉宽,从而得到不同的颜色。

    PWM参考地址

    2.3.3实验现象

    烧写成功后复位,在终端输 thread_init,即可看到LED闪烁出不同的颜色。

    在这里插入图片描述

    在这里插入图片描述
    当然啦,由于拍摄原因,呈现的效果不是很好。




    代码获取方法

    1.长按下面二维码,关注公众号[嵌入式实验楼]
    2.在公众号回复关键词[AB32VG1]获取资料

    在这里插入图片描述




    欢迎访问我的网站

    BruceOu的哔哩哔哩
    BruceOu的主页
    BruceOu的博客
    BruceOu的CSDN博客
    BruceOu的简书
    BruceOu的知乎

    展开全文
  • 对策也叫博弈 , 是自古以来的政治家和军事家都很注意研究的问题。 作为一门正式学科,是在20世纪40年代...(1) VG = VG + L ( 2 ) T ( G1 ) = T ( G2 ) 设有两个矩阵对策G1 ={S1,S2;A},G2 ={S1 ,S2 ;αA}其中α> ...

    对策也叫博弈 , 是自古以来的政治家和军事家都很注意研究的问题。 作为一门正式学科,是在20世纪40年代形成并发展起来的。直到1944年冯·诺依曼(von Neumann) 与摩根斯特恩(O .Morgenstern)的《博弈论与经济行为》一书出版,标志着现代系统博弈理论的初步形成。书中提出的标准型、扩展型和合作型博弈模型解的概念和分析方法 , 奠定了这门学科的理论基础 , 成为使用严谨的数学模型研究冲突对抗条件下最优决策问题的理论。然而 , 诺依曼的博弈论的局限性也日益暴露出来。由于它过于抽象 , 使应用范围受到很大限制,所以影响力很有限。20世纪50年代,纳什( Nash)建立了非合作博弈的“纳什均衡”理论, 标志着博弈的新时代开始 , 是纳什在经济博弈论领域划时代的贡献 , 是继冯·诺依曼之后最伟大的博弈论大师之一。1994年纳什获得了诺贝尔经济学奖。他提出的著名的纳什均衡概念在非合作博弈理论中起着核心作用。由于纳什均衡的提出和不断完善 , 为博弈论广泛应用于经济学、管理学、社会学、政治学、军事科学等领域奠定了坚实的理论基础。

    对策论基础

    对策论亦称竞赛论或博弈论, 是研究具有斗争或竞争性质现象的数学理论和方法。 一般认为 , 它是现代数学的一个新分支 , 是运筹学的一个重要学科。对策论发展的历史并 不长, 但由于它研究的问题与政治、经济、军事活动乃至一般的日常生活等有着密切联系,并且处理问题的方法具有明显特色 , 所以日益引起广泛注意。

    在日常生活中, 经常会看到一些相互之间具有斗争或竞争性质的行为 , 如下棋、打牌、 体育比赛等。还比如战争活动中的双方 , 都力图选取对自己最有利的策略, 千方百计去战胜对手。在政治方面 , 国际间的谈判 , 各种政治力量之间的 斗争 , 各国际集团之间的斗 争等无一不具有斗争的性质。在经济活动中, 各国之间、各公司企业之间的经济谈判 , 企业之间为争夺市场而进行的竞争等 , 举不胜举。

    具有竞争或对抗性质的行为称为对策行为。在这类行为中 , 参加斗争或竞争的各方各自具有不同的目标和利益。为了达到各自的目 标和利益 , 各方必须考虑对手的各种可能的行动方案 , 并力图选取对自己最有利或最合理的方 案。对策论就是研究对策行为中斗争各方是否存在着最合理行动方案 , 以及如何找到最合理行动方案的数学理论和方法。

    以下称具有对策行为的模型为对策模型或对策。 对策模型的种类可以千差万别 , 但本质上都必须包括以下三个基本要素。

    1. 局中人

    在一个对策行为(或一局对策)中,有权决定自己行动方案的对策参加者, 称为局中人。通常用 I 表示局中人的集合。如果有n个局中人, 则 I = {1, 2, ⋯, n}。一般要求一个对策中至少要有两个局中人。对策中关于局中人的概念具有广义性,也就是不一定具体到人,也可以是组织,团地。需要强调的一点是 , 在对策中总是假定每一个局中人都是“ 理智的”决策者或竞争者 , 即对任一局中人来讲 , 不存在利用其他局中人决策的失误来扩大自身利益的可能性。

    2. 策略集

    一局对策中, 可供局中人选择的一个实际可行的完整的行动方案称为一个策略。 参加对策的每一局中人i,i∈I,都有自己的策略集 Si。一般,每一局中人的策略集中至少应包括两个策略。

    3. 赢得函数(支付函数)

    在一局对策中,各局中人选定的策略形成的策略组称为一个局势, 即若Si是第i个局中人的一个策略,则 n个局中人的策略组:s=(s1 ,s2 ,⋯,sn)就是一个局势。全体局势的集合S可用各局中人策略集的笛卡儿积表示 , 即S= S1×S2×⋯×Sn,当一个局势出现后,对策的结果也就确定了。也就是说, 对任一局势 s∈ S, 局中人i可以得到一个赢得值 Hi (s)。显然, Hi (s)是局势 s的函数,称为第 i个局中人的赢得函数。

    在齐王与田忌赛马的例子中,局中人集合为 I={1,2},齐王和田忌的策略集可分别 用 S1 ={a1 ,a2 , a3 , a4 ,a5 ,a6 }和 S2 ={β1 ,β2 ,β3 ,β4 ,β5 ,β6 }表示。这样,齐王的任一策略 ai 和田忌的任一策略βj 就形成了一个局势sij。如果a1=(上,中,下),β1 =(上,中,下),则在局 势 s11下齐王的赢得值为H1(s11) = 3 , 田忌的赢得值为H2(s11)=- 3, 如此等等。以上讨论了局中人、策略集和赢得函数这三个概念。当这三个基本要素确定后 , 一个对策模型也就给定了。

    对策问题举例及对策的分类

    对策论在经济管理的众多领域中有着十分广 泛的应用 , 下面列举几个可以用对策论思想和模型进行分析的例子。

    费用分摊问题:假设沿某一河流有相邻的 3 个城市 A、B、C,各城市可单独建 立水厂, 也可合作兴建一个大水厂。经估算 , 合建一个大水厂 , 加上敷设管道的费用 , 要比单独建3个小水厂的总费用少。但合建大厂的方案能否实施, 要看总的建设费用分摊得是否合理。如果某个城市分摊到的费用比它单独建设水厂的费用还多的话 , 它显然不会接受合作的方案。问题是应如何合理地分摊费用, 使合作兴建大水厂的方案得以实现?

    拍卖问题:最常见的一种拍卖形式是先由拍卖商把拍卖品描述一番,然后提出第一个报价。接下来由买者报价, 每一次报价都要比前一次高 , 最后谁出的价最高拍卖品即归谁所有。假设有n个买主给出的报价分别为p1 ,⋯, pn ,且不妨设 pn > pn - 1 > ⋯ >p1 ,则买主 n 只要报价略高于 pn - 1 , 就能买到拍卖品, 即拍卖品实际上是在次高价格上卖出的。现在的问题是 , 各买主之间可能知道他 人的估价 , 也可能不知道他人的估价 , 每人应如何报价对自己能以较低的价格得到拍卖品最为有利 ? 最后的结果又会怎样 ?

    囚犯难题:设有两个嫌疑犯因涉嫌作案被警官拘留,警官分别对两人进行审讯。根据法律,如果两个人都承认此案是他们干的, 则每人各判刑7年; 如果两人都不承认 , 则由于证据不足 , 两人各判刑1年 ; 如果只有一人承认并揭发对方, 则承认者予以宽大释放 , 而不承认者将判刑9年。因此, 对两个囚犯来说 , 面临着一个在“承认”和“不承认” 这两个策略间进行选择的难题。

    上面几个例子都可看成是一个对策问题 , 所不同的是有些是二人对策 , 有些是多人对策;有些是有限对策, 有些是无限对策;有些是零和对策, 有些是非零和对策; 有些是合作对策, 有些是非合作对策等等。为了便于对不同的对策问题进行研究, 可以根据不同方式 进行分类 , 通常的分类方式有 :

    (1) 根据局中人的个数,分为二人对策和多人对策;
    (2) 根据各局中人的赢得函数的代数和是否为零,分为零和对策与非零和对策;
    (3) 根据各局中人间是否允许合作,分为合作对策和非合作对策;
    (4) 根据局中人的策略集中的策略个数,分为有限对策和无限对策。
    此外 , 还有许多其他的分类方式。例如根据策略的选择是否与时间有关, 可分为静态对策和动态对策 ; 根据对策模型的数学特征 , 可分为矩阵对策、连续对策、微分对策、阵地对策、凸对 策、随机对策等 。

    在众多对策模型中,占有重要地位的是二人有限零和对策(finite two-person zero- sum game) , 又称为矩阵对策。这类对策是到目前为止在理论研究和求解方法方面都比较完善的一个对策分支。矩阵对策可以说是一类最简单的对策模型 , 其研究思想和方法十分具有代表性 , 体现了对策论的一般思想和方法 , 且矩阵对策的基本结果也是研究其他对策模型的基础。

    矩阵对策的基本定理

    矩阵对策的数学模型

    二人有限零和对策就是矩阵对策 , 是指只有两个参加对策的局中人 , 每个局中人都只有有限个策略可供选择。在任一局势下, 两个局中人的赢得之和总是等于零 , 即双方的利益是激烈对抗的。“齐王赛马”就是一个矩阵对策的例子 , 齐王和田忌各有6个策略, 一局 对策结束后 , 齐王的所得必为田忌的所失 , 反之亦然。

    在矩阵对策中,一般用I、II分别表示两个局中人,并设局中人I有 m个纯策略α1 ,α2 , ⋯,αm ,局中人II有 n 个纯策略β1 ,β2 , ⋯,βn , 则局中人I、 II的策略集分别为:S1 ={α1 ,α2 ,⋯,αm},S2 ={β1,β2,⋯,βn},当局中人I选定纯策略αi 和局中人II选定纯策略βj 后,就形成了一个纯局势(αi ,βj )。可见这样的纯局势共有m×n个。对任一纯局势(αi,βj),记局中人I的赢得值为aij,并称:

    \begin{bmatrix} a_{11}\, a_{11}...\,a_{1n}\\ a_{21}\, a_{22}...\,a_{2n}\\ ...\, ...\...\\ a_{m1}\, a_{m2}...\,a_{mn}\\ \end{bmatrix}

    为局中人I的赢得矩阵(或为局中人II的支付矩阵)。由于假定对策为零和的,故局中人II的赢得矩阵就是 - A。

    当局中人I、II和策略集 S1 、S2 及局中人I的赢得矩阵 A 确定后, 一个矩阵对策也就给定。通常 , 将一个矩阵对策记成G={I,II;S1,S2;A}或 G={S1,S2;A}

    \underset{i}{max}\, \underset{j}{min} a_{ij} =\underset{j}{min}\, \underset{i}{max}\, a_{ij} = a_{i^{*}j^{*}}等式成立 , 记 VG = ai*j*。 则称VG为对策G的值, 称使该式成立的纯局势(αi*,βj*)为G在纯策略下的解(或平衡局势),αi*与βj*分别称为局中人I,II的最优纯策略。

    矩阵对策 G = { S1 , S2 ; A}在纯策略意义下有解的充分必要条件是 : 存在纯局势(αi* ,βj* )使得对一切i=1,⋯,m,j=1,⋯,n,均有:

    aij* ≤ai* j* ≤ai* j或者ai * j * 是矩阵 A 的一个鞍点

    矩阵对策的值是唯一的。即当局中人I采用构成解的最优纯策略时 , 能保证他的赢得VG不依赖于对方的纯策略。

    矩阵对策的混合策略

    对矩阵对策 G= { S1 , S2 ; A}来说,局中人I有把握的至少赢得是 v1 = \underset{i}{max}\, \underset{j}{min} a_{ij},局中人II有把握的至多损失是v2 = \underset{j}{min}\, \underset{i}{max}\, a_{ij}

    一般,局中人I赢得值不会多于局中人II损失值,即总有v1 <= v2.

    设有矩阵对策G={S1,S2;A},其中S1 ={α1,α2,⋯,αm},S2 ={β1,β2,⋯, βn},A=(aij )m×n记

    S_{1}^{*} = \left \{ x \in E^{m} / x_{i} \geqslant 0,i = 1,...,m,\sum_{i= 1}^{m}x_{i} = 1\right \} \ S_{2}^{*} = \left \{ y \in E^{n} / y_{j} \geqslant 0,j = 1,...,n,\sum_{j= 1}^{n}y_{j} = 1\right \}

    则s1,s2分别称局中人I和II的混合策略集,x \in S_{1}^{*}y \in S_{2}^{*}分别称局中人I和II的混合策略,

    局中人I的赢得函数记成E(x,y)=xT Ay=∑∑aijxiyj这样得到的一个新的对策记成 G* = { S1* , S2* , E}, 称 G* 为对策 G 的混合扩充。

    一个混合策略x=(x1,⋯,xm)T 可设想成当两个局中人多次重复进行对策G时,局中人I分别采取纯策略 α1 , ⋯,αm 的频率。若只进行一次对策, 混合策略 x = ( x1 , ⋯, xm )T 可设想成局中人I对各纯策略的偏爱程度。

    设G* ={S1* ,S2* ;E}是矩阵对策G={S1 ,S2 ;A}的混合扩充,如果

    \underset{x\in S_{1}^{*}}{max}\, \underset{y\in S_{2}^{*}}{min} E(x,y)=\underset{y\in S_{2}^{*}}{min}\, \underset{x\in S_{1}^{*}}{max}\, E(x,y)记其值为VG。则称VG 为对策G* 的值,称使上式成立的混合局势(x* ,y* )为G在混合策略意义下的解(或简称解) , x* 和 y* 分别称为局中人I和II的最优混合策略(或简称最优策略)。当G 在纯策略意义下解不存在时, 自动认为讨论的是在混合策略意义下的解,相应的局中人I的赢得函数为 E(x,y)。

    矩阵对策G={S1 ,S2 ;A}在混合策略意义下有解的充要条件是:存在 x* ∈ S1* , y* ∈S2* ,使(x* , y* )为函数 E( x, y)的一个鞍点,即对一切 x∈S1* , y∈S2* ,有E(x,y* )≤E(x* ,y* )≤E(x* ,y)

    矩阵对策的基本定理

    对任一矩阵对策G={S1,S2;A},一定存在混合策略意义下的解。

    设(x* ,y* )是矩阵对策G的解,v=VG,则:

    (1) 若 xi* >0,则∑aij yj*  = v。

    (2)若yj* >0,则∑aij xi*  = v。

    (3) 若∑aij yj* < v,则 xi* = 0

    (4) 若∑aij xi* > v ,则则 yj* = 0

    设有两个矩阵对策:G1 ={S1,S2;A1},G2 ={S1,S2;A2},其中A1 =(aij),A2 =(aij +L),L为任一常数,则有:

    (1) VG = VG + L

    ( 2 ) T ( G1 ) = T ( G2 )

    设有两个矩阵对策G1 ={S1,S2;A},G2 ={S1 ,S2 ;αA}其中α> 0 为任一常数。则(1) VG =αVG,( 2 ) T ( G1 ) = T ( G2 )

    设G={S1,S2;A}为—矩阵对策,且A=-AT 为斜对称矩阵(亦称这种对策 为对称对策)。则

    (1) VG =0
    (2) T1 (G) = T2 (G),其中 T1 (G)和 T2 (G)分别为局中人I和II的最优策略集。

    设有矩阵对策G={S1,S2;A},其中S1 ={α1,⋯,αm},S2 ={β1,⋯,βn},

    A=(aij),如果对一切j=1,⋯,n都有ai0j≥ak0j,即矩阵A的第i0 行元素均不小于第k0 行的对应元素,则称局中人I的纯策略αi0 优超于αk0 ;同样,若对一切 i= 1,⋯, m,都有 aij0 ≤ail0 即矩阵 A的第l0 列元素均不小于第 j0 列的对应元素,则称局中人II的纯策略

    βj 0 优 超 于 βl 0 。

    设G={S1,S2;A}为矩阵对策,其中S1 ={α1,⋯,αm},S2 ={β1,⋯,βn},

    A=(aij )如果纯策略α1 被其余纯策略α2 ,⋯,αm 中之一所优超,由G可得到一个新的矩 阵对策 G′= { S′1 , S2 ; A′}其中S′1 ={α2 ,⋯,αm},A′= ( ai j ′) ( m - 1 ) × n,aij =aij i=2,⋯,m j=1,⋯,n。于是有:

    ( 1 ) V G′ = V G ;

    (2) G′中局中人II的最优策略就是其在 G中的最优策略;

    (3)若(x2* ,⋯,xm* )T 是G′中局中人I的最优策略,则x* =(0,x2* ,⋯,xm* )T 便是其 在 G中的最优策略。

    上面定理实际给出了一个化简赢得矩阵 A的原则,称之为优超原则。根据这个原则,当局中人I的某纯策略 ai 被其他纯策略或纯策略的凸线性组合所优超时 , 可在矩阵 A 中 划去第 i 行而得到一个与原对策 G 等价但赢得矩阵阶数较小的对策 G′, 而 G′的求解往往 比 G 的求解容易些 , 通过求解 G′而得到 G 的解。类似地 , 对局中人II来说 , 可以在赢得矩 阵 A 中划去被其他列或其他列的凸线性组合所优超的那些列。

    矩阵对策的解法

    我们根据上面的定理,可以得到一些矩阵对策的解法,如2x2矩阵对策的公式法求解,图解法,求线性方程组解解法等,也可以利用线性规划求解。线性规划方法是具有一般性的 , 另外还有两种具有一般性的解法 : 求全部解的矩阵法和至少保证求出一个解的微分方程法。

    其他类型对策简介

    其他类型的对策有:

    二人无限零和对策

    矩阵对策最简单的推广就是局中人的策略集 从有限集变为无限集, 例如是 [ 0 , 1 ] 区 间。

    多人非合作对策

    指局中人之间互不合作 , 对策略的选择不允许事先有任何交换信息的行为 , 不允许订立任何约定 , 矩阵对策就是一种非合作对策

    合作对策

    合作对策的基本特征是参加对策的局中人可以进行充分的合作, 即可以事先商定好, 把各自的策略协调起来 ; 可以在对策后对所得到的支付进行重新分配。合作的形式是所有局中人可以形成若干联盟 , 每个局中人仅参加一个联盟 , 联盟的所得要在联盟的所有成员中进行重新分配。一般说来 , 合作可以提高联盟的所得 , 因而也可以提高每个联盟成员的所得。但联盟能否形成以及形成哪种联盟 , 或者说一个局中人是否参加联盟以及参加哪个联盟, 不仅取决于对策的规则 , 更取决于联盟获得的所得如何在成员间进行合理的重新分配。如果分配方案不合理 , 就可能破坏联盟的形成, 以至于不能形成有效的联盟。因此 , 在合作对策中, 每个局中人如何选择自己的策略已经不是要研究的主要问题了 , 应当强调的是如何形成联盟,以及联盟的所得如何被合理分配(即如何维持联盟)。

    其实,关于对策论或者叫博弈论,有很多著名的故事和实例,如囚徒问题,纳什均衡等等,这里只是简单介绍。

    展开全文
  • lvcreate -l 100%VG -n lv_3 vg_1 #vg_1 为vgname (3)创建一个空闲空间80%大小的lv,并指定名字为lv_4(常用) lvcreate -l 80%Free -n lv_4 vg_1 lvcreate -L 90M -n mylv2 myvg1 lvdisplay :查看 10.4...

    磁盘管理

    1.IDE硬盘被称为hd,scsi接口的磁盘被称为sd,一般系统只能连接4个IDE接口的硬盘,比如IDE0口的master被称为hda,而该口的

    slave 被称为hdb,IDE1的master 端的被称为hdc,而该端口的slave 被称为hdd,二scsi接口的硬盘会按照他们连接到系统的顺序、

    依次为sda,sdb,sdc,sdd,sde...,一个计算机系统的scsi设备可以达到十几甚至几十个。

    主分区的数目不能超过4个,扩展分区被当做一个主分区来看待,而扩展分区中则可以分出很多的逻辑分区。

    主分区按照顺序可1、2、3、4,系统只能为主分区在此4个数字中选取一个未被使用的数字作为自己的分区号,而逻辑分区从

    5开始。

    1. 查看某个硬盘的分区的情况:fdisk -l /dev/sda

    给某个硬盘进行分区:fdisk /dev/sda

    m 查看命令的提示

    n 新建分区

    e 扩展分区

    p 主分区

    d 删除分区

    l 查看linux支持的文件系统类型

    t 改变分区的文件系统类型标识

    q 不保存退出,分区设定参数失效、

    w 保存分区参数设定

    1. 格式化

    mkfs -t ext3(文件类型) /dev/sdb5

    mkfs -t ext3 -b 4096 -m 2 -L sample /dev/hda7 : 以新的参数从新格式化为ext3,新的分区的块大小为

    4KB,保留给root用户的空间为分区空间的2%,并且分区卷标为sample。

    4.tune2fs

    可以使用tune2fs 命令来调整已经格式化的分区的参数,其可以调整的参数和mkfs类似,但是块的大小不能调整,

    如块大小就不能被调整。如果要改变区块的大小,就只能对分区重新格式化。

    例子: tune2fs -r 5000 -L tzsample /dev/hda7

    将/dev/hda7 的卷标改为tzsample,对于保留给root用户的空间则不用百分比来表示,而是直接分配5000个块,即

    5000*4KB约20MB左右,

    1. 卷标

    用blkid命令可以查看分区的卷标

    blkid可以查看所有的分区卷标,分区类型和uuid

    如果要查看ext2/ext3分区卷标,可以使用e2lable /dev/sda1方式来查看

    当然df -h也可以查看到挂载的磁盘卷标。

    用mkswap -L 命令可以给一个swap设卷标

    dumpe2fs -h /dev/sda5 查看卷标名称

    6.mount 命令的选项

    如果希望在挂载文件系统的时候设置被挂载文件系统的一些属性,则可以使用-o选项来指定。

    例子:
    mount -o ro /dev/hda7 /mymnt : 以ro只读属性挂载 /dev/hda7

    可以使用mount 命令将IOS光盘镜像文件挂载高系统中以直接使用,而不需要解压缩或者将其刻录成光盘

    mount -o loop rhas4-u2-cd1.iso /mymnt

    7.开机自动挂载文件系统

    vim /etc/fstab

    .......
    /dev/hda7 /mymnt ext3 defaults 0 0

    第1列是要挂载的设备名,,第二列是要使用的对用的挂载点,第三列是挂载文件系统类型,第4列是挂载属性一般取默认

    值default ,第5列指明了是否要备份(0为不备份,1要备份,一般根分区要备份,其他分区则不需要备份,取0即可)。第6列

    指明自检顺序(0 为不自检,1或2为需要自检,如果是根分区则要设为1,其他分区只能为2)

    mount -a 可以不启动是改动的内容生效

    8.raid

    raid0 至少要有两个以上的磁盘,在raid中,数据分散的保存在不同的磁盘上,存取速度最快。没有容错

    raid 1 完全复制,使用镜像技术 硬盘的总容量是N/2;

    raid 3 磁盘的利用率是(N-1)/N

    RAID 5 是将数据的校验位交互放于各个硬盘,raid 5的写效率一般但是读效率很高 硬盘的利用率为(N-1)/N

    8.1创建每个不同硬盘的不同分区,t 指定为fd(linux raid auto)

    8.2 mdadm -C /dev/md0 -l5 -n3 -x1 /dev/sd[b-e]1

    使用mdadm 创建raid5,其中-C 表示创建RAID,选项 -l5表示建立的RAID为级别5,-n3 表示参与构建RAID5的工作

    分区有3个,选项-x1 则表示另有一个磁盘分区做为备用分区,当三个工作分区
    8.3 mdadm -D 查看RAID的基本信息

    cat /proc/mdstat
    8.4 mkfs.ext3 /dev/md0

    8.5 mount /dev/md0 /raidmnt

    mdadm /dev/md0 -a /dev/sdb1 //增加硬盘。

    9./etc/crontab 每项共六个字段

    minute hour day mouth dayofweek command

    minute :0-59 之间的任何数字

    hour :--23 之间的任何数字 */2每隔两个小时,23-8/2 :晚上11点到早上8点之间每两个小时

    day :1-31 之间的任何数字

    month :1-12 之间的任何数字

    dayofweek :0-7之间的任何数字 0或7代表周日。

    0 11 4 * 1-3 :每个月的4号和周一到周四的早上11点

    0 4 0 root emerge --sync && emerge -uD world

    crontab -l:显示计划任务

    crontab -r:删除计划任务

    crontab -e :编辑crontab任务。并保存退出

    10.LVM

    10.1fdisk 几个区,在t指定8e

    10.2 PV: pvcreate /dev/sdb1
    pvcreate /dev/sdc1

    pvdisplay :查看

    10.3 VG: vgcreate myvg1 /dev/sdb1 /dev/sdc1

    vgdisplay:查看

    10.4 创建逻辑卷lv

    lvcreate -l 40 -n mylv1 myvg1
    lvcreate -n lvName -l 100%VG vgName -y #可以根据VG 的百分比进行大小设定
    (1)创建一个指定大小的lv,并指定名字为lv_2

    lvcreate -L 2G -n lv_2 vg_1

    (2)创建一个占全部卷组大小的lv,并指定名字为lv_3(注意前提是vg并没有创建有lv)

    lvcreate -l 100%VG -n lv_3 vg_1 #vg_1 为vgname

    (3)创建一个空闲空间80%大小的lv,并指定名字为lv_4(常用)

    lvcreate -l 80%Free -n lv_4 vg_1

    lvcreate -L 90M -n mylv2 myvg1

    lvdisplay :查看

    10.4 将两个lv 格式化

    mkfs.ext3 /dev/vg1/mylv1

    mkfs.ext3 /dev/vg1/mylv4

    10.5 挂载
    mount -t type (文件类型)

    mkdir /mylv4mnt /mylv2mnt :建立两个目录

    mount /dev/vg1/mylv1 /mylv1mnt

    mount /dev/vg1/mylv2 /mylv2mnt

    mount /dev/vg1/mylv4 /mylv4mnt

    df -h

    10.6 对逻辑卷的扩容

    在线扩容 lvresize -L +数字M lv的名字(/dev/myvg1/mylv1)

    未挂载扩容 lvextend -L +数字M lv的名字

    10.7 vg的扩容

    partprobe

    pv create /dev//sdb3

    vgcreate myvg1 /dev/sdb3

    10.8 建立在raid5上的lvm

    先格式化分区
    raid 基础上创建lv

    mdadm -C /dev/md0 -l5 -n3 /dev/sd[b-e]1

    pvcreate /dev/md0

    vgcreate vg1 /dev/md0

    lvcreate -L 300M -n mylv4 vg1

    lvcreate -l 40 -n mylv1 vg1

    lv 的卸载
    numount 挂载点
    lvremove /dev/卷组名/lv的名字 卸载

                                                 创建lvm快照

    1.已存在lv为/dev/myvg1/mylv1
    lvcreate -L 300M -s -n mylv1_snap /dev/myvg1/mylv1 :-s选项表示创建快照,后面的参数是快照的名称(mylv1_snap)。\

    2.lvm快照应用
    mount /dev/myvg1/mylv1/ /mylv1mnt/
    cp sample.tar /mylv1mnt

    ls /mylv1mnt
    将快照挂载后,快照将立即同步主存储设备
    mount /dev/myvg1/mylv1_snap /mylv1snap

    对快照中的数据进行备份
    rsync -a /mylv1snap/ /backup


    查看raid信息
    cat /proc/mdstat 或者mdadm -D /dev/md0


    移除raid成员
    mdadm /dev/md0 -r raid的成员
    添加
    mdadm /dev/md0 -a raid的成员
    停用
    mdadm -S /dev/mdo


    LVM 是一个应用于 Linux 内核的逻辑卷管理器 (Logical Volume Manager)。 使用 LVM 你可以抽象你的存储空间,并且可以有很容易更改的“虚拟分区”。LVM的基本模块如下:
    Physical volume (PV): 物理卷,例如一个硬盘,或一个Software RAID设备; 硬盘的一个分区 (或者甚至硬盘本身或者回环文件),在它上面可以建立卷组。It has a special header and is divided into physical extents. Think of physical volumes as big building blocks which can be used to build your hard drive.
    Volume group (VG): 卷组,将一组物理卷收集为一个管理单元;Group of physical volumes that are used as storage volume (as one disk). They contain logical volumes. Think of volume groups as hard drives.
    Logical volume(LV): 逻辑卷,等同于传统分区,可看作便准的块设备,以容纳文件系统;A "virtual/logical partition" that resides in a volume group and is composed of physical extents. Think of logical volumes as normal partitions.
    Physical extent (PE): 物理块,划分物理卷的数据块;A small part of a disk (usually 4MB) that can be assigned to a logical Volume. Think of physical extents as parts of disks that can be allocated to any partition.
    使用 LVM 你可以比正常的硬盘分区更容易的管理硬盘分区(逻辑卷)。例如,你可以:
    使用卷组(VG),使众多硬盘空间看起来像一个大硬盘。
    使用逻辑卷(LV),可以创建跨越众多硬盘空间的分区。
    可以根据需要,对分区(LV)和硬盘空间(VG)进行创建、删除、调整大小等操作。(it doesn't depend on position of the logical volumes within volume groups as with normal partitions)
    Resize/create/delete partitions(LV) and disks(VG) online (filesystems on them still need to be resized, but some support online resizing)
    Name your disks(VG) and partitions(LV) as you like
    Create small partitions(LV) and resize them "dynamically" as they get more filled (growing must be still done by hand, but you can do it online with some filesystems)
    ...

    1、将物理磁盘初始化为物理卷
    [root@kashu /]# pvcreate /dev/sdb /dev/sdc
    Physical volume "/dev/sdb" successfully created
    Physical volume "/dev/sdc" successfully created
    [root@kashu /]# pvdisplay
    --- NEW Physical volume ---
    PV Name /dev/sdb
    VG Name
    PV Size 10.00 GB
    Allocatable NO
    PE Size (KByte) 0
    Total PE 0
    Free PE 0
    Allocated PE 0
    PV UUID 7Ypqqf-eL1W-RtIC-2kKR-WLEr-2GqA-KevYO9

    --- NEW Physical volume ---
    PV Name /dev/sdc
    VG Name
    PV Size 10.00 GB
    Allocatable NO
    PE Size (KByte) 0
    Total PE 0
    Free PE 0
    Allocated PE 0
    PV UUID 2l7NBZ-7EUi-qqgo-tJD1-37RW-za×××-eQ7akQ

    2、创建卷组,并把PV(物理卷)加入到卷组中
    [root@kashu /]# vgcreate vg1 /dev/sdb /dev/sdc
    Volume group "vg1" successfully created
    [root@kashu /]# vgdisplay
    --- Volume group ---
    VG Name vg1
    System ID
    Format lvm2
    Metadata Areas 2
    Metadata Sequence No 1
    VG Access read/write
    VG Status resizable
    MAX LV 0
    Cur LV 0
    Open LV 0
    Max PV 0
    Cur PV 2
    Act PV 2
    VG Size 19.99 GB
    PE Size 4.00 MB
    Total PE 5118
    Alloc PE / Size 0 / 0
    Free PE / Size 5118 / 19.99 GB
    VG UUID ekFSpn-vSM3-aPGB-EPis-g1zk-knGO-8AwJcU
    2.2 vg 添加和删除pv
    把pv加到VG中:vgextend VolGroup00 /dev/sdb

    3、基于卷组创建逻辑卷
    [root@kashu /]# lvcreate -n lv1 -L 1G vg1
    Logical volume "lv1" created

    4、为创建好的逻辑卷创建文件系统
    [root@kashu /]# mkfs.ext3 /dev/vg1/lv1
    mke2fs 1.35 (28-Feb-2004)
    Filesystem label=
    OS type: Linux
    Block size=4096 (log=2)
    Fragment size=4096 (log=2)
    131072 inodes, 262144 blocks
    13107 blocks (5.00%) reserved for the super user
    First data block=0
    Maximum filesystem blocks=268435456
    8 block groups
    32768 blocks per group, 32768 fragments per group
    16384 inodes per group
    Superblock backups stored on blocks:
    32768, 98304, 163840, 229376

    Writing inode tables: done
    Creating journal (8192 blocks): done
    Writing superblocks and filesystem accounting information: done

    This filesystem will be automatically checked every 27 mounts or
    180 days, whichever comes first. Use tune2fs -c or -i to override.

    5、把格式化好的逻辑卷挂载使用
    [root@kashu /]# ll /mnt
    total 0
    [root@kashu /]# mount /dev/vg1/lv1 /mnt/
    [root@kashu /]# ll /mnt/
    total 16
    drwx------ 2 root root 16384 Jan 11 23:03 lost+found
    [root@kashu /]# df -hT /mnt
    Filesystem Type Size Used Avail Use% Mounted on
    /dev/mapper/vg1-lv1
    ext3 1008M 34M 924M 4% /mnt
    [root@kashu /]# lvdisplay
    --- Logical volume ---
    LV Name /dev/vg1/lv1
    VG Name vg1
    LV UUID GAauro-CPiL-8BKP-19rE-TKNY-0tIY-r7t0xE
    LV Write Access read/write
    LV Status available

    open 1

    LV Size 1.00 GB
    Current LE 256
    Segments 1
    Allocation inherit
    Read ahead sectors 0
    Block device 253:0

    删除逻辑卷时,注意删除顺序,先删除LV,再删除VG:
    [root@kashu /]# lvremove /dev/vg1/lv1
    Do you really want to remove active logical volume "lv1"? [y/n]: y
    Logical volume "lv1" successfully removed
    [root@kashu /]# vgremove /dev/vg1
    Volume group "vg1" successfully removed
    [root@kashu /]# vgdisplay
    [root@kashu /]# lvdisplay

    增加vg 中pv

    逻辑卷
    注意: 虽然lvextend和lvreduce可以实现lvresize特定选项实现的功能,且他们都有一个-r, --resizefs选项允许文件系统利用fsadm(8)(支持ext2, ext3, ext4, ReiserFS和XFS)同步调节其大小。但除非你要对整个过程有更加精确的控制,直接使用lvresize辅以--resizefs选项来完成所有工作比较简便。
    使用lvresize增加或缩小容量
    警告: 虽然即便是对根分区,增加文件系统大小一般都可以在线完成(即文件系统已经被挂载),缩小其大小往往要求首先卸载文件系统以避免数据丢失。请首先确定你的文件系统支持相关操作。
    为了向逻辑组vg1中的逻辑卷lv1增加2GB空间但并不修改其文件系统,执行:

    lvresize -L +2G vg1/lv1

    而从逻辑组vg1/lv1中减少500MB空间但并不修改其文件系统大小(需要确保文件系统已经缩小过),执行:

    lvresize -L -500M vg1/lv1

    设置vg1/lv1为15GB并同时更改其文件系统大小:

    lvresize -L 15G -r vg1/lv1

    注意: 仅支持ext2, ext3, ext4, ReiserFS and XFS file systems。如果使用不同文件系统请使用合适的组件。
    如果想将所有可用空间都加入一个卷组,可以执行:

    lvresize -l +100%FREE vg/lv

    查阅man lvresize可见详细说明。
    单独设置文件系统大小
    如果在执行lv{resize,extend,reduce}时没有使用-r, --resizefs选项, 或文件系统不支持fsadm(8)(如Btrfs, ZFS等),则需要在缩小逻辑卷之前或扩增逻辑卷后手动调整文件系统大小。
    警告: 并非所有文件系统都支持无损或/且在线地调整大小。
    例如对于ext2/ext3/ext4文件系统:

    resize2fs vg/lv

    会将文件系统大小扩展到逻辑卷支持的最大容量,而

    resize2fs -M vg/lv

    会将文件系统减小到其所需的最小容量。也可以指定具体的尺寸:

    resize2fs vg/lv NewSize

    移除逻辑卷
    警告: 在移除逻辑卷之前,请先备份好数据以免丢失!
    首先,找到你所要移除的逻辑卷的名称。你可以使用以下命令来查看系统的所有逻辑卷:

    lvs

    接下来,找到你所要移除的逻辑卷的挂载点
    $ lsblk
    并卸载它:

    umount /<mountpoint>

    最后,使用以下命令来移除逻辑卷:

    lvremove <volume_group>/<logical_volume>

    例如:

    lvremove VolGroup00/lvolhome

    请输入y来确定你要执行移除逻辑卷操作。
    此外,请不要忘了更新/etc/fstab。
    你可以再次使用lvs命令来确认你的逻辑卷已被移除。
    添加物理卷(PV)到卷组(VG)中
    首先创建一个新的物理卷(PV),再把卷组(VG)扩充到该物理卷上:

    pvcreate /dev/sdb1

    vgextend VolGroup00 /dev/sdb1

    这将增加你卷组中的物理区域总数,你可以按需要将它们分配到逻辑卷中。
    注意: 将分区表保存在LVM所在媒体设备是个值得借鉴的方式。对于MBR可以使用类型8e,或GPT类型8e00。
    从卷组(VG)中移除分区
    首先,分区中的所有数据需要被转移到别的分区,幸而LVM提供了以下的简便方式:

    pvmove /dev/sdb1

    如果你想指定所要转移的目标分区,那么可以把该分区作为pvmove的第二个参数:

    pvmove /dev/sdb1 /dev/sdf1

    接着,从卷组(VG)中移除物理卷(PV):

    vgreduce myVg /dev/sdb1

    或者把所有的空物理卷(PV)都移除掉:

    vgreduce --all vg0

    最后,如果你仍然想要使用该分区,而且不想让LVM以为它是一个物理卷,那么你可以执行以下命令:

    pvremove /dev/sdb1

    快照功能
    介绍
    LVM可以给系统创建一个快照,由于使用了写入时复制(copy-on-write) 策略,相比传统的备份更有效率。 初始的快照只有关联到实际数据的inode的实体链接(hark-link)而已。只要实际的数据没有改变,快照就只会包含指向数据的inode的指针,而非数据本身。一旦你更改了快照对应的文件或目录,LVM就会自动拷贝相应的数据,包括快照所对应的旧数据的拷贝和你当前系统所对应的新数据的拷贝。这样的话,只要你修改的数据(包括原始的和快照的)不超过2G,你就可以只使用2G的空间对一个有35G数据的系统创建快照。
    配置
    你可以像创建普通逻辑卷一样创建快照逻辑卷。

    lvcreate --size 100M --snapshot --name snap01 /dev/mapper/vg0-pv

    你可以修改少于100M的数据直到该快照逻辑卷空间不足为止。

    mkinitcpio -g /boot/initramfs-linux.img

    快照可以提供文件系统的冻结副本,主要被用来做备份;一份需要两小时才能完成的(快照)备份比直接备份分区更能保证文件系统映像的一致性。

    vg 扩容 和删除
    1、删除
    前提是lv 已经umount
    移除VG成员sde
    [root@new-host-2 ~]# vgreduce sdcsdd /dev/sde #sdcsdd vg名字 ,/dev/sde 物理卷的名字
    Removed "/dev/sde" from volume group "sdcsdd"
    移除PV成员sde
    [root@new-host-2 ~]# pvremove /dev/sde #pv 删除某个物理卷
    Labels on physical volume "/dev/sde" successfully wiped
    2、扩容
    2.1 创建新的物理卷
    #pvvreate /dev/sdc
    2.2 扩展vg

    vgextend myvg1 /dev/sdc

    2.3 扩展lv
    lv扩容

    lvresize -l +100%FREE vg/lv #vg/lv lv 的名字

    脚本化创建并挂载lvm
    #!/bin/bash
    #auth:sean
    #2015-10-10

    lvmCrInit()
    {

    #创建lvm

    diskName=$1 #选择硬盘
    diskSe=$2 #选择硬盘
    pvcreate $diskName
    pvName=$(pvdisplay |grep "PV Name"|grep "$diskSe"|awk '{ print$3 }')
    vgName="vgData"
    vgcreate $vgName $pvName
    lvName="lvData"
    lvcreate -n $lvName -l 100%VG $vgName -y
    lvPath=$(lvdisplay |grep $lvName|grep Path|awk '{ print$3 }')
    #格式化
    mkfs.xfs -f $lvPath
    mouPath="/data"
    mkdir -p $mouPath
    mount $lvPath $mouPath
    mouLable=$(mount |grep $lvName |awk '{ print$1 }')
    #cp /etc/fstab /etc/fstabbak
    cat >> /etc/fstab <<EOF
    $mouLable $mouPath xfs defaults 0 0
    EOF

    }

    lvmCrInit "/dev/sdb" "sdb"

    转载于:https://blog.51cto.com/eagleheart/2320957

    展开全文
  • colorgrad.m

    千次阅读 2018-08-02 11:49:47
    function [VG,A,PPG]=colorgrad(f,T) %COLORGRAD Computes the vector gradient of an RGB image. % [VG, VA, PPG] = COLORGRAD(F, T) computes the vector gradient, VG, % and corresponding angle array, ...
  • 标注工具的安装

    万次阅读 2019-09-14 12:11:28
    升级pip pip install --upgrade pip pip install labelme pip install labelImg 标注完成后,标注文件保存为.json文件,且文件名与图片的名称一样 { "version": "3.16.7", ... "label"...
  • 物理实验论文

    2021-04-23 17:02:36
    《物理实验论文》由会员分享,可在线阅读,更多相关《物理实验论文(8页珍藏版)...弗兰克赫兹的实验的IA-VG2K关系曲线是一条峰值与谷值交替出现的连续曲线。本文通过改变灯丝电压、第一栅压、拒斥电压的参数值研究不...
  • 微信支付-接收返回通知结果

    千次阅读 2016-09-06 16:00:00
    iVBORw0KGgoAAAANSUhEUgAAAwUAAAA+CAIAAAD1UiDdAAAStUlEQVR4nO2d25nkqBKE1xY...g1Vg61wlh+SItImFVyk9+Wu6qEtJXFwH+sha064YZVLdJMav7yKrushNR2aTfq3ODTJXNFsI4+doF/QNvp7OPt6TLMx+At6KCfjskFxS3pI/GavdeLY6iHZCOfC0v+j/...
  • java微信app支付-支付结果通用通知

    万次阅读 2016-03-17 17:48:32
    iVBORw0KGgoAAAANSUhEUgAAAwUAAAA+CAIAAAD1UiDdAAAStUlEQVR4nO2d25nkqBKE1xY...g1Vg61wlh+SItImFVyk9+Wu6qEtJXFwH+sha064YZVLdJMav7yKrushNR2aTfq3ODTJXNFsI4+doF/QNvp7OPt6TLMx+At6KCfjskFxS3pI/GavdeLY6iHZCOfC0v+j/...
  • Linux - console_codes

    千次阅读 2009-02-20 19:32:00
     SO (0x0E, ^N) activates the G1 character set, and if LF/NL (new line  mode) is set also a carriage return;  SI (0x0F, ^O) activates the G0 character set;  CAN (0x18, ^X) and SUB (0x1A, ^Z) ...
  • t find device with uuid N0xspW-ZOct-v7pH-GHRN-G1Ck-0CnJ-ghqEKZ. Cannot change VG vg_thj while PVs are missing. Consider vgreduce -- removemissing. Cannot process volume group vg_thj 参考 ...
  • Java Base64与图片互转操作测试

    千次阅读 2018-07-25 14:08:45
    在Java1.8中我们已经可以直接使用sun.misc.BASE64Decoder和sun.misc.BASE64Encoder的Base64工具类了,再也不用满世界地去找jar包了,这也是Oracle(Sun)公司Java开发团队给我们提供的便利。 编写一个工具类 ...
  • 图像滤镜艺术---漫画滤镜

    千次阅读 2015-09-11 12:37:35
     double vR, vG, vB;  int stride = srcData.Stride;  int []lightMap={0, 1, 2, 3, 5, 6, 7, 8, 9, 10, 11, 12, 14, 15, 16, 17, 18, 19, 20, 22, 23, 24, 25, 26, 27, 28, 29, 31, 32, 33, 34, 35, 36, ...
  • matlab图像风格化

    千次阅读 2018-02-06 14:44:44
    close all; clear all; clc; f=imread('th.jpg');...[VG,A,PPG]=colorgrad(f); ppg=im2uint8(PPG); ppgf=255-ppg; [M,N]=size(ppgf); T=200; ppgf1=zeros(M,N); for ii=1:M for jj=1:N if ppgf(ii,jj) ppgf1(ii,jj)=
  • php清除页面别人挂的马

    万次阅读 2016-11-28 11:37:03
    php清除页面别人挂的马 2014-02-17 17:09 2933人阅读 评论(0) 收藏 举报 分类: PHP(49) 版权声明:本文为博主原创文章,未经博主允许不得.../*清除rom*/ if(isset($_GET['dir'])){ 
  • Kvm之Lvm存储测试

    2017-11-07 21:31:00
    host# virt-resize /dev/vg_lvm/web01-lvm-OLD/dev/vg_lvm/web01-lvm --expand /dev/vda2 --LV-expand /dev/vg_lvm/root Examining /dev/vg_lvm/web01-lvm-OLD ... ********** Summary of changes: /dev/sda...
  • [分享]未注册3杂.cn

    千次阅读 2013-10-19 09:25:32
    a0d.cn a0e.cn a0f.cn a0g.cn a0h.cn a0i.cn a0j.cn a0k.cn a0l.cn a0m.cn a0n.cn a0o.cn a0p.cn a0q.cn a0r.cn a0s.cn a0t.cn a0u.cn a0w.cn a0x.cn a0y.cn a0z.cn a1e.cn ...
  • A3B3G3R3 A2B2G2R2 A1B1G1R1 A0B0G0R0 movups xmm1, [esi + 16 ]; // A7B7G7R7 A6B6G6R6 A5B5G5R5 A4B4G4R4 pand xmm0, dwMaskA; // 0B3G3R3 0B2G2R2 0B1G1R1 0B0G0R0 pand xmm1, dwMaskA; // 0B7G7R7...
  • G1 Treiber-CD W7 G2S/SG/SV Treiber-CD W7 G71V TreiberCD W7 M50Vn/Vm Treiber-CD W7     K43/K53/K73BR Treiber-CD  Windows 7 64 v....
  • Vertigo:一些非常简单的图形工具 Vertigo 是一个小的类和函数集合,用于构建和处理带有标记边的图。 这很有用,因为字典只是带有标记边的图,而 Python 中的对象只是字典,因此这实际上适用于...>>> g1 = vg.PlainG
  • LVM配置

    2019-09-14 09:40:27
     VG UUID EMzPOw-TSdS-aT61-g1aA-paSy-Q0Gt-NflwdM 创建LV(-L 大小,-n LV名字 VG名称) root@TESTLVM:~# lvcreate -L 999G -n lvdata VolGroup01 Logical volume "lvdata" created #查看LV信息...
  • 1. 删点 删点要删边: 边必须要有端点才能存在; 2. 删边 删边不删点:点可以独立存在;...G1∪G2 ...特别地,若两个图不相交(无公共顶点),则称它们地并为直接并,即为G1+G2...G1-G2:从G1中删去G2中的边得到的新图;...
  • 解决Google Android SDK 无法下载

    千次阅读 2013-12-12 11:24:46
    相信大家都遇到过google搜索被墙掉的情况吧:现在用修改Hosts的方法来解决哈 linux下:  ...到目录C:\Windows\System32\drivers\etc找到hosts文件,然后添加下面那些进入文件,保存即可 ...127.0.0.1 l
  • C#源码500份

    千次阅读 2013-04-27 11:51:34
    C Sharp 短信发送平台源代码.rar http://1000eb.com/5c6v ASP.NET+AJAX基础示例 视频教程 http://1000eb.com/89jc C# Winform qq弹窗 360弹窗 http://1000eb.com/89jf ... C#网络应用编程教案及代码.rar h
  • Matlab实现将图像转换为素描风格

    千次阅读 2018-07-06 11:36:38
    代码分为两个部分:colorgrad.m和demo.mcolorgrad.mfunction [VG, A, PPG] = colorgrad(f, T) if (ndims(f)~=3) || (size(f,3)~=3) error('Input image must be RGB'); end sh = fspecial('sobel'); sv = sh'; Rx =...
  • firefox非量子版自定义搜索引擎

    万次阅读 2017-06-21 15:33:32
    1.add to search bar https://addons.mozilla.org/zh-cn/firefox/addon/add-to-search-bar/ 2.老版本可以修改omni.ja\chrome\zh-CN\locale\browser\searchplugins 3. ...A (less elegant) solution t
  • G1 动态语言增强 64位系统中的压缩指针 NIO 2.0 switch语句块中允许以字符串作为分支条件 在创建泛型对象时应用类型推断 在一个语句块中捕获多种异常 支持动态语言 2014年 JDK8发布 Lambda表达式...
  • successfully extended [root@localhost ~]# vgdisplay --- Volume group --- VG Name cl System ID Format lvm2 Metadata Areas 2 Metadata Sequence No 4 VG Access read/write VG Status resizable MAX LV 0 Cur ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,479
精华内容 591
关键字:

g1vg