MindOpt Tuner调参器,提升求解速度、性能(一)

简介: 优化求解器往往拥有很多配置参数,例如启发式方法的开关、割平面方法的开关、预处理的配置以及各种误差容忍度等等。MindOpt Tuner会尝试不同的参数组合,评估每组参数的性能,然后基于这些结果来确定最佳参数。这样可以大大减少手动调整参数的时间和精力,并且可以帮助提升求解性能。
+关注继续查看

MindOpt Studio简介


MindOpt 调参器MindOpt Tuner,简称 MTuner)是一款超参自动优化工具。


它可以帮助运筹优化工程师在使用求解器时自动搜索最佳参数组合。优化求解器往往拥有很多配置参数,例如启发式方法的开关、割平面方法的开关、预处理的配置以及各种误差容忍度等等。MindOpt Tuner会尝试不同的参数组合,评估每组参数的性能,然后基于这些结果来确定最佳参数。这样可以大大减少手动调整参数的时间和精力,并且可以帮助提升求解性能。


不同于常见的贪心算法、遗传算法、粒子群算法等调参算法,MindOpt Tuner使用了团队新研发的快速算法,只需要相对少的评估就能给出性能很好的参数。


image.png


输入:


  • 业务场景中的优化问题数据,一个或者多个均可以
  • 待调的求解器
  • (可选)这个求解器待调的参数。若没有指定,则会自动用MindOpt Tuner内部内置的能力。


输出:


  • 一套最优参数。采用此参数运行该求解器,在您的业务场景上会得到更优的效果。
  • 一系列结果文件和日志,给出调参效果分析。比如会列出对效果影响更大的几个参数。

用法


MindOpt Tuner 当前支持以下几种用法:


  1. web页面作业提交:可直接在浏览器访问“作业提交”来提交和管理任务、获取结果,在其他渠道提交的任务也可在此任务管理查看到。
  2. Notebook容器:类似MindOpt求解器和建模语言,可以访问MindOpt建模求解平台的Notebook容器中使用Mtuner。其内核同单机版,但无需安装步骤直接浏览器中使用。采用Notebook项目方便记录笔记、查询接口和参数说明、混合编程、公开分享项目等。
  3. 单机版:支持在MacOS、Linux、Windows平台环境下来创建并触发调参任务。适合需要定制化集成或私有化部署的客户,安装包获取>>


本篇系列将重点讲解下Notebook容器中如何使用命令行(本篇)PythonAPI,并且给出web页面任务提交用法示例截图。

注:下面的文件包含code源码,您可复制本项目,然后在浏览项目内容页点击右上角的NoteBook按钮,进入环境后查看、运行、修改调试代码。


Notebook容器中使用

下文将通过以下顺序讲解:


  1. 提交任务:根据一个问题调优
  2. 学习查询指令
  3. 查询结果
  4. 使用结果
  5. 提交一组数据用于调参(本地和OSS)
  6. 其他常用指令


1. 提交任务:根据一个问题调优


这里假设我们业务场景搜集到两个数据,nl_train_1.nl用来调参,nl_test_1.nl用来验证调参结果可用。


首先我们运行如下指令提交一个调参任务:

! mindopt-tuner create-task --solver cbc --problem './model/nl_train_1.nl' --max-tuning-time 600
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
Problem file "nl_train_1.nl" uploaded successfully.
Task #438394355699425280 created succesfully.

这里需注意:为了节省数据存储空间,同用户下的MD5值相同的数据文件,服务端仅会存一次。因此重复提交后会提醒文件已存在。此时调参任务继续执行,线上存的数据不更新。


这里小编已经提交了测试过,新提交taskID会和后文描述不一样。小编提交的taskID是438394355699425280。后文将基于此ID来讲解获取结果,用户请注意更换自己的ID测试。


这段任务提交的指令可以解析为:

指令段

说明

!

使用cell magic,让可以在Python内核的Notebook的code cell里面运行命令行指令。

mindopt-tuner

是MindOpt Tuner调参器的可执行程序的名称

create-task

创建任务。还有其他指令可以通过mindopt-tuner -h

去查询

--solver cbc

选择求解器为cbc。还有其他参数可以通过mindopt-tuner create-task -h

去查询

--problem './model/nl_train_1.nl'

使用'./model/nl_train_1.nl'数据用于调参。

--max-tuning-time 600

设置调参任务的时间额度为600秒,到时间后会停止调优。


2. 学习查询指令


在上一节中我们提到了

指令段

说明

create-task

创建任务。还有其他指令可以通过mindopt-tuner -h

去查询

--solver cbc

选择求解器为cbc。还有其他参数可以通过mindopt-tuner create-task -h

去查询


这里,我们可以试运行以下指令,查询接口的用法:

!mindopt-tuner -h
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
MindOpt Tuner v0.9.0 (Build: 20230404)

Usage: mindopt-tuner [-h] [-v] <action> [<action options>]

Arguments:
  -h, --help         Show help information.
  -v, --version      Show the software version.

Actions:
  create-task        Create a new tuning task, and then start it.
  terminate-task     Terminate one or more existing tuning tasks.
  delete-task        Delete one or more tuning tasks. If a task to delete is running, it will be terminated and deleted.
  check-cloud-usage  Check cloud resource usage.
  task-status        Show the status of one or more tuning tasks.
  list-tasks         List tuning tasks.
  fetch-result       Fetch tuning result.
  upload-file        Upload a file to the cloud.

'mindopt-tuner <action> -h' Show the help information of an action.

这里我们得到了操作词和功能说明,然后我们还可以根据`mindopt-tuner 操作词 -h`来查询对应操作词的使用说明。比如如何获取结果:

!mindopt-tuner task-status -h
!mindopt-tuner fetch-result -h
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
MindOpt Tuner v0.9.0 (Build: 20230404)

Usage: mindopt-tuner task-status [-h] --task-id <id> [<id> ...]

Show the status of one or more tuning tasks.

Arguments:
  -h, --help                 Show help information.
  --task-id <id> [<id> ...]  Specify the id(s) of the tuning task(s), separated by space.
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
MindOpt Tuner v0.9.0 (Build: 20230404)

Usage: mindopt-tuner fetch-result [-h] --task-id <id> [--file <file>] [--show-url]

Fetch tuning result.

Arguments:
  -h, --help      Show help information.
  --task-id <id>  Specify the id of the tuning task
  --file <file>   Path to the file to fetch
  --show-url      Show the file download URL

3. 查询结果

根据上面的指令,我们可以通过以下方式来查询我们刚刚提交的任务的结果。用户测试时候,请注意更换上面自己任务的ID号。

!mindopt-tuner task-status --task-id 438394355699425280

print("-------分割线--------")
! mindopt-tuner fetch-result --task-id 438394355699425280
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
+--------------------+---------+--------------+----------+---------------------+-----------------------------------------+
|                 id |   cores |   memory(GB) | status   | creation time       | file outputs                            |
+====================+=========+==============+==========+=====================+=========================================+
| 438394355699425280 |       2 |            2 | finished | 2023-04-24T17:42:39 | ['result/FINISHED',                     |
|                    |         |              |          |                     | 'result/log_mtuner.log',                |
|                    |         |              |          |                     | 'result/tuning_config_mtuner.txt',      |
|                    |         |              |          |                     | 'result/performance.txt',               |
|                    |         |              |          |                     | 'result/summary_mtuner.csv',            |
|                    |         |              |          |                     | 'result/evaluation_history_mtuner.csv', |
|                    |         |              |          |                     | 'result/best_parameters_mtuner.prm']    |
+--------------------+---------+--------------+----------+---------------------+-----------------------------------------+
-------分割线--------
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k

****************************************************************************************************
MindOpt Tuner 0.9.0 started at 2023-04-24 17:43:18
- Tuning for COIN-OR Cbc 2.10.5 (Build Date: Nov 24 2021).
- Tuning on "nl_train_1.nl".
- Initial "max_eval_time": 300s.
- Tuning-objective: wallclock_time.
- Tuning task will be terminated after evaluating 200 para-combos or reaching 600s.
- Evaluating default parameters...
- "wallclock_time" with default parameters: 3.21
- Remained tuning time: 578.96s.

Tuning starts at 2023-04-24 17:43:39.
   ================================================================================
   <#Eval>       <wallclock_time>   <Current best>   <Elapsed time>   <Eval status>
   -------       ----------------   --------------   --------------   -------------
         1                 2.5900           2.5900            24.00         OPTIMAL
         2                 0.6900           0.6900            44.87         OPTIMAL
         3                 2.0000           0.6900            65.97          CUTOFF
         4                 0.1000           0.1000            87.02         OPTIMAL
         5                 2.0000           0.1000           104.90          CUTOFF
         6                 2.0000           0.1000           122.95          CUTOFF
         7                 2.0000           0.1000           143.91          CUTOFF
         8                 2.0000           0.1000           167.95          CUTOFF
         9                 2.0000           0.1000           188.95          CUTOFF
        10                 1.7100           0.1000           209.93         OPTIMAL
        11                 0.1000           0.1000           230.89         OPTIMAL
        12                 0.1000           0.1000           248.87         OPTIMAL
        13                 0.1000           0.1000           266.96         OPTIMAL
        14                 0.1000           0.1000           284.86         OPTIMAL
        15                 0.1100           0.1000           302.92         OPTIMAL
        16                 0.1000           0.1000           320.90         OPTIMAL
        17                 0.1000           0.1000           338.91         OPTIMAL
        18                 0.1000           0.1000           356.92         OPTIMAL
        19                 0.1000           0.1000           377.93         OPTIMAL
        20                 0.1000           0.1000           398.93         OPTIMAL
        21                 0.1000           0.1000           416.91         OPTIMAL
        22                 0.1000           0.1000           434.89         OPTIMAL
        23                 0.2100           0.1000           455.89         OPTIMAL
        24                 0.1000           0.1000           476.90         OPTIMAL
        25                 0.1000           0.1000           494.90         OPTIMAL
        26                 0.1000           0.1000           512.90         OPTIMAL
        27                 0.0900           0.0900           530.89         OPTIMAL
        28                 0.1000           0.0900           548.91         OPTIMAL
        29                 0.1000           0.0900           566.90         OPTIMAL
        30                 2.0000           0.0900           584.89          CUTOFF
Tuning finished at 2023-04-24 17:53:24.

   ===========================================================================
   Best wallclock_time: 0.09                               Status: finished
   ---------------------------------------------------------------------------
   <Parameters>                                   <Values>        <Importance>
   ------------                                   --------        ------------
   cuts                                               root          0.0277 *
   preprocess                                    aggregate          0.9309 ***
   heuristics                                          off          0.0007
   strongBranching                                       2          0.0101
   trustPseudoCosts                                      5          0.0306 **

   NOTE: The 'Importance' scores indicate the relative importance of each parameter.
   The higher the score (more '*' attached), the more effective the parameter is.

Tuning finished, the best wallclock_time is 0.09 [** 35.67x improvement **]

The following files have been generated:

   1. result/best_parameters_mtuner.prm                  // Best parameters in '.prm' format.      
   2. result/log_mtuner.log                              // Logs of the tuning process.
   3. result/evaluation_history_mtuner.csv               // Evaluation history of the tuning process. 
   4. result/summary_mtuner.csv                          // Summary of the tuning results. 

****************************************************************************************************

这个日志列出了比较详细的信息,其中:


  • - "wallclock_time" with default parameters: 3.21 代表调参前的求解时间是 3.21s
  • 调参结束后的 代表的是优化调参后的建议取值和重要性评估。
  • Tuning finished, the best wallclock_time is 0.09 [** 35.67x improvement **] 这句话代表,调参后的最快速度是0.09秒求解(wallclock_time),比原始参数提速 35.67 = 3.21/0.09 倍。

我们还可以运行如下指令,去获取上面表格`file outputs`里面的文件信息,比如:

print("----调参后参数----")
! mindopt-tuner fetch-result --task-id 438394355699425280 --file result/best_parameters_mtuner.prm
print("----调参表现----")
! mindopt-tuner fetch-result --task-id 438394355699425280 --file result/performance.txt --show-url
----调参后参数----
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
cuts    "root"
preprocess  "aggregate"
heuristics  "off"
strongBranching 2
trustPseudoCosts    5

----调参表现----
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
Tuning finished, the best wallclock_time is 0.09 [** 35.67x improvement **]

Download url of the file:
https://opt-mdp-prod.oss-cn-beijing.aliyuncs.com/distrun_cloud/prod/result/438394355955273728/result/performance.txt?Expires=1682344463&OSSAccessKeyId=LTAI5tNoeFXtmgwggcXkt2wP&Signature=iGTXfaojbwxzObNebCpDceQzzEU%3D

4.使用结果


这里我们可以验证下效果。刚求解的是.nl文件,可以参考MindOpt APL建模语言的设置求解器参数的指引来使用和设置参数。


如以下跑的代码:


  1. 用cbc默认参数,原始参数求解完后,(Wallclock seconds):2.07 秒。
  2. 用MindOpt Tuner调参后的参数,(Wallclock seconds): 0.09 秒。


2.07 / 0.09 ≈ 23 倍


这里需要注意的是不同机器运行的耗时不一样,因此计算的提升倍数有差异,最优参数推荐值也可能不一样。上面调参器调优的结果是在云平台的远程服务器中运行,与本容器的环境并不一致,从本容器的运行结果大致也能看到速度有明显提升。


下面的指令输出的日志太长,为了优化阅读体验,我们删除了运行记录,您可以将下面的cell属性从Raw更改为Code后运行:

print("====================采用原始参数====================")
!cbc model/nl_train_1.nl -AMPL wantsol=1 log=1
print("====================采用MindOpt Tuner调优后的参数====================")
!cbc model/nl_train_1.nl -AMPL   cuts=root preprocess=aggregate heuristics=off strongBranching=2 trustPseudoCosts=5 wantsol=1 log=1

这里我们还可以测试以下这个参数的迁移性,nl_test_1.nl文件是和nl_train_1.nl相似的一个问题,我们可以看看用训练出来的参数求解表现如何。

从运行结果看,花费的时间与训练数据接近,调优后的参数能提速近20倍。


下面的指令输出的日志太长,为了优化阅读体验,我们删除了运行记录,您可以将下面的cell属性从Raw更改为Code后运行:

print("====================test-采用原始参数====================")
!cbc model/nl_test_1.nl -AMPL wantsol=1 log=1
print("====================test-采用MindOpt Tuner调优后的参数====================")
!cbc model/nl_test_1.nl -AMPL   cuts=root preprocess=aggregate heuristics=off strongBranching=2 trustPseudoCosts=5 wantsol=1 log=1

5. 提交一组数据用于调参(本地和OSS)


除了对于单个文件调参,还可以根据一组数据进行调参。举例:我们将数据存在src/mps_train文件夹(这些数据来源于MindOpt求解器单机版的安装包的examples/data文件夹,),其访问路径(相对本运行环境)存储为一个txt文件mps_train_local.txt


同时不仅仅支持文件存在本地容器,也支持存在云端oss。这个方式适合大文件(不适合浏览器上传或者这个容器放不下),我们可以用阿里云的对象存储OSS。这里我们举例有几个数据,存在了云端OSS(公开可访问),然后将数据的地址存入mps_train_oss.txt


然后我们运行如下提交指令进行测试提交:

print("----本地的文件提交-----")

!mindopt-tuner create-task --solver cbc --problem ./model/mps_train_local.txt --max-tuning-time 3600
----本地的文件提交-----
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
Problem file "enlight7.nl" uploaded successfully.
Problem file "enlight8.nl" uploaded successfully.
Problem file "enlight10.nl" uploaded successfully.
Task #438398613857509376 created succesfully.


print("----OSS的文件提交-----")
!mindopt-tuner create-task --solver cbc --problem ./model/mps_train_oss.txt --max-tuning-time 3600
----OSS的文件提交-----
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
Task #438398626012602368 created succesfully.

小编运行的时候得到taskID:438398613857509376New 和 438398626012602368。
运行结束后,我们可以获得结果。从结果可以看出,可以得到提升。
Tips :对于求解器的调参,我们建议只在同一场景的问题上调优。如果问题结构差异很大,调参效果并不一定好


#print("-------查看状态和results文件链接--------")
#!mindopt-tuner task-status --task-id 438398613857509376 438398626012602368

print("-------本地的提交结果--------")
! mindopt-tuner fetch-result --task-id 438398613857509376 --file result/performance.txt
print("-------OSS的提交结果,一样的--------")
! mindopt-tuner fetch-result --task-id 438398626012602368 --file result/performance.txt
-------本地的提交结果--------
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
Tuning finished, the best avg_wallclock_time is 3.87333 [** 33.01x improvement **]

-------OSS的提交结果,一样的--------
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
Tuning finished, the best avg_wallclock_time is 3.9 [** 32.71x improvement **]

6.其他常用指令


如果任务等待了很久,忘记了taskID,您还可以运行下面的指令查询自己账号下面的所有任务ID。任务排队也可以查看当前环境和账号支持的额度。更多的指令可以参考上文的 2. 学习查询指令mindopt-tuner [操作词] -h来表示。

print("-----当前份额:-----")
! mindopt-tuner check-cloud-usage --resource tasks
! mindopt-tuner check-cloud-usage --resource machines

print("-----所有的任务:-----")
! mindopt-tuner list-tasks --page-number 1  --tasks-per-page 2
-----当前份额:-----
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
Tuning tasks:
+-------------------------+----------------+----------------+
| Name                    | Usage          | Limit          |
+=========================+================+================+
| Number of running tasks | 0 concurrently | 3 concurrently |
+-------------------------+----------------+----------------+
| Number of saved tasks   | 26             | 1000           |
+-------------------------+----------------+----------------+
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
Computing resources:
+-----------------+----------------+----------------------+
| Name            | Usage          | Limit                |
+=================+================+======================+
| Number of evals | 0 concurrently | 200 concurrently     |
+-----------------+----------------+----------------------+
| CPU(core-hour)  | 3.79           | 160/day, max 16/eval |
+-----------------+----------------+----------------------+
| Memory(GB-hour) | 7.58           | 640/day, max 32/eval |
+-----------------+----------------+----------------------+
*Each eval is counted for minimally 1 core-hour and 1 GB-hour.
-----所有的任务:-----
OpenBLAS WARNING - could not determine the L2 cache size on this system, assuming 256k
+--------------------+---------+--------------+----------+---------------------+-----------------------------------------+
|                 id |   cores |   memory(GB) | status   | creation time       | file outputs                            |
+====================+=========+==============+==========+=====================+=========================================+
| 438413495201964032 |       2 |            2 | finished | 2023-04-24T18:58:42 | ['result/FINISHED',                     |
|                    |         |              |          |                     | 'result/log_mtuner.log',                |
|                    |         |              |          |                     | 'result/tuning_config_mtuner.txt',      |
|                    |         |              |          |                     | 'result/performance.txt',               |
|                    |         |              |          |                     | 'result/summary_mtuner.csv',            |
|                    |         |              |          |                     | 'result/evaluation_history_mtuner.csv', |
|                    |         |              |          |                     | 'result/best_parameters_mtuner.prm']    |
+--------------------+---------+--------------+----------+---------------------+-----------------------------------------+
| 438398626012602368 |       2 |            2 | finished | 2023-04-24T17:59:37 | ['result/FINISHED',                     |
|                    |         |              |          |                     | 'result/log_mtuner.log',                |
|                    |         |              |          |                     | 'result/tuning_config_mtuner.txt',      |
|                    |         |              |          |                     | 'result/summary_mtuner.csv',            |
|                    |         |              |          |                     | 'result/performance.txt',               |
|                    |         |              |          |                     | 'result/evaluation_history_mtuner.csv', |
|                    |         |              |          |                     | 'result/best_parameters_mtuner.prm']    |
+--------------------+---------+--------------+----------+---------------------+-----------------------------------------+
Starting page=1 / Page size=2 / Total page=13/ Total task=26

MindOpt-2023年度有奖问卷调研

MindOpt邀请您参与有奖问卷!


问卷填写地址:https://yida.alibaba-inc.com/o/MindOpt_2023
八个问题,预计耗时十分钟lQLPJxS51yP1RdrNAeTNAmywHCRY8xMrubYEcFIUfAAwAA_620_484.png
联系小编个人钉账号领取奖品:hw2-wwffqg05p
电子邮箱联系:solver.damo@list.alibaba-inc.com
相关文章
|
1月前
|
定位技术 调度 Python
多目标遗传算法NSGAII求解环境经济调度(Python代码实现)
多目标遗传算法NSGAII求解环境经济调度(Python代码实现)
|
2月前
|
机器学习/深度学习 并行计算 算法
基于遗传算法和非线性规划的函数寻优算法
以下内容大部分来源于《MATLAB智能算法30个案例分析》,仅为学习交流所用。
|
2月前
|
存储
双层优化入门(2)—基于yalmip的双层优化求解(附matlab代码)
​上一篇博客介绍了双层优化的基本原理和使用KKT条件求解双层优化的方法,这篇博客将介绍使用yalmip的双层优化问题的求解方法。 1.KKT函数 通过调用yalmip工具箱中的KKT函数,可以直接求出优化问题的KKT条件,省去自己手动写的步骤。 2.solvebilevel函数 solvebilevel是yalmip工具箱内置的求解双层优化问题的函数。也就是通过这个函数,不需要咱手动写KKT条件,也不需要使用KKT函数,直接把上、下层优化的目标函数、约束条件往里面一放,就能求出结果。 ​
|
2月前
鲁棒优化入门(二)——基于matlab+yalmip求解鲁棒优化问题
鲁棒优化的含义就是在最恶劣的情况下(不确定变量的取值使目标函数最大),求出满足约束条件,并且能使目标函数最优的决策变量。 yalmip工具箱可以用来求解鲁棒优化问题,但还是有一定局限性的,并不能处理任意形式的不确定集下的鲁棒优化问题,一般来说,当鲁棒优化问题的不确定集合为箱型不确定集、椭球不确定集以及多面体不确定集时,都可以用yalmip工具箱求解(具体细节可参考官方文档)。本文介绍了利用yalmip求鲁棒优化问题的一般方法。......
|
3月前
|
机器学习/深度学习 传感器 算法
【优化配煤】基于遗传算法实现配煤问题优化求解附matlab代码
【优化配煤】基于遗传算法实现配煤问题优化求解附matlab代码
|
3月前
|
达摩院 API 决策智能
MindOpt Tuner调参器,提升求解速度、性能(二)
MindOpt Tuner是达摩院决策智能实验室基于mindopt优化求解器研发的调参器,超参自动优化工具,它可以帮助运筹优化工程师在使用求解器时自动搜索最佳参数组合,尝试不同的参数组合,评估每组参数的性能,然后基于这些结果来确定最佳参数。这样可以大大减少手动调整参数的时间和精力,并且可以帮助提升求解性能。
|
6月前
|
机器学习/深度学习 算法 API
鲁棒线性回归问题,使用MindOpt也可优化
本篇我们讲述的是Linear Regression线性回归中的鲁棒线性回归。鲁棒回归又称为稳健回归,是统计学稳健估计的方法之一,主要思路是对离群点十分敏感的最小二乘回归中的的函数进行修改。
鲁棒线性回归问题,使用MindOpt也可优化
|
7月前
|
达摩院 决策智能
MindOpt优化求解器-月刊 (2023年2月)
简介: 记录MindOpt重要信息,如新功能、用户故事活动、行业技术突破等,每月会刊出一期。
175 0
MindOpt优化求解器-月刊 (2023年2月)
|
9月前
|
达摩院 算法 安全
二次规划问题用MindOpt C++怎么进行建模优化
MindOpt是达摩院决策智能实验室研究的一款优化求解器,目前在优化求解线性规划问题这一功能上取得不错的成绩,希望大家能够帮我们多多打磨其他功能(混合整数线性规划、二次规划、半定规划目前都在公测),让我们的MindOpt在优化求解器这板块成为国产之光。
二次规划问题用MindOpt C++怎么进行建模优化
|
9月前
|
达摩院 算法 Java
MindOpt也能使用C++ 来建模求解线性规划问题?
MindOpt是达摩院决策智能实验室研究的一款优化求解器,能帮助做方案设计、生产方案优化、资源合理分配、辅助决策等。可以支持命令行、c、c++、java和python调用,目前求解算法实现了线性规划、混合整数线性规划、二次规划。
MindOpt也能使用C++ 来建模求解线性规划问题?
推荐文章
更多