摘要:運籌做為一個運籌人多少知道些仿真優(yōu)化軟件當然高階的運籌實踐一定是以代碼為基礎(chǔ)的無論用什么代碼最終也是在代碼中首先建立所要優(yōu)化問題的抽象模型一般都是一個優(yōu)化問題如果你會的話就可以無障礙閱讀接下來的內(nèi)容如果你不會的話花半天時間學一下再來準備工作
運籌
做為一個運籌人,多少知道些仿真/優(yōu)化軟件,當然,高階的運籌實踐一定是以代碼為基礎(chǔ)的,無論用什么代碼,最終也是在代碼中首先建立所要優(yōu)化問題的抽象模型,一般都是一個優(yōu)化問題:
$$ minimize f_0(x) $$ $$ subject to f_i(x)leq b_i i=1,...,m. $$
如果你會python的話,就可以無障礙閱讀接下來的內(nèi)容,如果你不會python的話,花半天時間學一下再來!
準備工作當然,使用docplex 的首先就要下載docplex,可以直接pip下載.
$ pip install docplex
同時需要去下載一個cplex community edition ILOG CPLEX ,
可以點擊try free edition,新建個賬號后下載一個cplex community edition.
在安裝完成后,在寫一個python項目求解運籌問題之前呢,還要多做一點微小的工作.
對于cplex 的cp(Constraint Programming Modeling)模塊,可以在py文件中添加
from docplex.cp.config import context context.solver.agent = "local" context.solver.local.execfile = "/media/senmu/source/program_exp/ibm/ILOG/CPLEX_Studio_Community128/cpoptimizer/bin/x86-64_linux/cpoptimizer"
將context.solver.local.execfile 修改成你本地的目錄地址.
對于cplex 的mp(Mathematical Programming Modeling)模塊,可以參考docplex mp 設(shè)置
設(shè)置好PYTHONPATH,比如linux在~/.bashrc中添加
export PYTHONPATH="/media/senmu/source/program_exp/ibm/ILOG/CPLEX_Studio_Community128/cplex/python/3.6/x86-64_linux"開始一個例子之cp
首先是一個經(jīng)典的八皇后問題 Eight_queens_puzzle
解決八皇后問題通常要用到遞歸,使用大量的計算資源,將其轉(zhuǎn)為約束問題只需要添加all_diff約束
all_diff reference.
import docplex.cp from docplex.cp.model import CpoModel from sys import stdout from docplex.cp.config import context context.solver.agent = "local" context.solver.local.execfile = "/media/senmu/source/program_exp/ibm/ILOG/CPLEX_Studio_Community128/cpoptimizer/bin/x86-64_linux/cpoptimizer" NB_QUEEN = 8 mdl = CpoModel(name="NQueen") x = mdl.integer_var_list(NB_QUEEN, 0, NB_QUEEN - 1, "X") mdl.add(mdl.all_diff(x)) mdl.add(mdl.all_diff(x[i] + i for i in range(NB_QUEEN))) mdl.add(mdl.all_diff(x[i] - i for i in range(NB_QUEEN))) print("Solving model....") msol = mdl.solve(TimeLimit=10) if msol: stdout.write("Solution:") sol = [msol[v] for v in x] for v in range(NB_QUEEN): stdout.write(" " + str(sol[v])) stdout.write(" ") stdout.write("Solve time: " + str(msol.get_solve_time()) + " ") else: stdout.write("No solution found ")查看更多例子
可以直接訪問github docplex-examples 查看更多例子,也可以使用nbviewer查看. 在nbviewer上查看docplex
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/43874.html
摘要:引入了新的環(huán)境和概要信息,是一種更揭秘與實戰(zhàn)六消息隊列篇掘金本文,講解如何集成,實現(xiàn)消息隊列。博客地址揭秘與實戰(zhàn)二數(shù)據(jù)緩存篇掘金本文,講解如何集成,實現(xiàn)緩存。 Spring Boot 揭秘與實戰(zhàn)(九) 應(yīng)用監(jiān)控篇 - HTTP 健康監(jiān)控 - 掘金Health 信息是從 ApplicationContext 中所有的 HealthIndicator 的 Bean 中收集的, Spring...
摘要:大家好,我是冰河有句話叫做投資啥都不如投資自己的回報率高。馬上就十一國慶假期了,給小伙伴們分享下,從小白程序員到大廠高級技術(shù)專家我看過哪些技術(shù)類書籍。 大家好,我是...
閱讀 1597·2023-04-25 14:12
閱讀 1070·2021-08-27 16:24
閱讀 2533·2019-08-30 15:44
閱讀 2912·2019-08-30 13:16
閱讀 1665·2019-08-29 14:10
閱讀 966·2019-08-29 13:54
閱讀 1296·2019-08-29 13:09
閱讀 1803·2019-08-26 18:37