日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Cplex求解线性规划

發(fā)布時(shí)間:2023/12/14 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Cplex求解线性规划 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

前言

本文將介紹使用Cplex進(jìn)行簡單的線性規(guī)劃求解,包括Cplex中兩種常用的建模方式,即按行建模和按列建模。實(shí)際上還有一種按非零元素建模,本文暫時(shí)不涉及。編程環(huán)境是VS2019+Cplex12100,環(huán)境配置可參考博客:環(huán)境配置

按行添加

代碼

#include<ilcplex/ilocplex.h>ILOSTLBEGIN/*數(shù)學(xué)模型Maximize x1+x2s.t. x1+2x2<=10 (1)x1-x2<=3 (2) */ int main() {IloEnv env;//環(huán)境IloModel model(env);//模型IloNumVarArray var(env);//變量IloRangeArray con(env);//約束var.add(IloNumVar(env, 0, IloInfinity, ILOINT));//添加變量(大于0,整型)var.add(IloNumVar(env, 0, IloInfinity, ILOINT));//添加變量(大于0,整型)IloObjective obj = IloMaximize(env, var[0] + var[1]);//目標(biāo)函數(shù)(極大化)con.add(var[0] + 2 * var[1] <= 10);//約束(1)con.add(var[0] - var[1] <= 3);//約束(2)model.add(obj);//將目標(biāo)導(dǎo)入模型model.add(con);//將約束導(dǎo)入模型IloCplex cplex(model);//將模型導(dǎo)入求解器cplex.solve();//求解env.out() << cplex.getObjValue() << endl;//輸出目標(biāo)值for (int i = 0; i < var.getSize(); i++)env.out() << cplex.getValue(var[i]) << "\t";//輸出變量值env.out() << endl;env.end();system("pause"); }

結(jié)果

按列添加

代碼

#include<ilcplex/ilocplex.h>ILOSTLBEGIN/*數(shù)學(xué)模型Maximize x1+x2s.t. x1+2x2<=10 (1)x1-x2<=3 (2) */ int main() {IloEnv env;//環(huán)境IloModel model(env);//模型IloNumVarArray var(env);//變量IloRangeArray con(env);//約束con.add(IloRange(env, -IloInfinity, 10));//約束1邊界條件con.add(IloRange(env, -IloInfinity, 3));//約束3邊界條件IloObjective obj = IloMaximize(env);//目標(biāo)函數(shù)var.add(IloNumVar(obj(1) + con[0](1) + con[1](1), 0, IloInfinity, ILOINT));//添加x1列var.add(IloNumVar(obj(1) + con[0](2) + con[1](-1), 0, IloInfinity, ILOINT));//添加x2列model.add(obj);//將目標(biāo)導(dǎo)入模型model.add(con);//將約束導(dǎo)入模型IloCplex cplex(model);//將模型導(dǎo)入求解器cplex.solve();//求解cplex.exportModel("test.lp");//將模型導(dǎo)出,命名為test.lpenv.out() << cplex.getObjValue() << endl;//輸出目標(biāo)值for (int i = 0; i < var.getSize(); i++)env.out() << cplex.getValue(var[i]) << "\t";//輸出變量值env.out() << endl;env.end();system("pause"); }

結(jié)果

總結(jié)

可以看到按行添加和按列添加得到的結(jié)果是一致的,我們添加的是同一個(gè)模型。

總結(jié)

以上是生活随笔為你收集整理的Cplex求解线性规划的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。