比如我们求解这样的一个问题:
我们需要配置基本的环境,首先记得按顺序安装模块:
pip install numpy
pip install mkl
pip install cvxopt
pip install scs
pip install ecos
pip install osqp
再:
pip install cvxpy
完整代码如下:
# coding=gbk
"""
作者:川川
@时间 : 2022/1/30 0:35
群:428335755
"""
import cvxpy as cp
from numpy import array
c = array([40, 90]) # 定义目标向量
a = array([[9, 7], [-7, -20]]) # 定义约束矩阵
b = array([56, -70]) # 定义约束条件的右边向量
x = cp.Variable(2, integer=True) # 定义两个整数决策变量
obj = cp.Minimize(c * x) # 构造目标函数
cons = [a * x <= b, x >= 0] # 构造约束条件
prob = cp.Problem(obj, cons) # 构建问题模型
prob.solve(solver='GLPK_MI', verbose=True) # 求解问题
print("最优值为:", prob.value)
print("最优解为:\n", x.value)
运行结果如下:
由于注释很详细,我就没啥好说的了,如果你有不懂,可以评论区留言,或者加我联系方式问我。
模块安装:
pip install scipy
首先要转化为标准的式:
求解标准式代码如下:
from scipy import optimize
import numpy as np
# 求解函数
res = optimize.linprog(c, A, b, Aeq, beq, LB, UB, X0, OPTIONS)
# 目标函数最小值
print(res.fun)
# 最优解
print(res.x)
标准形式是<=,如果是>=,则在两边加上符号-。
举个例子如下:
求解代码为:
from scipy import optimize
import numpy as np
# 确定c,A,b,Aeq,beq
c = np.array([2, 3, -5])
A = np.array([[-2, 5, -1], [1, 3, 1]])
B = np.array([-10, 12])
Aeq = np.array([[1, 1, 1]])
Beq = np.array([7])
# 求解
res = optimize.linprog(-c, A, B, Aeq, Beq)
print(res)
运行如下:
解释一些结果:
《机器学习线性代数基础:Python语言描述》的优势:本书以机器学习涉及的线性代数核心知识为重点,进行新的尝试和突破:从坐标与变换、空间与映射、近似与拟合、相似与特征、降维与压缩这5个维度,环环相扣地展开线性代数与机器学习算法紧密结合的核心内容。
感兴趣可以自行购买:
京东自营购买链接:
https://item.jd.com/12566109.html
当当自营购买链接:
http://product.dangdang.com/27921482.html
IDEA的主题很多,有时候自己忘记怎么设置主题1、下载自己喜欢的主题包http://www.riaway.com/index.php我最喜欢的是EasyOnTheEyes,至少眼睛没那么累2、下载完毕之后打开IDEA,点击菜单栏的File,再点击Import Settings...看图3、选择你下载的那个jar主题包,然后点击OK重启IDEA4、重启之后按Ctrl+Al...
一、com.microsoft.sqlserver.jdbc.TDSChannel enableSSL警告: TDSChannel ( ConnectionID:2 TransactionID:0x0000000000000000) SSL handshake failed: java.lang.RuntimeException: Could not generate DH keypair...
数组转字符串1.import java.util.Arraysint[] arr = {1,2,3,4,5,6};String newArr = Arrays.toString(arr);System.out.println(newArr);// 执行结果[1, 2, 3, 4, 5, 6]使用这个方法后续打印数组就更方便一些.Java 中提供了 java.util.Arrays 包, 其中包含了一些操作数组的常用方法.2.public class TestDemo {
flutter条形码Bar charts are useful ways to display data to a user, and with the use of the charts_flutter charting library, it’s easier than ever! 条形图是向用户显示数据的有用方法,并且通过使用charts_flutter图表库,它比以往任何时候都容易! ...
AttributeError: Can’t get attribute ‘xxx’ on <module ‘main’ from ‘xxx’ 另一种可能的解决办法问题重述:我在学习pytorch时,跟着网课学到使用pickle模块序列化Word2Seq类,并将该类序列化保存在ws.pkl文件中。然后我又创建了lib.py文件使用下面代码反序列化ws.pkl时出现了该问题。 ws = pickle.load(open('ws.pkl', 'rb')) 先说明第一种解决办法(该方法并不总是有效):
1.了解微信小程序:微信小程序,小程序的一种,英文名Wechat Mini Program,是一种不需要下载安装即可使用的应用张小龙发布时间2017年1月9日2.微信小程序和普通H5的区别:a. 微信小程序用开发者工具来查看预览页面,H5用浏览器来查看渲染页面b. 微信小程序扩展了底层能力,H5调用底层能力比较弱c. 微信小程序没有完整的JS API,但H5拥有完整的JS API(EcmaScript,DOM,BOM)开发能力d. 渲染机制不同:微信小程序渲染线线程和逻辑线程是独立并行运行的,
FlatList使用详解及源码解析前言长列表或者无限下拉列表是最常见的应用场景之一。RN 提供的 ListView 组件,在长列表这种数据量大的场景下,性能堪忧。而在最新的 0.43 版本中,提供了 FlatList 组件,或许就是你需要的高性能长列表解决方案。它足以应对大多数的长列表场景。一、功能简介FlatList高性能的简单列表组件,支持下面这些常用的功能:完全跨平台。支持水平...
实例#!/bin/bashtrap 'onCtrlC' INTfunction onCtrlC () { echo 'Ctrl+C is captured'}while true; do echo 'I am working!' sleep 1donehttps://www.jianshu.com/p/b81783fee7da
椎体模型如下图思路:不断改变椎体的偏航角(Y轴),从而实现选择代码://获取锥体的坐标var position = Cesium.Cartesian3.fromDegrees(108.95813233063066,34.22065543077288,30);var heading = 0;//偏航角(Y轴) var pitch = 0; //俯仰角(X轴)var roll = 0;//翻滚角(Z轴)//封装改变偏航角的方法function diaoyong() { heading =
ssh连接虚拟机因为我的kali是在virtualbox下的虚拟机,我的宿主机是Macbook。如果想在MacBook下的Iterm2(终端shell)操作虚拟机,则用ssh连接虚拟机即可。一般的简单配置十分简单服务端:vim /etc/ssh/sshd_config # 把几个注释打开吧Port 22 #可以自己指定一个端口号来用。只要连接的时候客户端加入-p
数电课设交通灯设计设计一个红绿灯控制器控制器,模拟十字路口交通灯的状态。设计要求:南北主干道红灯时间小于东西干道红灯时间,东西干道红灯时间为学号尾数两位(20以前的+20),黄灯为5秒,红灯时间=绿灯时间+黄灯时间。东西、南北4个方向的红绿黄灯时间都用两个数码管分别显示,递减变化。交通灯以红、绿、黄循环变化,并且(1)东西方向绿灯亮,南北方向红灯亮。(2)东西方向黄灯亮,南北方向红灯亮。(3)东西方向红灯亮,南北方向绿灯亮。(4)东西方向红灯亮,南北方向黄灯亮。...
一、eclipse 配置 tomcat 服务器:1、 Window->Preferences->Server->Runtime Environments,点击 Add:2、选择 Tomcat 版本,然后点击 Next:3、点击 Browse,选择 Tomcat 所在的目录,下面 JRE: 选择之前配置好的 Java JDK,点击 Finish,就配置好了:...