CPLEXJava 3.简单的线性规划问题
1.历史文章
1.CPLEX&Java 1.简单的线性规划问题
https://blog.csdn.net/qq_40275637/article/details/109491891
2.CPLEX&Java 2.简单的线性规划问题
https://blog.csdn.net/qq_40275637/article/details/109513360
2.要解决的问题
下面我来详细解释一下这个问题,和背包问题比较相似,有限的质量和容量,怎么装载价值最大。
1.问题描述
①有一架载货飞机,有三个隔间可以装载货物,分别是头部,中间,尾部。每个小隔间有相应的质量和容量约束,如表1所示。为了保持飞行平衡,要求头部、中间、尾部装的货物质量必须成比例,与满载情况下的头部、中间、尾部货物质量比值一致。
②有四种商品,它们的质量、体积、利润如表2所示,飞机可以选择装载这四种商品的任意比例,放在任意位置,以达到利润最大。
2.模型:
①参数:
A:货物的集合,A={C1 ,C2 , C3 , C4 }
B:飞机隔间的集合,B={头部,中间,尾部}
xij :表示 i 货物在某个隔间 j 装载的质量
ai : i 货物的总质量
vi : i 货物的体积/吨
pi : i 货物的利润/吨
cj :j 隔间可容纳的货物质量
Vj :j 隔间可容纳的货物体积
y :某一个不确定比例
②目标函数:最大化总利润
③约束:略
3.Java代码
package com.cplex.youtube;
import ilog.concert.*;
import ilog.cplex.*;public class test03 {public static void main(String[] args) {// TODO Auto-generated method stubsolveme();} public static void solveme() {int n = 4;//cargosint m = 3;//compartmentsdouble[] p = {310.0, 380.0, 350.0, 285.0}; //profitdouble[] v = {480.0, 650.0, 580.0, 390.0}; //volume per ton of cargodouble[] a = {18.0, 15.0, 23.0, 12.0};//available weightdouble[] c = {10.0, 16.0, 8.0};//capacity of compartment double[] V = {6800.0, 8700.0, 5300.0}; //volume capacity of each compartmenttry {//define new modelIloCplex cplex =new IloCplex();//variablesIloNumVar[][] x = new IloNumVar[n][];for (int i=0; i<n; i++) {x[i] = cplex.numVarArray(m, 0, Double.MAX_VALUE);}IloNumVar y = cplex.numVar(0, Double.MAX_VALUE);//expressions 创建第二三条约束的左边表达式IloLinearNumExpr[] usedWeightCapacity = new IloLinearNumExpr[m];//创建新的变量IloLinearNumExpr[] usedVolumeCapacity = new IloLinearNumExpr[m];for (int j=0; j<m; j++) {usedWeightCapacity[j] = cplex.linearNumExpr();//将变量与模型连接起来usedVolumeCapacity[j] = cplex.linearNumExpr();//将变量与模型连接起来for (int i=0; i<n; i++) {usedWeightCapacity[j].addTerm(1.0, x[i][j]);usedVolumeCapacity[j].addTerm(v[i], x[i][j]);}}//目标函数IloLinearNumExpr objective =cplex.linearNumExpr();for (int i=0; i<n; i++) {for (int j=0; j<m; j++) {objective.addTerm(p[i], x[i][j]);}}//define objectivecplex.addMaximize(objective);//constrainsfor (int i=0; i<n; i++) { //第一条约束cplex.addLe(cplex.sum(x[i]), a[i]);}for (int j=0; j<m; j++) {cplex.addLe(usedWeightCapacity[j],c[j]);cplex.addLe(usedVolumeCapacity[j],V[j]);cplex.addEq(cplex.prod(1/c[j], usedWeightCapacity[j]), y);}//set paramcplex.setParam(IloCplex.IntParam.SimDisplay, 0);//solve modelif(cplex.solve()) {System.out.println("Obj = "+cplex.getObjValue());for (int i=0; i<n; i++) {for (int j=0; j<m; j++) {System.out.print("C"+(i+1)+": x["+(i+1)+"]["+(j+1)+"] = "+cplex.getValue(x[i][j]));}System.out.println();}}else {System.out.println("Model not solved");}cplex.end();}catch (IloException exc) {exc.printStackTrace();}}
}
4.结果展示
Obj = 12151.57894736842
C1: x[1][1] = 0.0C1: x[1][2] = 0.0C1: x[1][3] = 0.0
C2: x[2][1] = 10.0C2: x[2][2] = 0.0C2: x[2][3] = 5.0
C3: x[3][1] = 0.0C3: x[3][2] = 12.947368421052632C3: x[3][3] = 3.0
C4: x[4][1] = 0.0C4: x[4][2] = 3.0526315789473686C4: x[4][3] = 0.0
CPLEXJava 3.简单的线性规划问题相关推荐
- 二元一次函数最值问题_高中数学必考知识点:二元一次不等式(组)及简单的线性规划问题...
对于高考来临,同学和家长非常关心数学如何去复习,高考数学考的知识点非常多,需要考生需要考生运用大量方法技巧进行解决问题,等等这些都增加高考数学的难度. 为了能帮助考生各个击破高考数学知识点,今天肖老师 ...
- 高中数学必考知识点:二元一次不等式(组)及简单的线性规划问题
对于高考来临,同学和家长非常关心数学如何去复习,高考数学考的知识点非常多,需要考生需要考生运用大量方法技巧进行解决问题,等等这些都增加高考数学的难度. 为了能帮助考生各个击破高考数学知识点,今天肖老师 ...
- matlab使用linprog()函数解决简单的线性规划问题
*matlab关于用linprog函数求解简单的线性规划问题 问题描述 这是一道高中都见过的线性规划题目,那接下来我们将用linprog函数来求解目标函数的最优解即最大值 一.Matlab代码如下 & ...
- 图解法求最优解的例题_简单的线性规划求最优解
教你如何做出最佳选择 --简单的线性规划求最优解 在线性约束条件下,求线性目标函数最值问题,称为"线性规划".目标函 数 ) , ( y x f z 取得最值时,变量 y x ...
- 线性规划图解法求最优解_高中数学:简单的线性规划问题
1. 简单线性规划问题的有关概念 先来看一道高考题: 某公司招收男职员x名,女职员y名,x和y须满足约束条件 ,则 的最大值是( ) A. 80 B. 85 C. 90 D. 95 (1)约束条件:变 ...
- 简单理解线性规划的单纯形算法
自己写的,csdn的markdown不怎么会用,所以在知乎写的. 文章-理解线性规划的单纯形算法
- 利用python和matlab求解简单的线性规划问题
[Python和Matlab中的linprog函数进行线性规划的求解] Python和Matlab中的linprog函数都可以用于求解线性规划问题,两者在语法上基本相似. [PS]我也只是编程小白,写 ...
- Excel求简单的线性规划问题
一.问题 &emsp某寻呼公司雇佣了多名话务员工作,他们每天工作3节,每节3小时,每节开始时间为午夜.凌晨3点钟.凌晨6点钟,上午9点.中午12点,下午3点.6点.9点,为方便话务员上下班,管 ...
- 3D演示帮你一眼看懂线性规划问题,这篇可视化教程火了
行早 发自 凹非寺 量子位 | 公众号 QbitAI 你印象中的线性规划是什么样的? 先在二维平面上画图再找最优解? 但毕竟是学理论嘛,大家或多或少都会觉得枯燥晦涩. 那么为何不试试更加直观.好玩的学 ...
最新文章
- 2022-2028年中国灭火器行业市场前瞻与投资战略规划分析报告
- disk boot failure,insert system disk and press enter
- 三种基本排序的实现及其效率对比:冒泡排序、选择排序和插入排序
- GNS3错误7200:无法开始Dynamips于端口7200
- PyQt5 技术篇 - 按钮隐藏并保留位置,pyqt5设置按钮的可见度,设置按钮透明度
- python基础——迭代器与生成器
- 字符串处理 —— 回文串相关 —— Manacher 算法
- 第十四:Pytest进阶之html测试报告
- 开发人员如何高效编程?
- 你们知道我们山东考生是怎么过来的么!山大校长写给你!
- Git 头像修改 原
- 新版bscroll轮播图无缝切换
- 置信区间,置信水平/置信度
- Flutter水波纹效果
- 2021年WordPress博客装修美化(一)
- ikbc c104win键盘失灵以及数字键失灵
- 不同tab页sessionStorage共享情况
- java 当前类相对路径_JAVA文件中获取该项目的相对路径方法
- 保姆级给电脑分盘,和合并两个盘
- openwrt mysql改密码_openwrt的路由器重置root密码