Simulation¶
評価プログラムへの引数¶
[Executable]に設定した評価プログラムがバッチファイル(拡張子 bat)または PowerShellスクリプト(拡張子 ps1)の場合は、プログラムへの引数に設計変数が設定されます。
例えば、設計変数 d1, d2 は以下の形式で引数に設定されます。
executable.bat /d1 1.1 /d2 2.2
executable.ps1 -d1 1.1 -d2 2.2
Note
プログラム引数を利用すると、[Input File]を介さずに設計変数をプログラムへ渡せます。
サンプルコード¶
評価計算で複数のプログラムを実行する必要がある場合などでは、バッチファイルや PowerShell スクリプトを利用すると便利です。以下のサンプルコードを参考にしてください。
引数で評価プログラムを実行する(PowerShell スクリプト)¶
PowerShell スクリプトで引数を取得し、評価プログラムに引数を設定して実行します。
- 評価プログラムへの引数を PowerShell スクリプトの引数で取得します。
- 評価プログラムのパスを作成します。
- 評価プログラムの出力ファイルがある場合は、削除します。
- 評価プログラムに引数を設定してい実行します。
- 出力ファイルの存在を確認します。
Param(
[Parameter(Mandatory = $true)][String] $dir,
[Parameter(Mandatory = $true)][Int] $num_obj,
[Parameter(Mandatory = $true)][Int] $num_des
)
$cur_dir = Get-Location
$exe_path = Join-Path -Path $cur_dir -ChildPath "dtlz2.exe"
$obj_eval = Join-Path -Path $cur_dir -ChildPath "pop_objs_eval.txt"
if (Test-Path -Path $obj_eval) {
Remove-Item -Path $obj_eval -Force
}
& $exe_path $dir $num_obj $num_des
if (-Not (Test-Path -Path $obj_eval)) {
exit 1
}
exit 0
PowerShell の環境設定¶
Windows 環境では、PowerShell はシステムに標準搭載されていますが、Linux や macOS でも利用できる新しい PowerShell は個別にインストールできます。
複数バージョンの PowerShell がインストールされている場合は、使用するプログラムを[Edit]>[Preferences]の[PowerShell path]に指定します。
PowerShell 実行ポリシーの確認と設定¶
[Executable]で PowerShell スクリプトを使用する場合は、PowerShell スクリプトが実行できるように Windows で実行ポリシーを設定します。
以下のコマンドで現在の設定を確認します。
PowerShell スクリプトを実行するためには、いづれかのスコープに RemoteSigned 以上のポリシーが設定さてれている必要があります。
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser Undefined
LocalMachine Undefined
ローカルPCで手元にあるスクリプトを実行するには、以下のコマンドで実行ポリシーを設定します。
- ポリシーは RemoteSigned を設定し、ローカルで作成したスクリプト、署名済み外部スクリプトのみを許可します。
- スコープは CurrentUser を指定し、自分だけとします。
Set-ExecutionPolicy RemoteSigned -Scope CurrentUser -Force
Get-ExecutionPolicy -List
Scope ExecutionPolicy
----- ---------------
MachinePolicy Undefined
UserPolicy Undefined
Process Undefined
CurrentUser RemoteSigned
LocalMachine Unrestricted
セキュリティのため、PowerShell 実行ポリシーの緩和は必要最小限に留めることをお勧めします。