zoukankan      html  css  js  c++  java
  • 多目标规划——fgoalattain

    多目标规划

    多个目标函数,之间可以用他们的重要程度分析,来一次进行这个序贯算法,当然也可以无限逼近的方案——

    clc,clear;
    % 约束
    a = [-1 -1 0 0
        0 0 -1 -1
        3 0 2 0
        0 3 0 2];
    b = [-30
        -30
        120
        48];
    % 求两次单一目标函数
    c1 = [-100 -90 -80 -70];
    c2 = [0 3 0 2];
    ​
    % 单一目标值 g1,g2
    [x1,g1] = linprog(c1,a,b,[],[],zeros(4,1));
    [x2,g2] = linprog(c2,a,b,[],[],zeros(4,1));
    ​
    % 组合多目标规划,fgoalattain
    g3 = [g1
        g2];
    ​
    [x,fval] = fgoalattain('Fun',rand(4,1),g3,abs(g3),a,b,[],[],zeros(4,1));

    如何设置权重weight呢?

    比如:

     

    第一个式子的重要程度是20%,第二个式子的重要程度是80%。

    哈哈,想到这里,其实是错误的,可以有这种想法,但是我们的多目标规划问题,就是要无限逼近这两个目标,不存在说两个式子哪个重要。哪个重要,还不如用我们的之前的那个序贯算法呢。看看MATLAB官方文档是如何说的这个参数。

    A weighting vector to control the relative underattainment or overattainment of the objectives in fgoalattain. When the values of goal are all nonzero, to ensure the same percentage of under- or overattainment of the active objectives, set the weighting function to abs(goal). (The active objectives are the set of objectives that are barriers to further improvement of the goals at the solution.)Note Setting a component of the weight vector to zero will cause the corresponding goal constraint to be treated as a hard constraint rather than as a goal constraint. An alternative method to set a hard constraint is to use the input argument nonlcon.
    When the weighting function weight is positive, fgoalattain attempts to make the objectives less than the goal values. To make the objective functions greater than the goal values, set weight to be negative rather than positive. To make an objective function as near as possible to a goal value, use theEqualityGoalCount option and put that objective as the first element of the vector returned by fun (see the preceding description of fun and options).
  • 相关阅读:
    Windows 2008 server + IIS 7 设置身份模拟(ASP.NET impersonation)
    记录windows操作系统启动日志
    C# 重启计算机的问题
    AcWing 1086 恨7不是妻
    AcWing 1084. 数字游戏 II
    AcWing 1083. Windy数
    golang学习笔记 生成JSON及解析JSON 清明
    WEB前端底层知识之浏览器是如何工作的(2)渲染引擎
    ASP.NET MVC Razor 输出没有编码的HTML字符串
    ext.grid的配置属性和方法
  • 原文地址:https://www.cnblogs.com/TreeDream/p/8309243.html
Copyright © 2011-2022 走看看