主要注意对于集中算法的理解,代码较为简单

import numpy as np
import cvxpy as cpc1 = np.array([-2, -3])
c2 = np.array([1, 2])
a = np.array([[0.5, 0.25], [0.2, 0.2], [1, 5], [-1, -1]])
b = np.array([8, 4, 72, -10])
x = cp.Variable(2, pos=True)# 1.线性加权法求解
obj = cp.Minimize(0.5*(c1+c2)@x)
con = [a@x <= b]
prob = cp.Problem(obj, con)
prob.solve(solver='GLPK_MI')
print('\n======1.线性加权法======\n')
print('解法一理想解:', x.value)
print('利润:', -c1@x.value)
print('污染排放:', c2@x.value)# 2.理想点法求解
obj1 = cp.Minimize(c1@x)
prob1 = cp.Problem(obj1, con)
prob1.solve(solver='GLPK_MI')
v1 = prob1.value  # 第一个目标函数的最优值
obj2 = cp.Minimize(c2@x)
prob2 = cp.Problem(obj2, con)
prob2.solve(solver='GLPK_MI')
v2 = prob2.value  # 第二个目标函数的最优值
print('\n======2.理想点法======\n')
print('两个目标函数的最优值分别为:', v1, v2)
obj3 = cp.Minimize((c1@x-v1)**2+(c2@x-v2)**2)
prob3 = cp.Problem(obj3, con)
prob3.solve(solver='CVXOPT')  # GLPK_MI 解不了二次规划,只能用CVXOPT求解器
print('解法二的理想解:', x.value)
print('利润:', -c1@x.value)
print('污染排放:', c2@x.value)# 3.序贯法求解
con.append(c1@x == v1)
prob4 = cp.Problem(obj2, con)
prob4.solve(solver='GLPK_MI')
x3 = x.value  # 提出最优解的值
print('\n======3.序贯法======\n')
print('解法三的理想解:', x3)
print('利润:', -c1@x3)
print('污染排放:', c2@x3)

在构建代码时,约束条件也可以这样写

from cvxpy import *
# Create two scalar optimization variables.
# 在CVXPY中变量有标量(只有数值大小),向量,矩阵。
# 在CVXPY中有常量(见下文的Parameter)
x = Variable() //定义变量x,定义变量y。两个都是标量
y = Variable()
# Create two constraints.
//定义两个约束式
constraints = [x + y == 1,x - y >= 1]
//优化的目标函数
obj = Minimize(square(x - y))
//把目标函数与约束传进Problem函数中
prob = Problem(obj, constraints)
prob.solve()  # Returns the optimal value.
print "status:", prob.status
print "optimal value", prob.value //最优值
print "optimal var", x.value, y.value //x与y的解
status: optimal
optimal value 0.999999999761
optimal var 1.00000000001 -1.19961841702e-11
//状态域被赋予'optimal',说明这个问题被成功解决。
//最优值是针对所有满足约束条件的变量x,y中目标函数的最小值
//prob.solve()返回最优值,同时更新prob.status,prob.value,和所有变量的值。

关于多目标规划的python代码相关推荐

  1. dataframe 输出标题_【学界】第八章:Python代码之数据输出、调参与算法总结

    作者:小杨 学校:广东工业大学 年级:研二 专业:工业工程 主要研究兴趣:强化学习.深度学习 简介:作者是广东工业大学2016级工业工程系研究生,师从广东工业大学教授.博士生导师.<工业工程&g ...

  2. 关于创建zeromq消息队列,设置和更改IP地址,远程可以访问,不只是本地链接。python代码。

    关于zeromq的创建,绑定本地,和绑定其他客户端的方法. 网上一大堆关于zmq的通信模式的介绍,包括三种类型,具体我就不在描述. 但是他们给的demo,都是创建本地作为server服务端,也作为cl ...

  3. python代码怎么写出色_如何写出更具有Python风格的代码,五分钟教会你!

    我们都喜欢 Python,因为它让编程和理解变的更为简单.但是一不小心,我们就会忽略规则,以非 Pythonic 方式编写一堆垃圾代码,从而浪费 Python 这个出色的语言赋予我们的优雅.Pytho ...

  4. OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式...

    OpenCV中图像以Mat类型保存时各通道数据在内存中的组织形式及python代码访问各通道数据的简要方式 以最简单的4 x 5三通道图像为例,其在内存中Mat类型的数据组织形式如下: 每一行的每一列 ...

  5. 主成分分析(PCA)Python代码实现

    主成分分析(Principal Components Analysis, PCA)简介可以参考: http://blog.csdn.net/fengbingchun/article/details/7 ...

  6. resnet keras 结构_Wandb用起来,一行Python代码实现Keras模型可视化

    大数据文摘出品 来源:wandb 编译:邢畅.宁静 在训练神经网络的过程中,我们可能会希望可视化网络的性能和中间的结构,很多可视化代码的冗长复杂使得我们望而却步,有没有一行代码就能解决可视化的所有问题 ...

  7. c# typescript_在任何IDE中从C#,Java或Python代码获取TypeScript接口的简单方法

    c# typescript by Leonardo Carreiro 莱昂纳多·卡雷罗(Leonardo Carreiro) 在任何IDE中从C#,Java或Python代码获取TypeScript接 ...

  8. Python代码编写过程中有哪些重要技巧?

    近几年,转行做Python技术岗的人越来越多,大家对于Python的关注越来越高,尤其是工作后,很多人都想知道Python代码编写过程中有哪些重要技巧?小编告诉大家,在编写Python代码过程中,除了 ...

  9. Python 代码规范

    前言 Python 学习之旅,先来看看 Python 的代码规范,让自己先有个意识,而且在往后的学习中慢慢养成习惯 目录 Python代码规范 一.简明概述 1.编码 如无特殊情况, 文件一律使用 U ...

最新文章

  1. 英特尔蚕食AMD和NVIDIA?
  2. php输出json html,html怎样格式化输出JSON数据
  3. mysql 管理端口_MySQL8新增管理端口
  4. css设置input框长度_干货极致分享浅谈CSS属性,有趣的盒模型。网友:哎呦不错哦!...
  5. 五、JavaScript基础知识,学会操作元素的简单事件(一)
  6. 11.14 mii-tool:管理网络接口的状态
  7. virtualbox安装时发生严重错误_Docker 安装(windows 10)
  8. linux远程调用的脚本在ssh时报错,linux:ssh远程调用tomcat脚本时候出错
  9. 蒙特卡洛模拟预测股票_使用蒙特卡洛模拟来预测极端天气事件
  10. 网页动态加载图片 通过JS和jquery实现。
  11. 95-241-100-源码-Flink语义-Flink的exectly-once系列之两阶段提交概述
  12. SSM 生成mapper中xml文件:未能解析映射资源:“文件嵌套异常
  13. hls解密key获取失败_请求帮助。M3U8里的加密key无法下载。
  14. 自主招生认可的英语竞赛有哪些
  15. 安装selenium时报错,Unable to create process using ‘D:\ProgramData\python.exe D:\ProgramData\Scripts\pip-s
  16. Error: Authentication fai1ed.解决办法
  17. 碧育服务器维护公告,Ubisoft+
  18. 关于Debug.Log的一点儿小知识
  19. matlab命令行窗口显示长度设置_MATLAB中如何设置坐标轴的显示长度?
  20. android系统流畅度排行,最流畅安卓手机排名:华为mate40Pro第六,第一堪比iOS!...

热门文章

  1. hduoj 2001
  2. apple watch可以使用第三方表盘了,Apple Watch 更换第三方表盘需求
  3. 【阿旭机器学习实战】【6】普通线性线性回归原理及糖尿病进展预测实战
  4. Created with Cocos |集结金庸三大IP《新射雕群英传》获畅销榜第五
  5. 2023餐饮业展,中国餐饮供应链展,江西餐饮食材展2月举办
  6. linux下mysql安装相关
  7. JVM—7—垃圾回收概述及相关算法
  8. 第六章 Detailed Routing [VLSL Physical Design 学习笔记 ]
  9. C/C++基础讲解(九十九)之经典篇(第几天/排序)
  10. 程序猿生存指南-62 鹊桥银河