BridJ: ошибка LoadLibrary при загрузке Clp.dll: сбой процедуры инициализации библиотеки динамических ссылок (DLL)

Я использую clp-java для линейной оптимизации, но когда я пытаюсь запустить код, я получаю следующую ошибку: Процесс продолжает работать, а следующее продолжает печататься неоднократно.

BridJ: ошибка LoadLibrary при загрузке C:\Users\Abhijay\AppData\Local\Temp\CLPExtractedLib1623275631902676\Clp.dll: сбой процедуры инициализации библиотеки динамической компоновки (DLL).

Я добавил следующие зависимости в pom.xml.

<dependency>
    <groupId>com.quantego</groupId>
    <artifactId>clp-java</artifactId>
    <version>1.16.10</version>
</dependency>

<dependency>
    <groupId>com.nativelibs4java</groupId>
    <artifactId>bridj</artifactId>
    <version>0.7.0</version>
</dependency>

Вот мой код:

import com.quantego.clp.CLP;
import com.quantego.clp.CLP.ALGORITHM;
import com.quantego.clp.CLPVariable;

public class ClpDemo {

    public static void main(String[] args) {
        CLP model = new CLP().algorithm(ALGORITHM.AUTO).maximization().presolve(false);
        CLPVariable x1 = model.addVariable().lb(0);
        CLPVariable x2 = model.addVariable().lb(0);
        model.createExpression().add(10, x1).add(20, x2).leq(120);
        model.createExpression().add(8, x1).add(8, x2).leq(80);
        model.createExpression().add(12, x1).add(16, x2).asObjective();
        model.solve();
        double x1Value = model.getSolution(x1);
        double x2Value = model.getSolution(x2);
        System.out.println("x1 :" + x1Value + " x2 :" + x2Value);
      }
} 

2 ответа

Последняя сборка из ветки dev решает проблему. Скоро его отправят в мавен.

Я реализовал свою собственную версию линейного программирования, также поддерживает смешанное целочисленное линейное программирование. Если вы заинтересованы в использовании инструмента, вот ссылка.

Проблема:

max: x+y
-2x + 2y >= 1
-8x + 10y <= 13
x,y : real

Пример линейного программирования.

    //Function
    double[] function = new double[] {1,1};

    //Constraints
    List<Constraint> constraints = new ArrayList<>();
    constraints.add(new Constraint(new double[] {-2,2}, Constraint.Symbol.GREATER_THAN, 1));
    constraints.add(new Constraint(new double[] {-8,10}, Constraint.Symbol.LESS_THAN, 13));

    LinearProgramming lp = new LinearProgramming(LinearProgramming.Objective.Maximize);

    int status = lp.Solve(function, constraints);
    switch(status){
        case LinearProgramming.INFEASIBLE:
            System.out.println("Infeasible solution");
        break;
        case LinearProgramming.OPTIMAL:
            System.out.println("Optimal solution found");
        case LinearProgramming.UNBOUNDED:
            System.out.println("Unbounded solution");
    }

    double[] coef = lp.getCoefficients();
    double solution = lp.getSolution();

Проблема:

max: x+y
-2x + 2y >= 1
-8x + 10y <= 13
x: real
y: integer

Пример смешанного целочисленного линейного программирования.

    //Function
    double[] function = new double[] {1,1};

    //Constraints
    List<Constraint> constraints = new ArrayList<>();
    constraints.add(new Constraint(new double[] {-2,2}, Constraint.Symbol.GREATER_THAN, 1));
    constraints.add(new Constraint(new double[] {-8,10}, Constraint.Symbol.LESS_THAN, 13));

    //Define integer variables
    //1: integer
    //0: double
    int[] types = new int[] {0,1};

    MixedIntegerLinearProgramming lp = new MixedIntegerLinearProgramming(MixedIntegerLinearProgramming.Objective.Maximize);
    lp.setType(types);

    int status = lp.Solve(function, constraints);
    switch(status){
        case LinearProgramming.INFEASIBLE:
            System.out.println("Infeasible solution");
        break;
        case LinearProgramming.OPTIMAL:
            System.out.println("Optimal solution found");
        case LinearProgramming.UNBOUNDED:
            System.out.println("Unbounded solution");
    }

    double[] coef = lp.getCoefficients();
    double solution = lp.getSolution();
Другие вопросы по тегам