这里总结一下常用的规划模型的写法   以下内容包括  线性规划  整数规划  非线性规划   非线性+部分变量整数规划(这里尝试一种方法,如果有问题请大家指正)

首先是简单的线性规划模型
一般是使用下图这样的写法,使用 linprog 函数

[x,fval]=linprog(f,A,b,Aeg,beg,lb,ub,x0)  %x0对应着初值,f对应系数的列向量,这里求解的是标准型,即min 下方是<=号的约束条件

f=[-4 3 2]';A=[1 -2 2;2 -1 -1];b=[8;-4];Aeg=[-1 0 1];beg=[2]lb=[1,0,0]';ub=[4,4,4]';[x,fval]=linprog(f,A,b,Aeg,beg,lb,ub);

非线性求解和非线性约束时fmincon函数

这里有四种option对应着四种不同的非线性规划的求解方法
option = optimoptions('fmincon','Algorithm','interior-point')  这里定义option, 后面一般可以有四种方法:interior point算法 (内点法)(也是matlab的默认算法);
'sqp';'active-set';'trust-region-reflective'

注意非线性约束的写法,这里举出一个三元的例子,用两个向量接收约束条件,一个不等式向量,一个等式向量(我下面就直接调用这个函数了)注意如果这里的等式约束或是不等式约束不存在的话,直接定义成空集就可以了

这里放一个fmincon函数的例子   from  https://blog.csdn.net/Arcann/article/details/109563868?ops_request_misc=&request_id=&biz_id=102&utm_term=matlab%20nonlcon%E7%94%A8%E6%B3%95&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-5-109563868.pc_search_insert_download&spm=1018.2226.3001.4187

function y=demo(x)
    y=floor(x(1)^2+x(2)^2+x(3)^2+x(4)^2);
end

function [g,h]=nonlfun(x)
    g(1) = - x(1).^2 + x(2) - x(3).^2;
    g(2) = (x(1) + x(2).^2 + x(3).^3 - 20);
    % g代表不等式约束,Matlab中默认g<=0,所以这里取相反数
    h(1) = - x(1).^2 - x(2).^2 + 2;
    h(2) = x(2) + 2 * x(3).^2 - 3;
    % h代表等式约束    
end

 option = optimoptions('fmincon','Algorithm','interior-point');x0=[1 1 1 1 ]';lb=[0 0 0 0 ]';ub=[3 3 3 3 ]';A=[1 2 3 4;2 1 4 3];b=[5;7];Aeq=[1 1 1 1];beq=[8];[x,fval] = fmincon(@demo,x0,A,b,Aeq,beq,lb,ub,@nonlfun,option);

这里再来看一个matlab中的整数规划问题(from 清风数学建模)

 %% 背包问题(货车运送货物的问题)
c = -[540 200 180 350 60 150 280 450 320 120];  % 目标函数的系数矩阵(最大化问题记得加负号)
intcon=[1:10];  % 整数变量的位置(一共10个决策变量,均为0-1整数变量)
A = [6 3 4 5 1 2 3 5 4 2];  b = 30;   % 线性不等式约束的系数矩阵和常数项向量(物品的重量不能超过30)
Aeq = []; beq =[];  % 不存在线性等式约束
lb = zeros(10,1);  % 约束变量的范围下限
ub = ones(10,1);  % 约束变量的范围上限
%最后调用intlinprog()函数
[x,fval]=intlinprog(c,intcon,A,b,Aeq,beq,lb,ub)
fval = -fval

那么杠精就要问了,如果我是一个非线性规划然后再加上一些整数型的变量呢?我们不妨在这里做以下的一个尝试,还是沿用上面的非线性规划模型,把目标函数和约束函数稍加修改

function f = demo1(x)
      P=[2 3];%这里想要模仿的是可以取的几个离散解
      f=floor(x(1)^2+x(2)^2+x(3)^2)+P(floor(x(4))+1);
end
function [c,ceq] = nonlfun1(x)
    P=[2 3];%这里想要模仿的是可以取的几个离散解
    c(1) = - x(1).^2 + x(2) - x(3).^2;
    c(2) = P(floor(x(4))+1)*(x(1) + x(2).^2 + x(3).^3 - 20);
    % g代表不等式约束,Matlab中默认g<=0,所以这里取相反数
    ceq(1) = - x(1).^2 - x(2).^2 + 2;
    ceq(2) = x(2) + 2 * x(3).^2 - 3;
    % h代表等式约束    
end

option = optimoptions('fmincon','Algorithm','interior-point');x0=[1 1 1 1 ]';lb=[0 0 0 0.1 ]';ub=[3 3 3 1.1 ]';A=[1 2 3 4;2 1 4 3];b=[5;7];Aeq=[1 1 1 1];beq=[8];[x1,fval1] = fmincon(@demo1,x0,A,b,Aeq,beq,lb,ub,@nonlfun1,option);

这里尝试着对于目标函数和非线性约束都进行了整数的限制,至少程序没有报错,这里的正确性留待讨论 (最后取解的时候记得把x里面对应的整数部分拿函数里的P处理一下)

规划问题——尝试 非线性规划+部分整数决策变量 的求解相关推荐

  1. 非线性规划(二): Matlab 求解约束极值问题

    非线性规划(一):定义与数值优化方法(梯度法.牛顿法.拟牛顿法.变尺度法) 非线性规划(二): Matlab 求解约束极值问题 目录 约束极值问题 1  二次规划         2  罚函数法 3 ...

  2. 外点罚函数法的MATLAB实现,一、非线性规划问题的几种求解方法1罚函数法(外点法).ppt...

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp高等教育&nbsp>&nbsp微积分 一.非线性规划问题的几种求解方法1罚函数法(外点法). ...

  3. BS1036-基于java+路径规划+CS架构实现的A星算法求解最短路径问题演示程序

    本基于java+路径规划+CS架构实现的A星算法求解最短路径问题演示程序,系统采用多层C/S软件架构,采用java 编程语言开发技术实现A*算法求解地图中的最短路径问题,实时获取计算用户在地图中设置的 ...

  4. 利用scikit中的遗传算法求解(整数01)约束规划实例详解教程+利用scipy.optimize求解约束规划问题

    注意标准形式 下面两个方法约束规划的一般标准形式为: 利用scikit-opt的遗传算法求解约束规划问题 先放上链接:scikit-opt网址 主要四个步骤: 下面依照此题多约束为例 可知该题有5个不 ...

  5. 【数据结构与算法】之深入解析“字符串转换整数 (atoi)”的求解思路和算法示例

    一.题目要求 请你来实现一个 myAtoi(string s) 函数,使其能将字符串转换成一个 32 位有符号整数(类似 C/C++ 中的 atoi 函数). 函数 myAtoi(string s) ...

  6. 【数据结构与算法】之深入解析“整数反转”的求解思路与算法示例

    一.题目要求 给你一个 32 位的有符号整数 x ,返回将 x 中的数字部分反转后的结果. 如果反转后整数超过 32 位的有符号整数的范围 [−231, 231 − 1] ,就返回 0. 假设环境不允 ...

  7. python最大公约数计算。从键盘接收两个整数_python如何求解两数的最大公约数

    题目: 给定两个自然数,求这两个数的最大公约数. 分析: 单看题目的话,非常简单,我们可以循环遍历自然数,如果能够整除两个自然数,就把这个数记下来,在这些记录中找到最大的一个. 但是这样做有几个缺点: ...

  8. 【路径规划-TSP问题】基于蚁群算法求解实际地图旅行商问题含Matlab源码

    1 内容介绍 旅行商问题的传统求解方法是遗 传算法,此算法收敛速度慢,并不能获得问题的最优解.为了求取旅行商问题的最优解,本文在阐述蚁群算法的基本原理,模型以及在旅行商问题中的实现过程的基 础上,提出 ...

  9. 【CS三维路径规划】布谷鸟灰狼算法、灰狼算法求解复杂地形下三维无人机路径规划问题【含Matlab源码 2216期】

    ⛄一.无人机三维路径规划简介 1 无人机航迹规划问题的数学模型 建立三维航迹规划问题的数学模型时, 不但考虑无人机基本约束, 还考虑复杂的飞行环境, 包括山体地形和雷暴威胁区. 1.1 无人机基本约束 ...

最新文章

  1. 推荐8个非常有逼格的实用软件,让你的办公更高效
  2. 独家 | 用Python Featuretools库实现自动化特征工程(附链接)
  3. Chapter10:观察者模式
  4. 链路层 ---《TCP/IP协议》卷一
  5. 阿里云 云服务器 ECS——创建与绑定密钥对
  6. 字符输出流写文本文件【Writer、FileWriter 、BufferedReader 】
  7. 我凭什么拿到了阿里、腾讯、今日头条3家大厂offer?这原因我服了
  8. 华中科技大学计算机预推免2021,华中科技大学光学与电子信息学院2021年推免预报名通知...
  9. linux中elf文件的作用,Linux中ELF格式文件介绍
  10. java math.floordiv,Math类的常用方法--田小江
  11. 车联网相关知识点整理
  12. Flex Builder 4.6切换语言
  13. springboot建筑造价师资格考试应试网站设计与实现毕业设计源码260839
  14. 连接服务器切换无线,怎么用路由器连接别人的wifi?
  15. OpenCVcv2.imread传入灰度图像,shape还是3通道
  16. JAVA-判断三阶矩阵是否满秩
  17. HDFS遍历子目录 Hadoop fs -ls -R path
  18. APP按下home键恢复到登录(主界面)
  19. C#用IIS发布网站后localhost打不开127.0.0.1可以打开
  20. 线性代数(第六版)同济大学 习题一 (1-4题)个人解答

热门文章

  1. RiSAWOZ中文任务型对话数据集
  2. 【cocos精品】正版《仙剑奇侠传》带你重温仙剑之旅
  3. 股票自动止损交易软件是什么?
  4. 自制Android RSS阅读器
  5. 清明的来历、清明的由来、清明诗歌
  6. OS | 哲学家问题
  7. 换个新头像(解决彩色图亮度不均衡)
  8. 怎么在贴吧做推广之养号篇
  9. html用vbscript显示当前日期,VBS日期(时间)格式化函数代码
  10. ETCD快速入门-01 ETCD概述