

pythonでgurobiからpyomoへ二次制約付き問題であるため、変更したいのですがやり方がわからなくて困っています。

[code]

    from gurobipy import *
    import pandas as pd
    import numpy as np
    import csv
    from pyomo.environ import SolverFactory
    opt = SolverFactory("optimizer", solver_io="python")
    opt.solve(model, tee=True)
    opt.options['NonConvex'] = 2
    
[/code]

そのあとに、excelからpandasを用いてデータ挿入を行いました。

[code]

    model=Model("optimizer")
    model.params.NonConvex=2
    
[/code]

と打ち、gurobiのプログラムを実行しました。  
エラーメッセージが

[code]

    untimeError: Attempting to use an unavailable solver.
    
    The SolverFactory was unable to create the solver "optimizer"
    and returned an UnknownSolver object.  This error is raised at the point
    where the UnknownSolver object was used as if it were valid (by calling
    method "solve").
    
    The original solver was created with the following parameters:
        executable: optimizer
        solver_io: python
        type: optimizer
        _args: ()
        options: {}
    
[/code]

<https://pyomo.readthedocs.io/en/stable/working_models.html?highlight=options#sending-
options-to-the-solver>  
このサイトを参考に、色々と変更しようと思ったのですが、わからないことが多いです。  
例えば、

[code]

    results = optimizer.solve(instance, options="threads=4", tee=True)
    
[/code]

定式化の定数と変数両方とも"optimizer.solveに変更する必要があるのですか?  
変更するのは辞書表記だけですか?  
int型やlistは変更する必要ないですか？  
また、すべて()の中はinstanceと変更すればいいのですか？

[code]

    s={(1:2,2:3,3:5,4:5)}
    d={(1,1):1(1,2):2(1:3):3(1:4):4
      (1,1):3(1,2):4(1:3):5(1:4):6}
    
[/code]

上のs,dだとどう変更すればいいですか？  
"options="=dict名＝dict数"  
あと付け加えるべきことはありますか？  
例えば、制約式や目的関数などあれば教えてください。  
初心者なので出来るだけ詳しく教えていただけると助かります。


CC BY-SA 4.0
2021-09-26T18:32:40.747
82698
2022-03-19T11:59:47.697
48372
question
python python3 pandas アルゴリズム データ構造
gurobi からpyomoへの変換


ソースコードにpyomoで対応可能なgurobiのオプション一覧が記載してありますが、「"NonConvex"」はそこに記載されていないので、設定できないと思われます。

<https://github.com/Pyomo/pyomo/blob/2e57707a4bd0aab98df7cb9b0c78e984013fac62/pyomo/solvers/plugins/solvers/gurobi_direct.py>

[code]

        # Options accepted by gurobi (case insensitive):
        # ['Cutoff', 'IterationLimit', 'NodeLimit', 'SolutionLimit', 'TimeLimit',
        #  'FeasibilityTol', 'IntFeasTol', 'MarkowitzTol', 'MIPGap', 'MIPGapAbs',
        #  'OptimalityTol', 'PSDTol', 'Method', 'PerturbValue', 'ObjScale', 'ScaleFlag',
        #  'SimplexPricing', 'Quad', 'NormAdjust', 'BarIterLimit', 'BarConvTol',
        #  'BarCorrectors', 'BarOrder', 'Crossover', 'CrossoverBasis', 'BranchDir',
        #  'Heuristics', 'MinRelNodes', 'MIPFocus', 'NodefileStart', 'NodefileDir',
        #  'NodeMethod', 'PumpPasses', 'RINS', 'SolutionNumber', 'SubMIPNodes', 'Symmetry',
        #  'VarBranch', 'Cuts', 'CutPasses', 'CliqueCuts', 'CoverCuts', 'CutAggPasses',
        #  'FlowCoverCuts', 'FlowPathCuts', 'GomoryPasses', 'GUBCoverCuts', 'ImpliedCuts',
        #  'MIPSepCuts', 'MIRCuts', 'NetworkCuts', 'SubMIPCuts', 'ZeroHalfCuts', 'ModKCuts',
        #  'Aggregate', 'AggFill', 'PreDual', 'DisplayInterval', 'IISMethod', 'InfUnbdInfo',
        #  'LogFile', 'PreCrush', 'PreDepRow', 'PreMIQPMethod', 'PrePasses', 'Presolve',
        #  'ResultFile', 'ImproveStartTime', 'ImproveStartGap', 'Threads', 'Dummy', 'OutputFlag']
    
[/code]


CC BY-SA 4.0
2022-03-19T11:59:47.697
87916
2022-03-19T11:59:47.697
51888
82698
answer